アルゴンUE4/UE5開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

UE5.7新機能: ProceduralVegetationEditorの紹介

木を作れるプラグインが追加されてます(・ω・)

UE関連のアドベントカレンダー23日目の記事になります。

今回はProcedural Vegetation Editorという、

UE5.7からの追加された機能について紹介します。

実際に配置したのが下の画像になります。

今回紹介している内容

※UE5.7.1の機能になります。
※書き間違え等あればコメントください!
※実際に動作させたのはこちらになります。

ProceduralVegetationEditorとは?

ProceduralVegetationEditorでは、

UE5上でSpeedTreeの様に幹の大きさや関節点、

葉の種類などを変更することで木などを生成できる、

UE5.7から実験的に追加されたプラグインになります。

実験的な段階なので今後に期待ですが、

いろいろ面白そうなので今回紹介しようと思いました。

それでは実際に説明していこうと思います(`・ω・´)

・目次に戻る

プラグインとプロジェクトの設定

まずは今回のPCGForestを活用する前にUE5.7で追加された、

Naniteフォリッジの項目にチェックを入れます。

メニューの編集→プロジェクト設定でダイアログを開きます。

編集からプロジェクト設定を開く

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

Naniteフォリッジにチェックを入れる

再起動を促されますが一旦プラグインも設定します。

メニューの編集→プラグインでダイアログを開きます。

編集からプラグインの選択

ダイアログが開いたら、「procedural vege」で検索して、

「Procedural Vegetation Editor」にチェックを入れて再起動をします。

Procedural Vegetationプラグインにチェック

こちらで準備は完了なのでいろいろ試していきましょう!

・目次に戻る

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のデータをドラッグして配置

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がデフォルトで強いほど木が揺れる)

BPの各種設定動作

実際に変更している動画も置いておくのでそちらも参考にどうぞ!

だいぶ長くなりましたがこちらで木の生成から、

木の配置などの説明になります。

だいぶ散らばった説明になってしまいましたが一通りの流れは以上です。

・目次に戻る

最後に

だいぶ長くなってしまいましたが今回の説明は以上になります。

将来的に木や葉のマテリアルをいろいろ変更できるようになって、

いろんなものが作れるようになったらうれしいなと思います!

まだ2日間アドカレがあると思うので、いろんな記事楽しみにしてます!

・目次に戻る

【UE5】時計を見る動きを作ってみる

久しぶりの作ってみた(;'∀')

今回は時計の表示を見るような動作と時計の表示を、
時計表示のマテリアルなどの設定を行おうと思います。

※UE5.6機能になります。
※書き間違え等あればコメントください!
※実際に動作させたのはこちらになります。

時計のモデルの準備を行う

今回Blenderの方でモデルを作成したので、

モデルの作り方は割愛させていただきます。

こちらにモデルデータを用意しているので、

下記からダウンロードしていただけますと幸いです。

作られているモデルは腕時計の腕の周り・画面・画面の外側の淵で、

マテリアルが分かれています。

※時計モデルのファイル名を「SM_Clock」に変更しています。

時計のモデル

これ以降は上記モデルを活用していきます。

・目次に戻る

時計を見るアニメーションを作る

アニメーションは今回UE5のコントロールリグで作成しました。

実際のアニメーションファイルはこちらになります。

インポート時はスケルタルメッシュで「SK_Mannequine」を指定します。

※今回はサードパーソンテンプレートを活用しています。

今回作成したアニメーションの作り方も軽く説明しておきます。

まずはレベル上にコントロールリグのキャラクターを配置します。

キャラのドラッグアンドドロップして配置しましょう。

コントロールリグを配置していきます。

まず最初にコントロールリグの各種項目を削除します。

この後にアニメーションをベイクしていきます。

各種不要なタイムラインの削除

そして追加でアニメーションのMM_Idleを追加します。

このアニメーションの最初のキーフレームを活用します。

アニメーションを追加

上記の状態でMM_Idleのアニメーションをコントロールリグにベイクします。

ベイクするアニメーション指定

ベイクオプションのダイアログが表示されますが、

特に変更はないので作成ボタンを押して完了します。

ベイクオプションダイアログの作成ボタン

アイドル状態のキーを活用するので最初の部分以外は削除します。

新規の時計を見るアニメーションを作成するために必要なので削除しています。

キーを削除する動作

それでは実際にアニメーションを作成します。

今回は20秒のキーで作成して、各種関節を変更しています。

spine_01_ctrl → Z軸:25回転

clavicle_r_ctrl → Z軸:25回転

upperarm_r_fk → X軸:70回転、その後Z軸:10回転

lowerarm_r_fk_ctrl → X軸:75、その後Y軸-70回転、最後にZ軸:-15回転

head_ctrl → X軸20回転、その後Z軸:-25回転

実際に設定したものはこちらになります。

以上でアニメーションの作成は完了です。

・目次に戻る

時計を見る動きなどをBP側で設定する

それでは実際にアニメーションなどの動きを作っていこうと思います。

スケルタルメッシュにlowerarm_rの所にWatch_Rのソケットを作成します。

位置・角度を変更していきます。

位置:X/-19.4 Y/0.55 Z/-0.3

角度:X/190 Y/8.46 Z/-86.8

各種ソケットの設定を行う

それでは実際に処理を作成していきます。

まずはBP_ThirdPersonCharacterに時計用の、

スケルタルメッシュコンポーネントを追加します。

時計用のモデルを追加

続いてアローの追加して位置と角度などを指定しています。

こちらはFPS用のカメラアクタを作成する位置になります。

位置:X/0° Y/14.71° Z/156.57°

角度:X/0° Y/-45° Z/90°

カメラの位置と角度を設定した矢印

これで準備は完了なので実際に処理を作成していきます。

まずは変数としてカメラアクターを保持する変数と、

時計を見ている間動けないようにするBoolean型の変数を作成する。

各種変数を作成する

続いて処理を作成していきます。

今回はCキーに入力をして、時計を見ているかどうかを確認して、

0.5秒待つ動きをするかどうか分岐しています。

Cキーを押してからの動作

続いてカメラを見る処理を作成します。

主な処理としてはカメラとキャラの動作を行えないようにすること、

時計を見るアニメーションを設定して、カメラを切り替えます。

そして作成した変数のカメラを見ているかをオンにします。

各種腕時計を見るための動作

もう片方の処理はそれとは逆の処理になります。

カメラやキャラを動かせるように設定して、

アニメーションをAnimationBPに戻して、カメラを削除して元に戻しています。

カメラやアニメーションなどを戻す処理

時計を見ているときの見た目はこのような形になります。

時計を見た時の動作

実際に動かしたものは下記になります。

・目次に戻る

最後に

今回久しぶりにモデルとアニメーションを活用して、

動きなどを確認しながら作ってみました。

見ていただきありがとうございました!

・目次に戻る