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
実行結果
再生タイミングと再生モーションの選択
アクターごとに異なるアニメーションと再生するモーションが選べるような仕組みを作成する。

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

チュートリアルでは長尺のモーションを流しているが、今回は「Simulating Large Crowds In Niagara | Unreal Engine」の動画で紹介されているようなVAT内に持たせた複数のモーションから参照したい範囲を指定して再生するような方式を作成してみる。(どちらがよいかはプロジェクトで表現したいもの次第かなと思います)
Houdiniでの設定
VATに出力するモーションを複数接続する
mofbxから入力したモーションをmotionclipに変換し、motion clip retimeで前のアニメーションの長さ分だけ後ろにフレームをずらして motion clip blendでモーションを結合する

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

UnrealEngine上での設定
再生フレームを操作するために接続を作成
HoudiniVATSoftBodyDeformationのTimeOverrideで再生するアニメーションのタイミングが選択できる。
位置によってオフセットするために Object PositionとTimeをaddで加算、指定の長さをループで回すためにModuloにaddの出力とScalarParamaterを接続、ループの開始地点を設定するためにModuloの出力と二つ目のScalarParamaterを接続する

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

前回までと今回の内容で
- パーツ切り替えによるキャラクターバリエーション
- モーションのバリエーション
- Actorごとにずれたモーション
- LOD
ができた。


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

fish_ball
プロシージャル魚類