HOME

VATによる群衆表現④:モーション制御

Houdiniをゲームに使うとなる場合によくある用途の一つが群衆だと思う。 一通り流れを踏襲しておきたいので追ってみる。 また、VAT3.0になってからのVATを触ったことが無いのでこの機に触ってみる。

環境

HoudiniIndie20.5.522
HoudiniEngine20.5.522
HoudiniLabs Plugin2.0

参考にするチュートリアル

そこそこ古い動画だがこちらのような表現をできるようにしたい
詳細な流れが紹介されているわけではなく、用例紹介のような動画なので完全に同じフローにはならないかと思う。

Vertex Animation Textures for Crowdsチュートリアル
https://www.youtube.com/watch?v=StGJ1l8noNs

Simulating Large Crowds In Niagara | Unreal Engine
https://www.youtube.com/watch?v=CqXKSyAPWZY

本記事ではチュートリアルでは行っていない内容だが、複数のVATアニメーションからアニメーションを選択して再生する方法を試していく

前回の記事

VATによる群衆表現①:ソフトボディVATでキャラクターを動かす
https://www.procedural.jp/articles/4pxh95hix

VATによる群衆表現②:LODを含むVATの作成
https://www.procedural.jp/articles/nfy3yj8h0

VATによる群衆表現③:頂点カラーによるキャラクターバリエーションの切り替え
https://www.procedural.jp/articles/imb0tw2j-w

実行結果

再生タイミングと再生モーションの選択
アクターごとに異なるアニメーションと再生するモーションが選べるような仕組みを作成する。

一つのMaterialInstanceでアクターごとに異なるタイミングでの再生と複数のアニメーションループ

方法
Houdiniが用意してくれているVATノードは時間での指定が可能なのでここに対する入力を調整してアニメーションのずらしと差分を設定する

VAT用のノードで再生するタイミングを選ぶことができる

チュートリアルでは長尺のモーションを流しているが、今回は「Simulating Large Crowds In Niagara | Unreal Engine」の動画で紹介されているようなVAT内に持たせた複数のモーションから参照したい範囲を指定して再生するような方式を作成してみる。(どちらがよいかはプロジェクトで表現したいもの次第かなと思います)

Houdiniでの設定

VATに出力するモーションを複数接続する
mofbxから入力したモーションをmotionclipに変換し、motion clip retimeで前のアニメーションの長さ分だけ後ろにフレームをずらして motion clip blendでモーションを結合する

retimeでタイミングをずらしてclip blendで結合

モーションを結合するノードとし てmotion clip sequence もあるが、今回は利用していない。
自動的に補完フレームを作成してくれる素晴らしいノードだが補完を無くす方法が見つからなかったので区切ったループモーションに使うには不向きそうだった。

sequenceは結合したモーションの間に補完フレームが作成される(素晴らしい機能だが今回は不向き)

UnrealEngine上での設定

再生フレームを操作するために接続を作成
HoudiniVATSoftBodyDeformationのTimeOverrideで再生するアニメーションのタイミングが選択できる。

位置によってオフセットするために Object PositionとTimeをaddで加算、指定の長さをループで回すためにModuloにaddの出力とScalarParamaterを接続、ループの開始地点を設定するためにModuloの出力と二つ目のScalarParamaterを接続する

TimeOverrideへの接続を作成

作成したパラメータをカスタムプリミティブパラメータとしてメッシュから設定したいループの長さとモーションの開始タイミングを設定することで単一のマテリアルインスタンスで複数のキャラクターバリエーション、複数のループモーションを再生することができるようになる

前回までと今回の内容で

  • パーツ切り替えによるキャラクターバリエーション
  • モーションのバリエーション
  • Actorごとにずれたモーション
  • LOD

ができた。

モーション、モデルバリエーションを切り替え可能なLOD付きVAT
シェーダー複雑度

機能として導入してみたいところまでできました。
チュートリアルで残っているのは表現のための設定周りとなります。

fish_ball

プロシージャル魚類