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

環境
HoudiniIndie20.5.522
HoudiniEngine20.5.522
HoudiniLabs Plugin2.0
参考にするチュートリアル
そこそこ古い動画だがこちらのような表現をできるようにしたい
詳細な流れが紹介されているわけではなく、用例紹介のような動画なので完全に同じフローにはならないかと思う。
Simulating Large Crowds In Niagara | Unreal Engine
https://www.youtube.com/watch?v=CqXKSyAPWZY
本記事ではチュートリアルで行っているいくつか調整表現について追っていく
前回の記事
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
VATによる群衆表現④:モーション制御
https://www.procedural.jp/articles/kkil4aswto
実行結果
チュートリアル動画でここまで触れていなかったようである、コマ撮りアニメのようなフレーム遷移、unlitとパーツごとの単色表示、より簡略化されたLODを反映した状態。


コマ撮りアニメのようなフレーム遷移
Houdiniでの設定
timeshiftを作成しアニメーションのフレームを数倍速で再生(ここでは16倍)

速度調整後、VATを出力。
UnrealEngineでの設定
今回は特に設定していない。
チュートリアルではマテリアル側でストップモーションのような途切れ途切れのアニメーションをマテリアルで調整しているようだったが(7:45頃)テクスチャサイズ削減にもなるのでモーション側で調整した。
エンジン上で表現を調整できる機能は開発段階用で用意しておけばテスト用に喜ばれるかも。

プロジェクト側でストップモーション的な表現のにぎやかしを許容するなら単純に必要なフレーム数が減少するのでVAT用のテクスチャ容量を大きく軽減できる
unlitとパーツごとの単色表示
チュートリアルではマテリアルをunlitに変更し、パーツ表示に利用している頂点カラーを利用して単色をEmissionColorとして割り当てている
UnrealEngineでの設定
マテリアルをunlitに変更し、

OpacityMaskに入力していた頂点カラーごとにOpacityMaskを設定するための接続を複製してエミッシブカラーに接続

切り替えのために接続していたパラメータをカラーに変更

チュートリアルではこのような方法でカラーのシルエットのような表現にしている。
( 動画ではこれに加えて肌のindexを指定するための分岐と、ライトを表現するための法線方向による色のブレンドを作成しているが今回は割愛)


より簡略化されたLOD
Houdiniでの設定
polyReduceSOPはポリゴン数10未満のような非常に少ないポリゴンを指定した場合、一定数までのポリゴンまでしか削減できず、シルエットもやせてしまう

チュートリアルではこの対策のために最も小さいLODは同サイズのBOXを作成し、アトリビュートを転送して変形している。

さすがにboxだと違和感ありそうなら分割数をふやすと凸法っぽい形状にもなる。(画像は54ポリゴン)
また頂点カラーは(1,0,0)のような単色をすべてのvertexに割り当てる

出力すると以下のようになる(実際のゲームではここまで近い段階ででこのLODは出さないと思うが)
動画だと実際にこのLODが映っているシーンは無く実際にやってみて感じたが、今回のようにパーツごとの単色をもったキャラクターだと向かない気がする…

コア部分以外の、チュートリアルで紹介されていた表現によって利用できそうな容量削減の工夫や調整の確認できた。

以上でより簡略化されたLODチュートリアルで紹介してくださっている情報を追い終わりました。
単一のマテリアルインスタンスで表現するVAT群衆はすごいと思います。

fish_ball
プロシージャル魚類