Voxel Plugin 2.0 の Inside Unreal 視聴ログ

www.youtube.com

2 系のリリースも近いということで、キャッチアップしたくて視聴しました。

動画にはトランスクリプトもついているので、それをざっと日本語訳して読むと動画の内容も頭に入りやすい気がします。

コード

GitHub - dany1468/VoxelPlugin20InsideUnreal

動画のコードがそのまま公開されている訳ではないので、動画を見ながら似たようなものを作ったものを置いておきました。

Content/InsideUnreal に今回のコードが含まれています。LevelPrototyping の cylinder も利用しているので残っています。

配置する Foliage のための木のために永続無料コンテンツを利用しています。(こういう時に永続無料が提供されているとリポジトリに含めなくていいので助かります、、Github に上げるのに ThirdPerson Template でも無料枠だと辛い)

以降ではポイントになりそうな部分だけざっと拾っていきます。動画は全長は長いんですが、内容の理解だけであれば 30:00~1:30:00 ぐらいまでを早回しでみればさっと見れます。(トランスクリプトも読みながら)

Voxel Plugin 2.0 のドキュメント

Home - Voxel Plugin 2.0

この Inside Unreal に合わせてなのか、急激に変化したので今後もリリースに向けてどんどん更新されていきそうです。なので、私がリンクを張っていてもあくまで記述時点では参考情報が書いてあった程度に思ってください 🙏

現状での導入

Voxel Plugin 2.0 は現状マーケットプレイスから入手できません。マーケットプレイスで公開されているのは 1.2 系でかつ、これは UE5 系で多少不安定です。(実際、私の環境ではよく落ちます。。)

実際、開発体制としても 2 系に注力しているようなので、1.2 系の安定は期待しないほうが良さそうです。

Plugin Downloader を利用しての導入

このプラグイン、「いままでこういうの無いって気づかなかったんだろう」というぐらい日常は OSS に依存しながら Web 開発してる身としては素敵なプラグインです。

なんか git submodule で Plugins に配置して満足してたのが恥ずかしい。

Installing Voxel Plugin - Voxel Plugin 2.0

詳細は上記のページに記載されていますが、このプラグインを導入すると、Unreal Editor の右上端に以下のようなアイコンが出てくるので、それを使って進めていきます。

もし、Voxel Plugin Pro をマーケットプレイスで購入していない場合には、、Download ボタンが出ないとかなのかな。私は購入済でしたのでどうなるかはわからないです。

設定

もし動作がもたつくようであれば Number Of Threads を上げられます。

マテリアル

Inside Unreal の内容を見て再現しようとした時に最初に手が止まりそうなのは Create Mesh ノードに設定するマテリアルです。

Discord

Yep, the terrain doesn't have any UVs by default, so it'll only work with materials with triplanar projection, or you'll need to pass position into the UVs yourselff

上記のサポートスレッドによると、そういうことのようです。

私のコードの方には以下のような何の面白みも無いマテリアルを設定してあります。とりあえず平面っぽいところでは草があって、角度がつくと草がなくなって岩肌が出るみたいな感じになります。リリース時にはいい感じのサンプルが付くらしいのでそちらに期待です。

以下はコード内の VMG_InsideUnreal から Landmass や Folige を除いた Voxel Meta Graph のノードです。

以下のような感じの地形になります。

上記のノードに関しては以下のドキュメントに詳細があります。

Getting Started with Smooth Terrains - Voxel Plugin 2.0

Landmass Brushes を使って地形を形作る

以下のように Map に VoxelLandmassActor を追加しノードで指定した Layer 名を付けます。Inside Unreal の方ではそれぞれ岩のような Mesh を指定していましたが、私の方のサンプルでは雑に Cylinder を指定しています。

地形を作る用 地形に穴をあける用

VoxelLandmassActor を以下のように配置することで山に穴をあけたような形状をつくることができます。

HeightMap を使って地形を作る

HeightMap は上記のように Make Density from Height より前に差し込みます。

HeightMap は Map に配置する VoxelLandmassHeightMapActor とそれに指定する VoxelHeightMap によって構成されます。

私のサンプルの方では VoxelHeightMap は以下のような設定になっています。

HeightMap に指定するグレースケールの画像が必要です。(今回は Affinity Photo で作成しました。CLIP STUDIO Paint で作成してみたのですが、グレースケールで出力しても 32bit で保存されるようでうまく使えませんでした)

今回は単純な円の画像にしたので以下のような地形が生成されています。(奥の方には多少ぼかしを入れた円を指定しています)

Foliage を指定する

Voxel Foliage Instance Template を木や草のようなカテゴリで作成し、それを Voxel Foliage Cluster Template でまとめ、最終的にノードでまとめるという形にしています。
ただ、Inside Unreal の方でチラッと見えたサンプルでは Foliage が複数指定されていたように見えたので自由に指定していいのだと思います。

ノードは以下のようにシンプルです。

HeightMap の部分に関しては設定で傾斜が大きい部分には草は生えないようになっています。

一方で、Landmass で作成した山と穴は Foliage 生成時に利用している Height (FinalHeight) の設定後に生成しているためうまく Foliage が出ていません。

もう一つ Map に VoxelLandmassActor を作成し、その情報を使って Mask に指定します。

このあたりは Inside Unreal の動画で詳しく説明してくれているのでそちらで数値の指定方法などを参照してください。(私もよく分かってないです 😅)

感想

この Inside Unreal の数日前に少し触っていたのですが、その時点から大きく変わっているノードもあったりして動画を見た時はかなり驚きました。

また 1 系とは設計思想もだいぶ変わっているようでやり方や考え方も大きく変わっていそうです。
1 系ではマインクラフトのようにボクセル(といっても Voxel Plugin の Voxel はかなり細かくできるのでメッシュを壊しているような感じですが)を破壊していけるような表現も簡単にできましたが、2 系では現状はそれは API レベルでは提供されてはいないようです。

一方で、Landmass Actor で Voxel の減算は簡単にできるので(遅いですが)ランタイムで削除するということもできると Discord で言及されていました。

プロシージャルに地形を生成するツールは様々ありますが、UE 内でさくっと洞窟のような表現も作れるのは楽しいので引き続きアップデートを追っていきたいなと思います。