VATによる群衆表現②:LODを含む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
本記事ではVAT出力時にLODを含んで出力する方法を追う
前回の記事
VATによる群衆表現①:ソフトボディVATでキャラクターを動かす
https://ipk2abtmtx.microcms.io/apis/blog/4pxh95hix
Houdiniでの設定
VATにLODを持たせて出力する方法はHoudiniLabsのArtStationに設定方法などを記載してくれている。
(残念ながらサンプルシーンのダウンロードリンクは切れていました)
https://www.artstation.com/artwork/5XJZV8
こちらのリンクと先述の動画を参考にデータを構成します。
Nとuvのvertexアトリビュートを持たせる
LODを持たせて出力させる場合、出力するメッシュのvertex attributeにNとuvを持たせる必要があるので設定する
※point attributeだとエラーで止まりました

頂点番号を保存
floatで元メッシュのpoint番号をアトリビュートしてキャッシュ
※最終的にintに変換する値ですが、この段階ではfloatでないとこの後に利用するattribcopyが正常に動きませんでした。

LOD0(元メッシュ)の設定
atribcastを作成し、先にfloat型でキャッシュした頂点番号をint型に変換

「LOD0」というpointグループにすべてのpointを分類しLOD0の設定は完了

LOD1の設定
LODを作成するメッシュはtime shiftなどでフレームを固定し、

PolyReduceで削減する。この時「UseOnlyOriginalPointPosition」を有効にする

削減したメッシュを作成したらAttribCopyを作成し、削減したメッシュに元メッシュからキャッシュしたLOD0の頂点番号を元にPを転送する

LOD0同様、キャッシュした頂点番号をintに変換し、

LOD1というpointグループに分類してLOD1の設定が完了

LOD2の設定
LOD2以降の設定も基本的にLOD1同様。
グループ名がLOD2となる。

メッシュのマージ
LOD0~2のメッシュをマージして出力対象の準備が完了

Labs Vertex Animation Textureの設定
LODを出力する場合、Labs Vertex Animation Texture の Advanced/ ExportLODsを有効にする。
今回の場合、LOD0、LOD1、LOD2の3つのLODなのでNumber of LODsは3に設定する

UEに入力
LODが生成されている
出力されるfbxファイルとテクスチャファイルの数は変わらないが、正しくLODを設定できているとインポートした時点でLODが生成された状態でUEにインポートできる

注意点
これはUEの注意点だがNanita有効だとLOD1以降は表示できない

Nanitaが必然になってくると不要な要素になるかもしれないですが、現状Nanitaはプロジェクトの相性によるという話を聞いたことがあるのでしばらくはLOD付きのVATは要件によっては選択肢の一つになるのではないでしょうか

fish_ball
プロシージャル魚類