HOME

Maneki Pipeline

ゲーム開発のためのプロシージャルワークフロー

魚群VATの作成②:HoudiniのVAT3をNiagaraで動作させる

生成AIで沢山魚をたくさん作ったので魚群VATを作成するパイプラインを作成したい

環境

HoudiniFX 20.5.613
UnrealEngine 5.5.3

作成結果

Niagaraで前回作成した魚VATを動かして魚群を作る。 VAT3をNiagaraで動作させるためには設定を変更する必要がある。

HoudiniのVAT3で動作するNiagaraのメッシュパーティクル
シェーダー複雑度

補足:魚が泳ぐ単調な動きにSideFXが用意しているHoudiniから出力する高機能なVATを使う必要はあまりないが、将来的に入れ込みたい「モーション遷移」、「LODを含むVAT」、「データ作成がHoudiniの仕組みに則りパイプライン化しやすい」などの利点からHoudiniのVATを利用している。

Niagara用のマテリアルを作成

NiagaraでVATを動かす場合、スタティックメッシュでVATを動かした時といくつか異なる設定が必要になる

変更する理由について
現在SideFXが提供しているVAT3は設定項目が少なく非常に使いやすいのだが、Niagaraではそのまま動かせないという問題がある

Niagaraではそのままの設定ではVAT3は動かない

内部VATの動作を計算するためにバウンディングボックスを取得しているノードがあるが、この取得値が「Niagaraで動作させた場合」と「スタティックメッシュで動作させた場合」で結果が異なるためである

含まれるマテリアルエクスプレッションがNiagaraでは正常に動作しない

解決する手段はよく見るとリファレンスに記載されており、インスタンスやパーティクルで動かす場合はレガシー設定を有効にするとある。

labs--vertex_animation_textures-3.0
https://www.sidefx.com/ja/docs/houdini/nodes/out/labs--vertex_animation_textures-3.0.html

Support Real-Time Instancing
頂点アニメーションメッシュのリアルタイムインスタンシングに対応するには、これを有効にしてください

レガシー設定を有効(Houdini)
LabsVertexAnimationTextureノードのAdvancedに該当する項目がある。
これを有効にして改めて出力する。

SupportRealTimeInstancing設定を有効化して出力

この状態で出力すると「data」というディレクトリが生成され、その中にbounding box などの数値が記載されている。
この値をマテリアルの設定で利用する。

dataディレクトリが作成され、入力値が確認できるようになる

レガシー設定を有効(Unreal)
UnrealEngineではマテリアル関数側に設定が用意されており、レガシー設定を有効にするにチェックをいれるとバウンディングボックスを手動で入力する設定が表示される。
VATを出力した際にHoudiniから出力された「vertex_animation_textures_data.json」の内容を入力すると

Support Legacy Parameters and Instancingを有効化し、dataの内容を入力する

NiagaraでVATが再生されるようになる

NiagaraでHoudiniのVAT3が動作するようになる

調整、結果

Material接続を整理し、
※今後のためにDynamicParamaterでフレームを加算していますが、Timeを接続しても動きます

マテリアルを整理

Niagaraで動きなどを調整して

Niagaraを調整

VATを動作させる魚群ができました。


SideFXが提供しているVAT3をNiagaraで動かす方法が情報として見つからず少し苦戦してしまいました。
この後はVATでNiagara用のメッシュパーティクルが表示できたので動作制御や以前行ったカラーマスクによるメッシュ変更を使った単一マテリアルインスタンスでの表示に取り組んでみます。

fish_ball

プロシージャル魚類