木を作れるプラグインが追加されてます(・ω・)
UE関連のアドベントカレンダー23日目の記事になります。
今回はProcedural Vegetation Editorという、
UE5.7からの追加された機能について紹介します。
実際に配置したのが下の画像になります。

※UE5.7.1の機能になります。
※書き間違え等あればコメントください!
※実際に動作させたのはこちらになります。
- ■目次
- ○ProceduralVegetationEditorとは?
- ○プラグインとプロジェクトの設定
- ○ProceduralVegetationの各種ファイル構成
- ○実際に木を編集してみる
- ○作成した木々の配置方法について
- ○最後に
ProceduralVegetationEditorとは?
ProceduralVegetationEditorでは、
UE5上でSpeedTreeの様に幹の大きさや関節点、
葉の種類などを変更することで木などを生成できる、
UE5.7から実験的に追加されたプラグインになります。
実験的な段階なので今後に期待ですが、
いろいろ面白そうなので今回紹介しようと思いました。
それでは実際に説明していこうと思います(`・ω・´)
プラグインとプロジェクトの設定
まずは今回のPCGForestを活用する前にUE5.7で追加された、
Naniteフォリッジの項目にチェックを入れます。
メニューの編集→プロジェクト設定でダイアログを開きます。

開いたら「nanite」で検索して「Naniteフォリッジ」にチェックをいれます。

再起動を促されますが一旦プラグインも設定します。
メニューの編集→プラグインでダイアログを開きます。

ダイアログが開いたら、「procedural vege」で検索して、
「Procedural Vegetation Editor」にチェックを入れて再起動をします。

こちらで準備は完了なのでいろいろ試していきましょう!
ProceduralVegetationの各種ファイル説明
まずプラグインの処理を確認する前に、
コンテンツブラウザ右奥の歯車マークをクリックして、
「C++クラス」と「エンジンコンテンツ」と「プラグインコンテンツ」に、
チェックが入っていることを確認します。
※これにチェックが入っていないとサンプルが確認できないので注意!

どれも✅が入っていることを確認したら下記のフォルダを探します。
プラグイン→ Procedural Vegetation Editorフォルダと、
プラグイン → Procedural Vegetation Editor C++ クラスフォルダ
上記二つのフォルダはいったんお気に入りに入れておくことをおすすめします。

それでは実際にProcedural Vegetation Editorで紹介します。
主なプラグインのアセットフォルダは「SampleAssets」内にあります。
サンプルには各フォルダ分けされてで入っている中身は下記になります。
・Maps → サンプルが配置されているレベル
・Materials → 木が揺れるための風の制御などに活用するテクスチャなど
・PCG → 作成した木々を配置するための処理
・Tree_Common_Hazel_01 → 高さが低い葉のような木の各種ファイル
・Tree_European_QuakingAspen_01 → アメリカヤマナラシという木の各種ファイル

ProceduralVegetationEditor関連のファイルを紹介していきます。
Tree_Common_Hazel_01もTree_European_QuakingAspen_01でも、
各種ファイル形式は同様なのでTree_European_QuakingAspen_01の、
フォルダ内のファイルを元に説明します。
・Instancesフォルダ → 各種葉や木々の各種モデル
・Materialsフォルダ → 木と葉っぱのマテリアル
・Texturesフォルダ → 木々の各種テクスチャ(VTがON)
・PVE_European_QuakingAspen_01 → こちらがPCD形式で木や草を作成する
・PVE_QuakingAspen_Data → 上記ファイルの根幹となっているデータアセット
・その他フォルダに配置されているファイル → PCGで配置しているモデル

まだ実験段階の機能なのかは不明ですが、
根幹となるデータアセットが編集不可の状態になっているのでご注意ください。
※要約すると具レイアウトされていて編集が行えない
データアセットの中身で設定されている内容は下記になります。
〇PresetVariations → インデックスごとに葉や幹の情報がまとまった項目
▢各インデックス項目
・Foliage Meshs → 木々の生成するための葉や枝になるモデル
・Materials → 幹のマテリアル
・PlantProfiles → 各種枝や幹関連のマテリアル

それでは実際にデータアセットの情報を元に作成していきます。
実際に木を編集してみる
それでは実際に木のデータを各種作成していきます。
コンテンツブラウザを右クリックしてフォリッジ→プロシージャル植生を選択します。

作成したプロシージャル植生のファイルを開きます。
一番左が木々のサンプルで右上がノード編集、
その下が各種ノードの詳細になります。
まず最初のノードを作成していきましょう。
ノードの所で右クリックして「Input output」の、
「プロシージャル植生プリセットローダー」を選択します。

このプロシージャル植生プリセットローダーに、
先ほど説明していたデータアセットをプリセットとして指定します。

するとそのノードを選択すると白い木みたいなのが表示されます。
ノードから様々な効果のノードを設定して木を作成していきます。
それではいろんなノードを紹介していきます!っと思ったんですが、
公式の説明があったので省略させていただきます。
今回は低めで少し曲がっている木を作成する流れを紹介します。
まず曲げるための「傾斜」のノードを追加します。
こちらで木の曲がりを変更します。
各種パラメータは下記になります。
・Slope Angle(22.5°で設定) → どれぐらい地面から曲がるか(単位は度)
・Slope Direction(-80°で設定) → どの方向に曲がるのか
・Bend Strength(2.0で設定) → 高い方ほど曲がり具合を軽減
・Trunk Pivot Point(Trunkで設定) → 原点をモデルの原点か幹を指定

続いてスケールを変更します。今回は0.7に設定しています。
これによって木の高さが変更されます。

これで木の表現の設定は完了になります。
あとはモデルの出力等を行うノードを設定していこうと思います。
まずメッシュビルダーからやっていきます。
こちらは木のモデルを軽量化したりマテリアルを変更できたりします。
設定パラメーターは下記になります。
▢Material
・MaterialSettings → ✅を入れて幹のマテリアルの設定できます。
・生成マテリアル → こちらが木のマテリアルになっている。
▢メッシュ設定
・Point Removal → 木の細かい関節点の削減
・Segment Reduction → 木の曲がり回数の削減
・Min Divisions → 数値が高いほど木の面が増える
・Max Divisions → 数値が高いほど断面の面数が増える

続いてボーンの削減のノードを追加します。
強度のパラメータが強いほどボーンが削減されます。今回は0.6で設定しています。

あとは葉の部分の設定になりますがまずフォリッジパレットになります。
フォリッジパレットは草のメッシュを変更できます。

最後にフォリッジディストリビューターで、
葉っぱの密度関連を変更して調整します。各種パラメータは下記です。
▢分布設定
・エチレンしきい値 → 数値が高いほど草の量が多い
・分布オーバーライド → その他細かい設定をする場合にチェックを入れる
・インスタンス間隔 → 各箇所の葉の部分の量の設定
・インスタンス間隔エフェクト → 高いほど小枝の量が減る
▢スケール設定
・ベーススケール → 葉っぱの大きさ
・枝スケールの影響 → 枝の大きさに合わせて葉の大きさも合わせる。
・最小スケール → 葉の最小の大きさ
・最大スケール → 葉の最大の大きさ
・ランダムスケール最小値 → 葉を配置する際のランダムの最小
・ランダムスケール最大値 → 葉を配置する際のランダムの最大
最後に出力のノードを設定します。出力ノードの設定項目は下記になります。
▢Export Settings
・Content Browser Folder → 出力したいパスを指定
・Mesh Name → 出力ファイル名の指定
・Asset Replace Policy → ファイルを置き換えする場合の処理
※Append → 連番を付けての追加 Replace → 上書き保存
Ignore → すでにある場合は更新されない
・Export Mesh Type → スケルタルメッシュかスタティックメッシュか選択

ノードの設定はこれでは終わりになりますが、
これではモデルの出力が終わっていないので、
エクスポートで木のスケルタルメッシュを出力するようにします。
左上のエクスポートを選択します。

選択すると「出力を選択してエクスポート」のダイアログが開きます。
エクスポート型は選択している出力ノードのみ出力する、
Selected output(s) nodeとテンプレートの出力をチェックで選択できる、
Batch exportの選択が行えます。
今回は「Selected output(s) node」を使用して出力しています。

エクスポートして木のスケルタルメッシュが出力されればこれで完了です。

これで一連の流れは以上になります。
ただこれだと木を出力しただけなので次はPCGで配置していきましょう~
木々の揺れなどのBP処理について
それでは実際に先ほど作成した木を配置してみようと思います。
今回はプラグインのサンプルで用意されているものを活用してきます。
まず新規レベルのオープンワールドを作成します。


作成が完了したらプラグインが配置してある、
/ProceduralVegetationEditor/SampleAssetsにある、
「Wind_Example_PCG」を配置します。

PCGを配置するだけで各種木などが表示されるかなと思います。
続いて風などで木が揺れるBPを配置します。
/ProceduralVegetationEditor/SampleAssets/Materials/GlobalFoliageActorの、
BP_GlobalFoliageActor_UE5を配置します。

これで必要なものの配置は完了したので、
作成した木を配置していきます。
今回はサンプルのPCGのGraphインスタンスの「Trees」にチェックをいれて、
プラスボタンで木を追加する形になります。

それから配置したBPの設定も説明しておきます。
このBP_GlobalFoliageActor_UE5ですが下記パラメータを制御しています。
ちなみに風の向きはBPの角度がそのまま適応されます。
▢Season&Health
・Season Strength
→ 紅葉の様に葉の色が変化します(0がデフォルトで8でほぼ黄色に変化)
・Health
→ 葉の枯れ具合を表現(10がデフォルトで0に近づくほど枯れた表現に変化)
▢Wind
・WindSpeed
→ 風の強さを制御(0がデフォルトで強いほど木が揺れる)

実際に変更している動画も置いておくのでそちらも参考にどうぞ!
だいぶ長くなりましたがこちらで木の生成から、
木の配置などの説明になります。
だいぶ散らばった説明になってしまいましたが一通りの流れは以上です。
最後に
だいぶ長くなってしまいましたが今回の説明は以上になります。
将来的に木や葉のマテリアルをいろいろ変更できるようになって、
いろんなものが作れるようになったらうれしいなと思います!
まだ2日間アドカレがあると思うので、いろんな記事楽しみにしてます!














