魚群VATの作成③:単一のマテリアルインスタンスで複数種類の魚を表示する
生成AIで沢山魚をたくさん作ったので魚群VATを作成するパイプラインを作成したい

環境
HoudiniFX 20.5.613
UnrealEngine 5.5.3
作成結果
以前、「Vertex Animation Textures for Crowds」のチュートリアルを参考に頂点カラーでVATの表示を切り替えた手法と概ね同様。
VATによる群衆表現③:頂点カラーによるキャラクターバリエーションの切り替え
(以前の記事。ブループリントで制御する目的のVATを頂点カラーで切り替えた)
頂点カラーとパーティクルカラーを利用して表示するメッシュをパーティクルごとに切り替えている。


複数の魚をひとつのvatに含める
複数の魚を一つのVATメッシュにまとめていく
メッシュ、テクスチャを結合
今回は4つの魚をまとめる。
fileノードで4種類の魚のスタティックメッシュを開き

ひとつのマテリアルインスタンスで表示する関係上、uvをまとめてbasecolor、normalなどのチャンネルを各々ひとつのテクスチャで表示する。
今回はcopでまとめたが、現実にパイプラインを組もうとした場合、このあたりは仕様と相談でベイクを含む自動化や部分的な手動化等の設計が必要になると思う

頂点カラーの出力
マテリアルインスタンス内で表示を切り替えるためのマスクとして、それぞれに異なる頂点カラーを設定する。
0は表示しない色調にしたいので0.1〜1.0で割り当て。

LabsVeretexAnimationTexturesのSettings/ExportStaticMesh を有効にする。

頂点カラーで表示切り替えを行うマテリアルを作成
メッシュの準備が出来たのでUnrealEngineでパーティクルのポイントカラーに合わせて表示を切り替えるためのマテリアルを作成する。
マテリアル設定
マテリアルの Blend Modeを Masked に変更し、

頂点カラーとパーティクルカラーが一致した場合に透明度が1になるようなノード構成を作成

Niagaraでパーティクルの生成時に色を設定できるようにする

結果
以上で、パーティクルカラーに合わせて魚の種類が切り替わるようなNiagaraメッシュパーティクルの作成ができた。


余談:出力メッシュが破綻する場合がある
原因が不明だが出力メッシュの頂点数が変えるとVATの結果が破綻してしまうような場合が見受けられた。

原因までわからなかったのが非常に残念なのだが、出力メッシュの頂点数を減らすことで回避できる場合もあった。(ただし減らせば解決するというものでも無いようで、キャッシュかUV精度か、原因は不明)

ひとまず、頂点数を削減すれば発生しづらいようだった。VATをリッチに扱うことも無いと思うのでひとまず困ったら頂点数削減して直ればそれを利用しようと思う。
余談で書いたポリゴン数増減時の破綻はもし原因わかったら記事を記載させていただきます。内容には記載していませんが、以前出力がうまくいった「LODを含む構成」でもLOD1以外が破綻する状態に見舞われ今回かなりハマりました。(よくある事例らしい)
VAT周りは厳密に必要な数字を出力するための設定事項を把握できていないとハマりがちな印象です。
上述のハマった2例に関してはLabsのVAT ROPの中身を見ていけば原因判るかもと思うのでもしわかればまた記載させていただきます。

fish_ball
プロシージャル魚類