Vertex Animation Texture Unreal


Texture Based Animation による Houdini で作成した特殊効果を Unreal に持っていく方法を紹介する。

使用したソフトウェア

  • Houdini 16.0.457 (要 Houdini 16.0)
  • Unreal 4.14.1 (要 4.14 以降)

0. Vertex Animation Texture に関して

破壊やデフォメーションの結果をリアルタイム環境で再生するには、頂点単位でのアニメーションカーブの出力を行なったり、ボーンデフォメーションなどに変換して出力するのが従来の方法であったが、各頂点のアニメーションデータをテクスチャに書き出し、GPUで演算させることにより、従来よりも高解像度のデフォメーションまたはシミュレーション結果を高速に再生することが出来るようになる。

考え方としては、ピアノロールの要領で、頂点 (バーテックス) の変位をフレーム単位で格納し再生する。通常、トランスレーション(移動)と回転の二つを考慮しなければならないので、テクスチャも移動用と回転用の2つが必要となる。デフォメーションでは、回転ではなく、法線方向を記録する場合もある。

これらの XYZ の各値が RGB チャネルにそれぞれバーテックス順にフレーム単位で最初のフレームから最後のフレームまで記録される。 例えば、1024 頂点(バーテックス)を持つジオメトリのデフォメーションを 24フレーム記録する場合、1024x24 のテクスチャを2枚書き出すこととなる。この場合、実際のテクスチャの解像度は 1024x24でも、途中で折り返して、512x48でも記録されている内容は同じ。頂点数が使うテクスチャの横解像度よりも大きい場合には折り返すしかない。出力されるテクスチャの横幅は、ROP 内で定義する。




2021年7月現在の最新版である VAT3.0 についてはこちら。以下は、2016年末時点の情報。

1. ファイルのダウンロード

  1. SideFXSamples_x.zip (995MB) をダウンロード。
      UPDATE: Nov, 2019: It's been almost 3 years since this page was written with UE4.14. In case if you are using UE4.19 or later, you may want to follow https://vimeo.com/207832662 and get the scene file there.
      パスワードは要問い合わせ
      ダウンロードしたファイルを解凍すると約 1.15GB になる。
  2. Zip ファイルを解凍する。解凍したフォルダ以下、Source/VertexAnimationTexture/vertex_animation_textures.hda を HDA パス (例: MyDocuments/houdini16.0/otls) にコピーまたは移動。
  3. Houdini 16 を起動、/out 以下で TAB->Vertex Animation Texture ノードが作成できれば、HDA は正しく認識されている。

2. Unreal プロジェクト

  1. Unreal 4.14.1 を起動。Browse ボタンをクリック、上で解凍した SideFXSamples.uproject を開く。無事に開けば上のようなアニメーションが再生されるはず。
  2. Unreal Editor (以下 UE4) の Content Browser の左側で最上層の Content をクリック選択、右側で New Folder を作成、MyFile などと名前を付ける。
  3. 自分で作成した ファイルを Unreal に読み込む時にはこのディレクトリ以下に読み込むと良い。その際には、右側の World Outliner で、元々シーンにあるサンプルは隠してしまうのが良いかもしれない。ライト各種とSkySphere 以外は、それぞれ目を閉じた状態にする。

3. 自分でエフェクトを作成する


その他リンク


最終更新 2021-08-03

22 件のコメント:

  1. データ確認させて頂きました。有難う御座います。
    サクションフォースのhipにエラーが有りました。
    キャッシュのgeoファイルが無いそうです。

    返信削除
  2. どのファイルをどこで開いたときにそのエラーがでるのでしょうか?

    返信削除
  3. suction_force.hipの/obj/fluidtank_fluid/compressed_cacheの中の
    /obj/fluidtank_fluid/compressed_cache/read_backで


    Error
    Unable to read file "H:/Data2/houdini/SideFXSamples_v2/Source/VertexAnimationTexture/Fluid/SuctionForce/geo/suction_force.compressed_cache.75.bgeo.sc".

    というエラーが出ています。

    返信削除
    返信
    1. zipファイルにはキャッシュが含まれておりません。
      よって、自分で作らないとダメですね。
      /obj/fluidtank_fluid/import_fluidtank
      の Save to File ボタンをクリックしてでキャッシュを書き出して、compressed_cache でそのキャッシュを読み込む必要があります。

      削除
  4. また全てのhipファイルを開いた際に
    Warning : The following node types are using incomplete assete definitions:
    Driver/vertex_animation_textures
    という警告が出ます。

    返信削除
    返信
    1. おそらく、このシーンファイルが作られたときの Houdini 16と現行の Houdini 16ではアセットの定義が少し異なるのではないかと思います。
      正しく動かすには、このZip に入っている HDA を使う必要があります。
      それでもダメであれば、少し古い Houdini 16を使うか、もしくはこちらでシーンファイルをアップデートする必要がありますね。

      削除
  5. 他にもSoftbody.hipを開いた時に

    Load warnings for H:\Data2/houdini/SideFXSamples_v2/Source/VertexAnimationTexture/Soft/Softbody/soft_body.hip

    Warning:

    /obj/geo1/solidembed1:

    Skipping unrecognized parameter "useremesh".
    Skipping unrecognized parameter "resolvecollisions".


    /obj/AutoDopNetwork/geol:

    Skipping unrecognized parameter "sepparm5".
    Skipping unrecognized parameter "solidstiffness".
    Skipping unrecognized parameter "sepparm8
    Skipping unrecognized parameter "volumemassdensity".
    Skipping unrecognized parameter "sepparm7
    Skipping unrecognized parameter "aniso".
    Skipping unrecognized parameter "targetstiffness".
    Skipping unrecognized parameter "thicknessenable".
    Skipping unrecognized parameter "thicknesscolor".
    Skipping unrecognized parameter "penetrationenable".
    Skipping unrecognized parameter "penetrationcolor".
    Skipping unrecognized parameter "velocityenable".
    Skipping unrecognized parameter "velocityscale".
    Skipping unrecognized parameter "velocitycolor".
    The following node types are using incomplete asset definitions:
    Driver/vertex_animation_textures

    という警告が表示されます。
    またこのhipファイルの/obj/geo1/filecache1/read_backで


    Error
    Unable to read file "H:/Data2/houdini/SideFXSamples_v2/Source/VertexAnimationTexture/Soft/SoftBody/geo/soft_body.filecache1.100.bgeo.sc".

    というエラーが表示されています。

    返信削除
    返信
    1. これも上記と同じですね。キャッシュをZip に含めると非常にファイルが大きくなるので含まれておりません。
      HDA は更新されているかもしれません。

      近々、作者と確認してみます。4月以降になるかもしれませんが。

      削除
  6. ご回答有難うございました。
    参考にさせて頂きます。

    返信削除
  7. vertexAnimationTextureで書き出そうとすると

    Error
    Cook error in input: POSITION_AND_PACKED_NORMAL.
    というエラーがほぼ毎回、別のファイルでも出るのですがどこをどう修正すればいいのでしょうか・・・。
    検索してもヒットせず八方塞がりな状態です・・・。

    返信削除
    返信
    1. これはRBD をやろうとしているのでしょうか?
      その場合、入力のジオメトリは Pack されている必要があります、ということですかね?

      削除
    2. すみません説明が足りていませんでした。
      VATの検証してみたく、水や爆発などの流体系を書き出そうとしていた感じです。

      削除
    3. GameDev Vertex Animation Textures ノードのパラメータの一番上にある Method が Fluid (Changing Topology) になっていますでしょうか?

      削除
    4. はい、fluidになっています。

      削除
    5. シーンファイルを ktaki@sidefx.com まで送っていただけますか?

      削除
    6. メールに添付してお送りさせてもらいました。

      削除
    7. 今二つ見ましたが、どちらもキャッシュノードをバイパスして普通に計算させたところ、問題なく出力できました。残り見て、メールで返事いたします。

      削除
  8. Can you tell me the compressed password?
    It will be a great help.
    Please.
    Thank you.

    eyegrapher@gmail.com

    返信削除
    返信
    1. Hi there,
      This page was written over 3 years ago with UE4.14.
      In case if you are using UE4.19 or later, you may want to follow
      https://vimeo.com/207832662
      and get the scene file there.
      I will send you the password separately.
      Good luck!

      削除
  9. RBDでシミュレーションしたものをVATで出力しようとすると

    Error
    Error rendering child: /out/breakOBJ/set_max_min_pscale

    というエラーが出てrotationのファイルが出力されません
    RBDなのでpscaleを使ってないですが設定しないといけいのでしょうか?

    返信削除
    返信
    1. こんにちは。これとこの下の Cloth 含め、全くわかりません。
      お使いの Houdini および SideFX Labs のビルド番号と問題の再現可能なシーンファイルと再現手順と共に
      https://www.sidefx.com/ja/faq/question/contacting-support/
      の要領で、ktaki@sidefx.com まで送っていただけますか?

      削除
  10. クロスの時も同様な感じでした

    Error
    Error rendering child: /out/clothSimA/set_max_min_pos_soft


    返信削除