2021-07-07

Vertex Animation Texture 3

ここでは Vertex Animation Texture (VAT) 3.0 のインストールおよび RBD での使い方を簡単に紹介する。なお、詳しい使用法は Houdini HIVE で紹介。

  1. VAT3 Complete Guide Part 1 (日本語版へのリンク)
  2. VAT 3.0 概要
  3. インストール
  4. 元になる RBD シミュレーションの作成
  5. VAT ROP による出力
  6. UE4 での読み込み
  7. トラブルシューティング
  8. VAT3 Cloth
  9. VAT3 Fluid
  10. VAT for Crowds (群衆)


必要なビルド:

  • Houdini 18.5.617 以降が必須 (631 以降を推奨)

1. VAT 3.0 概要

Vertex Animation Texture (頂点アニメーションテクスチャ) の基本的な考え方についてはこちら

  • ワークフローの効率化を目指し、アプリケーション間での数値のコピペや JSON でのやり取りを極力排除
  • 操作時のノード挙動の高速化 (無駄なクックの削減)
  • UI の再デザイン、ドキュメントの更新及びより分かり易いヘルプメッセージ
  • 新しいピボットエンコーディング方法と新しい マルチ RPF (Revolutions per Frame) 回転補間アルゴリズムによる RBD シミュレーション精度の大幅向上
  • すべてのモードでのアーティスト編集によるサーフェス法線のネイティブサポート
  • Fluid モードでの UV のネイティブサポート
  • 9チャネルまでのカスタムデータのネイティブサポート
  • シェーダ機能のカスタマイズと拡張を可能にする柔軟性
  • 旧バージョンでの既知のバグをすべて修正

6/24 時点での制限

  • UE4 のみ。Unity は今後
  • Houdini Engine for UE4 プラグインでインストールされるマテリアルと VAT3 による UE4 マテリアルに連携性なし。これは修正予定。

2. インストール

以下 UE4 で VAT3 を効率よく使うためのインストール手順。UE4.26, 4.27, 5.0EA に対応している。

  1. Houdini 18.5.617 以降を SideFX Labs 込みでインストール。
  2. Houdini 18.5 を初めてインストールしたのでなければ、ツールをアップデートする
      これにより、Houdini 環境ディレクトリ、もしくは $HOUDINI_PACKAGE_PATH で別途指定したディレクトリ以下に SideFXLabs というディレクトリができ、その中にアップデートしたビルド番号のディレクトリが出来る (例: 18.5.617)。
  3. インストールの状況に応じて次のいずれかのディレクトリに行く。
    1. Houdini と SideFX Labs を初めてインストールしてツール未更新の場合、 C:\Program Files\Side Effects Software\sidefx_packages\SideFXLabs18.5\unreal
    2. SideFX Labs を更新した場合、 C:\Users\ユーザ名\houdini18.5\SideFXLabs\18.5.617\SideFXLabs18.5\unreal
    どちらの場合でも 4.26 ~ 5.0EA のディレクトリがあり、使用するバージョンに合せたディレクトリにいく。ツール更新後は b を使うのが無難。
      それぞれの中には、以下の3つがある。
      • SideFX_Labs フォルダ
      • Plugin Installation Guide.txt
      • VAT Import Settings Guide.txt
  4. このうち SideFX_Labs フォルダをコピー (Ctrl+C) し、目的に応じて、以下のいずれかのディレクトリにペースト (Ctrl+V)。
    • 個人で使う場合: C:\Program Files\Epic Games\UE_4.26\Engine\Plugins\FX\
      • HoudiniNiagara と同じ
      • UE 起動後、 Edit->Plugins で SideFX Labs を検索、有効化が必要。または SideFX_Labs.uplugin をテキストエディタで開き、次の一行を括弧の中に追加する。
        "EnabledByDefault" : true, 
        詳細はこちら。なお、少なくとも 18.5.638 以降では EnabledByDefault は true になっている。
      • 下記のように個々のプロジェクトにコピーすることは不要
    • プロジェクトで共有する場合: UE4 プロジェクトフォルダ内に Plugins というディレクトリを作成、その中にペースト
      • プロジェクトに関わる人それぞれの環境にインストールすることは不要。
      • Edit->Plugins での有効化も不要
これでプロジェクトを起動すれば、VAT3 が UE4 内で認識され (るはずで) 従来のワークフローでは避けることが出来なかったパラメータのコピペを大幅に削減できる。

以下、Houdini Core で単純な RBD シミュレーションを作成、VAT (3) 経由でUE4 へ持っていく方法。

3. 元になる RBD シミュレーションの作成

  1. Houdini 18.5.617 を起動。Torus (/obj/torus_object1) を作成、
    • Translate Y の値を 2 などとして上に移動
    • Rotate X を45などとして傾ける。
  2. torus_object1 を選択したまま Simple FX シェルフにある Simple Fracture ツールをクリック。
  3. ビューポート下に "Select collision object, if any, and press Enter to complete." (衝突オブジェクトがある場合、選択して Enter キーを押して完了) と表示されるが、この場合はただ Enter キーを押して完了する。
      /obj/torus_object1_fracture (SOP) ネットワークが追加され、その中に5つの SOP ノードによる シミュレーションためのネットワークが出来るのがわかる。
  4. Play ボタンを押して再生してみる。
      トーラスは真下に落下し、破砕もしなければぶつかりもしない。これを編集していく。
  5. fracture_solver ノードを選択、下段にある Ground タブで Add Ground Plane を None から Ground Plane に変更。
      再生してみると、トーラスは XZ 面以下には落下しなくなるが未だ割れない。
  6. rbdmaterialfracture ノードを選択し、Constaints タブの Primary Strength の値を見ると、10,000 になっている。これではコンストレインが強すぎなので、100 ぐらいに落として再生してみる。
      するとトーラスが落下して地面にあたった際に割れるのがわかる。
  7. 最下流の fracture_io ノードの一番左の Geometry 出力に Null ノードを追加、OUT という名前に変更し、このノードに表示フラグを指定。
  8. ここまでを vat_simple_rbd.hip などという名前で保存し、次に VAT で出力する。

4. VAT ROP による出力

  1. /out に移動し、Labs Vertex Animation Texture ノード (vertex_animation_textures1) を作成。
    • Labs ノードを使うには SideFX Labs のインストールが必要。
    • 作成した VAT ノードが 3.0 であるかどうか、どこにある HDA がロードされているかを確認するは Asset Bar を表示すると便利。
  2. 次に設定を変更していく。
    • 一番上の Render All ボタン直下の Mode / Target Engine は Rigid-Body Dynamics (Rigid) と Unreal Engine (のまま)
    • Start/End は 1 と 240 のままでも良いし、短くしても良い。
    • Input Geometry にシミュレーションジオメトリを指定する。ここでは /obj/torus_object1_fracture/OUT 。
  3. Render All ボタンをクリックして出力してみる。
      このままだと、シミュレーションは行われファイルは書き出されるが、実質的なデータのないファイルが出来、VATノードには以下のように pivot と orient アトリビュートが無いという警告が出る。
  4. /obj/torus_object1_fracture の中に戻り、fracture_solver を選択。Advanved タブに行き、以下の設定を行う。
    • Output 以下の Transfer Attributes に orientpivot を指定。
    • Transfer to Geometry トグルをオン。

      この設定は Houdini FX を使った AutoDopNetwork 経由であれば不要 (のはず)。
  5. 再び /out/vertex_animation_textures1 に戻り、Render All をクリックすれば、今度は正しく export/vat_simple_rbd ディレクトリに以下のファイルが出力される (はず)。
    • geo/vertex_animation_textures1_mesh.fbx
    • tex/vertex_animation_textures1_pos.exr
    • tex/vertex_animation_textures1_rot.exr
    出力ファイル名のうち、'vertex_animation_textures1' 部分の変更は Export タブの Asset Name を $OS から別のもの (例: $HIPNAME など) に変更する。
このファイル三つを UE4.26 に持ち込む。

5. UE での読み込み

  1. インストール時に SideFX_Labs フォルダをコピーしたプロジェクトで UE4 を起動。
  2. デフォルトの画面設定であれば中央下部分にある Content Browser に以下のテクスチャをドラッグ & ドロップ。
    • tex/vertex_animation_textures1_pos.exr
    • tex/vertex_animation_textures1_rot.exr
  3. 読み込んだ両方のテクスチャを選択、RMB -> Scripted Action ->SideFX Set VAT HDR Textures を実行。

      これにより、テクスチャに正しい設定が行われる。VAT 出力時に HDR でない方法で出力した場合は、Non HDR の方を選択。
      このメニューが表示されない場合は、プラグイン (SideFX Labs フォルダ) が正しくインストールされていない。こちらを再度確認。
  4. 次に geo/vertex_animation_textures1_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 とし、ダブルクリックして中に入る (名前は自分でわかれば何でも良い)。
      M_VAT 内には、M_VAT という名のノードがひとつある。
  7. TAB キーを押して、'vat' と入力していくと、選択肢が以下のように表示される。
  8. このうち MF_VAT_RigidBodyDynamics を選択する。
      このように MF_VAT_Rigid が表示される場合、それは古いマテリアル関数 (MF)。インストール 以下の b から最新のディレクトリをコピーする。
  9. MF_VAT_RigidBodyDyanmics を左に M_VAT を右に並べ、以下のように接続していく。
    • Color RGB (PS) を Base Color に
    • Normal (Tangent Space Normal Off) を Normal に
    • World Position Offset を World Position Offset に
  10. M_VAT を選択し、Details ビューで 'tangent' を検索、Tangent Space Normal をオフにする。
  11. M_VAT を選択し、Details ビューで 'uv' を検索、Num Customized UVs を 5に設定する。
      これにより Customized UV[0-4]までが追加される。
  12. Customized UV1 から Customized UV4 までをすべて接続する。
  13. 終わったらパネルを閉じて保存。
  14. 再び RMB -> Materials & Textures -> Material Instance を実行し、マテリアルインスタンスを作成。vat_inst などと名付ける (自分でわかれば何でも良い)。
  15. vat_inst をダブルクリックして開く編集パネルの Details 以下で、Position Texture と Rotation Texture を有効にし、それぞれに vertex_animation_textures1_pos と vertex_animation_textures1_rot をドラッグ & ドロップ。

    終わったら閉じる。
  16. Content Browswer から ビューポートに vertex_animation_textures1_mesh_MESH (fbx) をドラッグ & ドロップし、そうしてできたメッシュに対して vat_inst マテリアルをドラッグ & ドロップ。
      上手くいった場合、ビューポートでは RBD シミュレーションの結果が再生されている (はず)。

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

  1. テクスチャが出力できない、出来ても真っ黒でデータがない
      VAT データを出すには、orient と pivot アトリビュートが出力されること。こちらを確認。Transfer to Geometry トグルも忘れずに。
  2. 細かい破片が消えたり再び現れたりする
      vat_inst マテリアルで Piece Scales Are in Position Alpha がオフになっているのを確認する。
  3. アニメーションがパカパカする (回転が飛ぶ)
    状況に応じて回避策は異なるかもしれないが、以下を試すと良い。
    • この問題に限らず、VAT ROP の Input Geometry には オブジェクトレベルへのパス (例: /obj/torus_object1_fracture) ではなく、SOP レベルのパス (例: /obj/torus_object1_fracture/OUT) を指定するのが無難
    • こちらでのアトリビュート追加時に 'w' も追加する
    • /obj/torus_object1_fracture/fracture_io でシミュレーションをキャッシュ出力してから読み込むようにする (Save to Disk をクリックしてから、Load from Disk トグルをオンにする)。これにより、シミュレーションデータがフレーム単位で(サブフレーム情報なしで) VAT ROP ノードに渡る。
  4. UE4 でテクスチャやマテリアルのパラメータを変更しても更新されていないように見える
      Content Browser でそれぞれのアイコンに * が付いている場合、一度保存してみる (RMB -> Save)。もしくは Ctrl+Shift+S で一括保存。

リンク


最終更新: 2024-04-08

7 件のコメント:

  1. Awesome tutorial! I am having trouble using VAT 3.0 for fluid and this tutorial cleared a lot of my confusions. Thank you vey much. Do you mind doing a fluid tutorial if possible? I was using the MF_VAT_DynamicRemeshing function but I still get broken meshes. Much appreciated!

    Sorry I don't know Japanese but here's probably what I want to say:
    素晴らしいチュートリアル!流体にVAT3.0を使用するのに問題があり、このチュートリアルで多くの混乱が解消されました。どうもありがとうございました。可能であれば、流体シミュレーションのチュートリアルを行ってもよろしいですか? MF_VAT_DynamicRemeshing関数を使用していましたが、メッシュが壊れています。とても有難い!

    返信削除
    返信
    1. Hi there, I am in process of writing fluid one. I probably have run into similar problems as you might have, which is why it's not here yet. Stay tuned (but I won't be writing in two languages).

      削除
  2. 素晴らしいチュートリアルを有難うございます!質問なのですが、こちらの手順でジオメトリをパックすると元ジオメトリのuvって消えてしまいませんか?
    また、元ジオメトリにuvが複数有る場合の設定方法も解らず困っています。なにかヒントを頂けると嬉しいのですが…よろしくお願い致します。

    返信削除
    返信
    1. 本当ですね。社内で調べてみます (114857)。
      とりあえずは、普通の Shatter を使うのが良いかもしれません。

      削除
    2. ご返信ありがとうございます。
      https://www.sidefx.com/ja/forum/topic/60167/?page=1#post-268976
      こちらのフォーラムを参考にしたところなんとか上手く行きました。UVが消えてしまうとなるとSimpleFractureシェルフの使い道が解らないですよね……。特に自分のような初心者だと何が起こっているかも解らず、余計混乱してしまいました。

      削除
    3. pumpさん元のジオメトリにuvがあるのでしたらPacked GeometryというHoudini特有のデータになっているのでfracture_ioの下にunpackというSOPを追加すればuvは表示されると思うのですがどうでしょうか?
      また複数のuvの編集ですがShene Viewでスペース+5キーでuvの確認画面に移動できるのでそこでビューポート左上のuv(vertex)の文字をクリックすると持っているuvアトリビュートが表示されるので複数のuvがある場合はそのuv名(例えばuv2等)を覚えておいてuvedit SOPを追加してUV Attribute欄に編集したいuv名を記述することで編集が可能になると思います。

      削除
    4. yukito さん
      コメント有難うございます。
      RBD の部分に関しては UV 付きの形状で書き直してみたいと思います。
      他に書き直しが必要なものがいくつかあるので、いつになるかわかりませんが、出来るだけ早く対処致します。

      削除