Procedural Foliage について
この記事は Unreal Engine 4 (UE4) #2 Advent Calendar 2019 の 9日目の記事です。
前日は、なんさん のアーティストのためのマテリアル式にゅうもんでした。マテリアルで使用するベクターや Multiply、Add の意味がわかりやすく丁寧に書かれていて良い記事でした!
今回は Procedural Foliage について簡単に紹介しようと思います。 公式のクイックスタートもあるのでそちらも参照してみてください。
この記事で使用している UE4 のバージョンは古いですが、4.22 です。
内容は次のような感じで進めていきます。
Procedural Foliage とは
設定したパラメータに基づいてプロシージャルに Static Mesh を配置できる機能です。
Modes パネルから選択できる Foliage ツールは手作業でレベルに Static Mesh を配置できる機能ですが、Procedural Foliage はボタン一つでプロシージャルに Static Mesh を配置できるので、サクッと森などの環境を作りたい場合に使用できるかと思います。
以下では Procedural Foliage の使い方を説明しながら森を作っていきたいと思います。
Procedural Foliage を使用する準備
Procedural Foliage は Experimental の機能なので Editor Preferences から Procedural Foliage を有効にする必要があります。
Editor Preferences を開き General から Experimental を選択し Procedural Foliage にチェックボックスにチェックを入れます。
Editor Preferences は Edit タブから開きます。
以上で Procedural Foliage が使用可能になります。
Procedural Foliage 機能を使用した森の作成
Foliage Type の作成
まずはじめに Foliage ツールと同様に Foliage Type を作成します。Foliage Type は Foliage 機能で配置する Static Mesh に関する設定を行うクラスです。
Content Browser で右クリックし Miscellaneous から Foliage Type を選択します。森を作るために木の Static Mesh を配置したいので、名前は FT_Tree01 としておきます。
作成した Foliage Type を開きます。一番上にある Mesh の項目に Procedural Foliage で配置したい Static Mesh を設定します。ここでは木の Static Mesh を設定しておきます。
以上で Foliage Type に関する最低限の設定は終わりです。
他の項目は配置する Static Mesh の密度等の項目なのですが、先に Static Mesh の配置をし、その後で項目を設定していきたいと思います。
Procedural Foliage Spawner の作成
次は Procedural Foliage Spawner を作成します。Procedural Foliage Spawner は、設定したパラメータに基づいてプロシージャルに StaticMesh を配置してくれるクラスです。
Content Browser で右クリックし Miscellaneous から Procedural Foliage Spawner を選択します。森を作りたいので、名前は PFS_Forest としておきます。
作成した Procedural Foliage Spawner を開きます。Foliage Types の + ボタンを押下し Foliage Type Object に先ほど作成した FT_Tree01 を設定します。Foliage Types は Procedural Foliage Spawner で配置する Static Mesh に関する設定です。
以上で Procedural Foliage Spawner の設定は終わりです。
他のパラメータについては公式リファレンス を参照してください。
Procedural Foliage による Static Mesh の配置
先ほど作成した Procedural Foliage Spawner をレベルに配置し、Static Mesh を配置します。
ちゃっと広いレベルを作成したかったのでランドスケープを使用しています。
PFS_Forest をレベルに配置します。そのままでは小さいのでスケールを変更して大きな領域にしておきます。
Static Mesh の配置には、PFS_Forest の Detail タブ内 Procedural Foliage カテゴリにある Resimulate ボタンを押下します。
すると Procedural Foliage Spawner の Foliage Types に設定した Static Mesh がレベル上に配置されます。
以上で Foliage Type に設定した Static Mesh を配置し、森を作成することが出来ました。
基本的な使い方は以上です。あとは求める背景に近づけるために、パラメータの調整や新しく Foliage Type を作成していきます。
Foliage Type の調整
配置した木の密集具合や木の大きさ等の調整は Foliage Type で行います。
Foliage Type のパラメータを変えて Procedural Foliage Spawner で Resimulate を繰り返し、求める背景に近づけていきます。
ここでは今回設定したパラメータの一部をざっくりと説明していきます。各パラメータに関しては Procedural Foliage Spawner 同様、公式リファレンス を参照してください。
Placement セクション
Placement セクションでは配置に関するパラメータを設定します。
垂直位置のばらつきや地面に対して垂直に Static Mesh を配置するか、ピッチの角度のばらつきを設定できます。今回は Z Offset で少し垂直位置が下がっている木があるようにしてみたり Random Pitch Angle で少し傾いた木があるように設定しました。
Collision セクション
Collision セクションでは配置する Foliage Type 同士の重なりに関するパラメータを設定します。
今から配置しようとしている Foliage Type の半径内と他の Foliage Type の半径内が重なった際、ルールや優先度によりどちらかが削除されることになりますが、その半径をここでは設定できます。半径は Collision Radius と Shade Radius の2つを設定できます。今回は Collision Radius を少し変更している程度であまり意味があって変更したわけではないです。
Clustering セクション
Clustering セクションでは密度や年齢に関するパラメータを設定します。
何世代まで配置するかや配置しようとする Static Mesh の密度、そのばらつきを設定できます。Num Steps は 0 だと最初の世代のみが配置されます。Initial Seed Density は種の密度を設定します。密にしたい場合は大きめの値を設定します。Spread Variance は種のばらつきを設定します。今回は、Num Steps を 5 に設定し、6世代まで配置できるようにしています。また Spread Variance を少し大きめに設定しています。
Growth セクション
Growth セクションは年齢による成長に関するパラメータを設定します。
Collision セクション
で設定した Shade Radius を無視できるようにしたり、最大の年齢を設定できます。Can Grow in Shade と Spawns in Shade をともに true にすることにより Shade Radius を無視できます。今回は、Max Age や Procedural Scale を変更してみています。
Instance Settings セクション
Instance Settings セクションでは配置された Static Mesh に関するパラメータを設定します。
Mesh を配置する際のおなじみの設定がほとんどかと思います。今回は Collision Presets を No Collision にしていますが、コリジョンが必要な場合はここで適切なコリジョンに設定します。
複数の Foliage Type の設定と配置
木の Foliage Type を調整した結果、このような感じになりました(途中で Exponential Height Fog を配置しました)。
今は木だけですので、地面に草や石も生やしてみます。
今回は草用と石用の Procedural Foliage Spawner を新しく作成しました。草や石の Foliage Type を作成し、それぞれに Procedural Foliage Spawner に設定しています。これらも木の場合と同様にレベルに配置し、Resimulate します。
もしかしたら、一つの Procedural Foliage Spawner に木や草、石をまとめてもよいのかもしれないのですが納得のいく配置が出来なかったので今回は Procedural Foliage Spawner を複数に分けています。
Static Mesh の配置の抑制
ここまでで次のような感じになりました。
ここで画像の手前から真ん中の辺りに向かって道のようにしたいと思いました。その部分に配置されている花や草が邪魔なので、その部分には配置されないように設定します。
Procedural Foliage Spawner を配置した範囲の中で Static Mesh を配置したくないという領域がある場合には Procedural Foliage Blocking Volume を使用します。Modes パネルで Procedural Foliage Blocking Volume を検索し Procedural Foliage Spawner の中で Static Mesh を配置したくない場所に配置します。
あとは Procedural Foliage Spawner 側で Resimulate を押下するだけです。押下すると Procedural Foliage Blocking Volume を配置した部分は Static Mesh が配置されなくなります。
この機能を使用し、道のような部分を作成しました。
どことなく物足りなさを感じたので、倒れた木を一つ配置して(これは手作業)完成としました。
おわりに
以上で Procedural Foliage についての説明は終わりになります。
Procedural Foliage は、まだ Experimental の機能ということで今後どうなっていくのか楽しみです。
ここまでお読みいただいてありがとうございました。
明日は、@suihanki さんの「VRネタで何か一発」です。
参考
How To Create And Use Procedural Foliage Volumes - UE4 Tutorial Open World ツールのプロパティ リファレンス