2021-08-12

VAT3 Fluid

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


使用したビルド:

  • Houdini FX 18.5.651 (650 以降が必須)

1. インストール

  • Vertex Animation Textures version 3 (以下 VAT3) は SideFX Labs ツールの一つで、 H18.5.617 以降に同梱されているが Houdini インストールと同時にインストールが必要。
  • 18.5.650 で Fluid (Dynamic Remeshing) に対して大幅な改良が施され、出力データのファイルサイズが約1/4 になった。ここでは、651 を使った改良後の使用法を説明する。
  • VAT の UE4 へのインストールはこちらを参照。

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

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

  1. 上記ページより File.zip をダウンロードし解凍。
  2. 解凍したディレクトリから PaintSplat.hip を Houdini 18.5.650 以降で開く。
      すると 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 ノードを作成し、設定を行っていく方が無難。
      ノードのバージョンを手早く確認するにはAsset Bar を表示すると便利。
  2. TAB メニューから Labs Vertex Animation Textures ノードを選択、作成。
      vertex_animation_textures2 が出来る。
  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/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 など) に変更しても良い。
これらのファイルを UE4.26 に持ち込む。

4. UE での読み込み

  1. デフォルトの画面設定であれば中央下部分にある Content Browser に以下のテクスチャをドラッグ & ドロップ。
    • vertex_animation_textures2_lookup.png
    • tex/vertex_animation_textures2_pos.exr
    • tex/vertex_animation_textures2_rot.exr
  2. 読み込んだ .exr 二つを選択、RMB -> Scripted Action ->SideFX Set VAT HDR Textures を実行。

      これにより、テクスチャに正しい設定が行われる。
  3. 読み込んだ .png を選択、RMB -> Scripted Action ->SideFX Set VAT Non HDR Textures を実行。
      このメニューが表示されない場合は、プラグイン (SideFX Labs フォルダ) が正しくインストールされていない。こちらを再度確認。
  4. 次に 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: オン
  5. Content Browser 上で右クリック、表示されるメニューから Material を選択してマテリアルを作成。
  6. 名前を M_VAT_FLUID とし、ダブルクリックして中に入る (名前は自分でわかれば何でも良い)。
      M_VAT_FLUID 内には、M_VAT_FLUID という名のノードがひとつある。
  7. TAB キーを押して、'vat' と入力していくと、選択肢が以下のように表示される。
  8. このうち MF_VAT_DynamicRemeshing を選択する。
      このように MF_VAT_Rigid などが表示される場合、それは古いマテリアル関数 (MF)。インストール 以下の b から最新のディレクトリをコピーする。
  9. MF_VAT_DynamicRemeshing を左に M_VAT_FLUID を右に並べ、以下のように接続していく。
    • Color RGB (PS) を Base Color に
    • 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 シミュレーションの結果が再生されている(はず)。

なお、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% に抑えられる。

リンク


最終更新: 2023-12-08

3 件のコメント:

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

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

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

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

      削除