Vertex Animation Texture RBD

Texture Based Animation による RBD (リジッドボディダイナミクス) の Unreal での再生方法を紹介する。

使用したソフトウェア

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

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

  1. こちらのページを参照。

2. RBDシーンの作成

  1. 新しいシーンで Create シェルフの Torus を Ctrl キーを押しながらクリック。
      torus_object1 が原点に出来る。
  2. Translate Y の値を 2 にして、トーラスを原点より少し上に配置。
  3. torus_object1 を選択したまま、Model シェルフの Shatter を実行。
      ネットワークビューが、/obj/torus_object1 内に移る。
  4. /obj/torus_object1/chunkcenters の Force Total Count を 40ぐらいに設定、破片の数を増やす。
  5. voronoi_fracture1 の出力に、UV Unwrap を作成して接続。表示フラグ(青)をこのノード (uvunwrap1) に設定。
      これがテクスチャアニメーション出力の基となるUV になる。
  6. U キーを押して、階層を一つ上がり、torus_object1 を選択したまま、Rigid Bodies シェルフの RBD Fractured Objectツールを実行。表示されるダイアログでは、必ず RBD Packed Object を選択。
      再生すればトーラスが落下するが、何も当たるものがない。
  7. Collisions シェルフのGround Plane をクリックして実行。
      再生すれば、今度は地面に衝突してバラける様子になる。
  8. この現状の設定に対し240フレームでは長すぎるので、アニメーションの最終フレームを120フレームにする。
ここまでの設定をテクスチャアニメーションとして出力する。

3. テクスチャによるシミュレーションの出力

  1. シーンを保存して $HIP の位置を確定する。これによりテクスチャの出力先が決まる。
      ここでは t2_rbd.hip とする。
  2. /out 以下に行くか、ROP Network ノードを作成しその中に入り、TAB -> Vertex Animation Texture ノードを作成。
      vertex_animation_textures1 ノードが出来る。
  3. vertex_animation_textures1 ノードで、
    1. Method を "Rigid (RBD)" に
    2. Export Node を /obj/torus_object1/dopimport1 に
    3. 出力したいテクスチャ解像度、パスなどを変更しても良い。ここではデフォルトのまま。
  4. Render ボタンをクリックして出力を行なう。

    BBOX MAX と BBBOX MIN の値は後ほど使う。
  5. Render->Mplay->Load Disk Files... を実行、$HIP 以下の export/ ディレクトリに行けば、
    • t2_rbd_mesh.fbx (MPlay のブラウザでは表示されない)
    • t2_rbd_pos.exr
    • t2_rbd_rot.exr
    の3つのファイルが出力されている。

4. Unreal でのテクスチャアニメーションの読み込み

  1. Unreal 4.14.1 を起動。SideFXSamples.uproject を開く。
  2. 上で作成した MyFile をクリックして中に入り、Add New の隣にある Import ボタンをクリック。開いたブラウザで上で作成した t2_rbd_mesh.fbx、t2_rbd_pos.exr、t2_rbd_rot.exr をまとめて選択し、まとめてインポートする。
    • FBX Import Options パネルが表示された場合には、一番下の Import All ボタンを押して次に進む。
    • メッセージログパネルは閉じるだけでよい。
    • コンテンツブラウザにファイルが3つインポートされた。
  3. インポートされたファイルのある部分で RMB->Materials&Textures->Material Instance を実行。出来たマテリアルの名前を t2_rbd とする。
  4. t2_rbd をダブルクリックして、マテリアルを開き、Details 以下の Parent の部分、None となっているところをクリックし、ポップアップメニューを表示、Browse のテキストフィールドに "rigid" などと入力して、M_RigidVertexAnimation を選択。
  5. rotation_texture と translation_texture のトグルをそれぞれオンにして、
    • rotation_texture には、t2_rbd_rot
    • translation_texture には、t2_rbd_pos
    を指定。
  6. 少し下にスクロールして、
    • Number of Frames のトグルをオンにして、値を 119にする。
    • PivotMax は、ROP での BBOX MAX の値。 2.25 を入力する。
    • PivotMin は、ROP での BBOX MIN の値。 -0.75 を入力する。
    • speed は今はそのまま 0.05。
  7. Save アイコンをクリックして保存。パネルを閉じる。
  8. コンテンツブラウザで、t2_rbd_mesh を見つけ、ダブルクリックして、パネルを開く。
  9. Materials 以下 Element0 の右側の WroldGridMaterialとなっているところをクリックしてメニューを開き、t2_rbd マテリアルを指定。
  10. 下に少しスクロールしトグルの集まりから Use Full Precision UVs を見つけ、オンにする。
  11. さらに下に少しスクロールして、Apply Changes ボタンをクリック。パネルを閉じる。
  12. コンテンツブラウザから t2_rbd をビューポートにドラッグ&ドロップ。右下の Transform の部分で、Scale をすべて100 にする。
  13. シミュレーションのスピードが遅ければ、コンテンツブラウザから t2_rbd マテリアルを再度開き、PivotMin 直下にある speed パラメータのトグルをオンにし、値を例えば0.3などとしてみる。
これで、バーテックスアニメーションテクスチャによるシミュレーションが出来た。

0 件のコメント:

コメントを投稿