2021-08-12

VAT3 Fluid

2025-04-25: Houdini 20.5.550 + UE5.4 向けに更新しました。

ここでは Vertex Animation Textures 3 での Fluid の例を紹介する。

18.5.650 で Fluid (Dynamic Remeshing) に対して大幅な改良が施され、出力データのファイルサイズが約1/4 になった。ここでは、改良後の使用法を説明する。


使用したビルド:

  • Houdini FX 20.5.550
    • 元々使ったビルド: Houdini FX 18.5.651 (650 以降が必須)

1. インストール

  • Vertex Animation Textures version 3 (以下 VAT3) は SideFX Labs ツールの一つで、 H18.5.617 以降に同梱されているが Houdini インストールと同時にインストールが必要。
  • VAT の UE5 へのインストールはこちらを参照 (UE4 の場合こちら)。

2. 元になる Fluid シミュレーション

元になる流体シミュレーションは Andreas Glad 氏による VAT Paintsplat! を使う。このページにある "File.zip (5.6MB)" をダウンロードして編集せずに H20.5 に読み込んだだけでも VAT3 による出力は可能なので、これを元に説明する。 Andreas 氏による説明も秀逸。

  1. 上記ページより File.zip をダウンロードし解凍。
  2. 解凍したディレクトリから PaintSplat.hip を Houdini 20.5.xxx で開く。
      すると Prepare_Mesh ノードにエラーが出るのがわかる。
  3. Prepare_Mesh ノードの中に入ってみると、一番上流の file1 からすべてがエラーになっている。

      つまり、file1 が読み込むべきファイルないということ。
  4. Objects レベル (/obj) に戻り、Erode ノードの中に入る。
      ここの最下流に filecache1 ノードがあるのがわかる。
  5. filecache1 を選択、パラメータビューで Save to File タブにある Save to Disk ボタンをクリックしてキャッシュを書き出す。
  6. 一つ上 (/obj) に戻ると、ビューポートには流体形状が表示され、キャッシュが正しく読み込まれたことがわかる。一度再生してみてすべて書かれているのを確認するのが良い。
なお、Prepare_Mesh の中ではキャッシュ読み込み後に PolyReduce や Attribute Blur などを使ってデータの軽量化を行っているが、この説明は Andreas 氏のビデオを参照のこと。

3. VAT ROP による出力

  1. /out に移動すると、Labs Vertex Animation Textures ノード (vertex_animation_textures1) が既にあるが、このノードの定義は H16.5 当時の VAT バージョン 1.0。よって、このノードを変更していくよりも真新しい VAT (3.0) ノードを作成し、設定を行っていく方が無難。
      ノードのバージョンを手早く確認するにはAsset Bar を表示すると便利。
  2. TAB メニューから Labs Vertex Animation Textures ノードを選択、作成。
      vertex_animation_textures2 が出来る。これが 3.0 であることを上図の要領で確認すること。
  3. 次に vertex_animation_textures2 の設定を変更していく。
    • 一番上の Render All ボタン直下の Mode / Target Engine で、Mode は Dynamic Remeshing (Fluid) に変更する。 Target Engine は Unreal Engine (のまま)。
    • Start/End は 1 と 40 のまま。
    • Input Geometry に /obj/Prepare_Mesh/VAT_OUT を指定する。
  4. H18.5.650 以降、Settings タブには Lookup Table (ルックアップテーブル) 設定が追加され、テクスチャデータの圧縮を可能にしている。こちらは H18.5.640 (ルックアップテーブル搭載前) と H18.5.651 (搭載後)の UI の違い。重要なことは、
    • Dynamic Remeshing に Render Pass パラメータが追加され、First Pass と Second Pass を選択するようになった
    • All Modes 以下に Lookup Table Format が追加され、データ形式 (Non-HDR または HDR) とファイルフォーマットを選択できるようになった
    • 結論から言うと、Render All を二度、一度は First Pass で、もう一度は Second Pass で実行する必要がある。
  5. Render Pass を First Pass に設定し、Render All ボタンをクリック。
      これによりジオメトリとルックアップテーブルなどが出力される。
  6. Render Pass を Second Pass に設定する。
      すると殆どのパラメータがロックされ、変更不可になる。
  7. 再び Render All ボタンをクリック。 すると、 export/PaintSplat ディレクトリに以下のファイルが出力される (はず)。
    • geo/vertex_animation_textures2_mesh.fbx
    • tex/vertex_animation_textures2_col.exr
    • tex/vertex_animation_textures2_lookup.png
    • tex/vertex_animation_textures2_pos.exr
    • tex/vertex_animation_textures2_rot.exr
    出力ファイル名のうち、'vertex_animation_textures2' 部分の変更は Export タブの Asset Name を $OS から別のもの (例: $HIPNAME など) に変更しても良い。
これらのファイルを UE5.4 (元は 4.26) に持ち込む。

4. UE での読み込み

以下では1 と 2 に分けているが、PaintSplat ディレクトリをコンテンツブラウザに直接ドラッグ & ドロップしても良い。すると、自動的に FBX の読み込みオプションパネルが表示される。

  1. geo/vertex_animation_textures2_mesh.fbx を Content Browser にドラッグ & ドロップ。
      すると FBX 読み込みの用のダイアログが表示される。ここでの設定は、VAT Import Settings Guide.txt の通りに行う。
      なお、以下に指定のない設定はすべてオフ
    • Vertex Color Import Options: Replace
    • Transform Vertex to Absolute: オン (この上のトグルはすべてオフ)
    • Normal Import Method: Import Normals and Tangents
    • Import Uniform Scale: 1.0
    • Convert Scene: オン (この下のトグル二つはオフ)
    • Material Import Method: Do Not Create Material
    • Reorder Material to Fbx Order: オン
  2. 次に Content Browser に以下のテクスチャをドラッグ & ドロップ。
    • tex/vertex_animation_textures2_col.exr
    • tex/vertex_animation_textures2_lookup.png
    • tex/vertex_animation_textures2_pos.exr
    • tex/vertex_animation_textures2_rot.exr
    カラー (_col) テクスチャは読んでも読まなくともよい。
  3. 読み込んだ .exr 二つを選択、RMB -> Scripted Asset Actions -> Houdini Config Textures for VAT (HDR) を実行。(4.x では RMB -> Scripted Action ->SideFX Set VAT HDR Textures)

      これにより、テクスチャに正しい設定が行われる。
  4. 読み込んだ .png を選択、Scripted Asset Actions -> Houdini Config Textures for VAT (SDR) を実行 (UE4 では RMB -> Scripted Action ->SideFX Set VAT Non HDR Textures)。
      このメニューが表示されない場合は、プラグイン (SideFX Labs フォルダ) が正しくインストールされていない。こちらを再度確認。
  5. Content Browser 上で右クリック、表示されるメニューから Material を選択してマテリアルを作成。
  6. 名前を M_VAT_FLUID とし、ダブルクリックして中に入る (名前は自分でわかれば何でも良い)。
      M_VAT_FLUID 内には、M_VAT_FLUID という名のノードがひとつある。
  7. TAB キーを押して、'vat' と入力していくと、選択肢が以下のように表示される。
  8. このうち Houdini_VAT_DynamicRemeshing を選択する (UE4 では MF_VAT_DynamicRemeshing)。
      このように MF_VAT_Rigid などが表示される場合、それは古いマテリアル関数 (MF)。インストール 以下の b から最新のディレクトリをコピーする。
  9. Houdini_VAT_DynamicRemeshing を左に M_VAT_FLUID を右に並べ、以下のように接続していく。
    • Color RGB (PS) を Base Color に (カラーテクスチャを使わない場合は不要で、Constant をつないでも良い)。
    • Normal (Tangent Space Normal Off) を Normal に
    • World Position Offset を World Position Offset に
  10. M_VAT_FLUID を選択し、Details ビューで 'tangent' を検索、Tangent Space Normal をオフにする。
  11. M_VAT_FLUID を選択し、Details ビューで 'uv' を検索、Num Customized UVs を 5に設定する。
      これにより Customized UV[0-4]までが追加される。
  12. Customized UV1 から Customized UV4 までをすべて接続する。
  13. 終わったらパネルを閉じて保存。
  14. M_VAT_FLUID 上で RMB -> Create Material Instance を実行し、マテリアルインスタンスを作成。mf_vat_inst_fluid などと名付ける (自分でわかれば何でも良い)。
  15. mf_vat_inst_fluid をダブルクリックして開く編集パネルの Details 以下で、Position Texture、 Rotation Texture、Lookup Table を有効にし、それぞれに vertex_animation_textures2_pos、 vertex_animation_textures2_rot そして vertex_animation_textures2_lookup をドラッグ & ドロップ。

    他の MF (マテリアル関数) との兼ね合いで、パラメータには Rotation Texture とあるが、ここで扱っているのは回転情報ではなく、法線情報。いずれにせよ、終わったら閉じる。
  16. Content Browswer から ビューポートに vertex_animation_textures2_mesh_MESH (fbx) をドラッグ & ドロップし、そうしてできたメッシュに対して mf_vat_inst_fluid マテリアルをドラッグ & ドロップ。
      上手くいった場合、このページ一番上のモーションGIF のように、ビューポートでは RBD シミュレーションの結果が再生されている(はず)。

5. トラブルシューティング

  1. UE 上で正しく再生されない。その1
      各種テクスチャをドラッグ & ドロップした初回は、UE が正しく処理できないないことが多い。この場合は UE を再起動する。
  2. UE5 上で正しく再生されない。その2
      読み込んだ FBX ファイルを UE内で開き、"uv" パラメータを検索。表示されるもののうち、UE4 Compatible UVs をオンにする。
  3. ROP から正しく出力されない
    • 出力形状が Polygons であること。Particle Fluid Surface ノードの出力を直接 VAT ROP に渡す場合、Convert To を Suface Polygon Soup からSuface Polygons にすること。
      • ビューポートで 'D' キーを押して Displays Options パネルを表示、Guides タブから Geometry Information を Always On にしておく。Polygon Soup の場合、プリミティブ数が 1 であることが多いため、必要なポリゴンが存在していないことがすぐに把握できる。下流で VDB 変換やポリゴン削減、スムーズなどを行えば、 Polygon Soup のままである可能性は低くなる。
    • ここで使っている PaintSplat.hip では Clean ノードを出力の直前にかけている。状況次第では、これと同じ処理をするのが良い。

6. データ削減

なお、Houdini 18.5.640 で Render Pass/Lookup テーブルを使わずに VAT を出力した場合

  • color: 24KB
  • position: 3637KB
  • rotation: 4901KB
と合計 8.35MB となるが、H18.5.651 でルックアップテーブルを使うと、
  • color: 4KB
  • lookup table: 519KB
  • position: 595KB
  • rotation: 791KB
と合計は 1.86MB となり、以前の 22% に抑えられる。

リンク


最終更新: 2025-04-25

3 件のコメント:

  1. 解説ありがとうございます!
    敬遠してたVATに触るきっかけとなりました!

    一つ質問があるのですが、この設定したマテリアルとメッシュをniagaraのmesh rendererに刺しても何も表示されないのですが、
    niagara用の特別な設定が別途で必要なのでしょうか?

    返信削除
    返信
    1. コメント有難うございます。正直なところ Niagara はあまり触ったことが無いのですが、問題の再現方法を ktaki@sidefx.com に送っていただければ試してみたいと思います。

      削除
    2. 返答ありがとうございます。
      承知しました!
      しばらくいじってみて、それでも分からない場合はメールで相談させていただきます!
      宜しくお願い致します。

      削除