voronoi rbd


ここでは Voronoi Fracture を使ったRigid Body Dynamics (RBD) の設定方法、そしてパート2では、それを Houdini Engine Maya プラグインを使って Maya の中で使用する方法を紹介する。

使用したバージョン: Houdini 15.5.532
Maya 2015 SP5
シーンファイルへのリンクは一番下にあり。

Part 1

1. シーン設定

  1. Houdini を起動。
  2. ビューポート内で TAB キーを押し、Test Geometry->Rubber Toy を選択、Enter キーを押して確定。
      原点に Rubber Toy ができ、ネットワークビューパネルには testgeometry_rubbertoy_object1 ノードが出来ている。
  3. testgeometry_rubbertoy_object1 の Translate Y を 5 に設定、上方に移動する。
  4. Rubber Toy オブジェクトを選択したまま、Model タブの Shatter ボタンをクリック。
      /obj/testgeometry_rubbertoy_object1 の中に以下のようなネットワークが出来た。

      このネットワークの詳細は Voronoi Fracture ページを参照。
  5. Network ビューパネルでひとつ上 (/obj) に戻り、testgeometry_rubbertoy_object1 が選択された状態で右側のシェルフから Rigid Bodies シェルフに行き、RBD Fractured Object ツール (左から 5番目) をクリック。表示されるダイアログパネルで "RBD Packed Object" (デフォルト) を選択。
      Network ビューパネルで /obj を見ると、AutoDopNetwork が作成されていることがわかる。この AutoDopNetwork の中でシミュレーションの設定を後ほど行う。
  6. 同じ Rigid Bodies シェルフから Ground Plane ツール (左から 4番目) をクリック。
      衝突用の地面 (groundplane_object1) が出来る。
  7. プレイボタンを押して再生をすれば Rubber Toy オブジェクトが落下して砕ける様子がシミュレーションされているのがわかる。

    この際に /obj/testgeometry_rubbertoy_object1 の中に入り、voronoifracture1 ノードで Visualize Pieces をオンにすれば破片ごとに色付けされ、chunkcenters ノードの Force Total Count を変更すれば破片数を変更可能。上は Force Total Count = 20 の場合。
ここまでが voronoi_rbd.hip。

2. RBD シミュレーション設定

シミュレーションの設定は AutoDopNetwork ノードの中で行う。

  1. Network ビューパネルで /obj/AutoDopNetwork に行き、testgeometry_rubbertoy_object1 を選択。Velocity の値を <0, 5, 5> とする。再生すれば、以下のように前方 (+Z 方向) に飛んで破砕する。
  2. testgeometry_rubbertoy_object1 の Angular Velocity X を 250 に設定する。これにより角速度が与えた。

    ただし、再生してみると地面と衝突する遥か前にばらけだしている。この問題を回避するには、各破片の間にGlue (糊)コンストレインを設定する必要がある。Glue コンストレインは、設定した以上の力が加わった時にコンストレインが外れるようになっている。
  3. これを行うには、Rigid Bodies シェルフの Glue Adjacent Tool をクリック。ビューポートで Rubber Toy オブジェクトを選択し確定。再生すれば衝突するまでオブジェクトは保持され、衝突した衝撃点に近いところだけが破砕される。

    オブジェクト全体が破砕されないのは、Glue Constraint の値が強すぎると言うこと。
  4. Glue Strength の強さを変更するには、AutoDopNetwork 以下の glue_constraint の Strength を変更する。デフォルトでは 10,000 となっているが、これを 500 とする。再生すれば以下の通り。

    うまい具合に衝撃によってのみオブジェクトが破砕されるようになった。
ここまでが voronoi_rbd_glue.hip。

3. オブジェクトの差し替え

Rubber Toy を別のオブジェクトに差し替えても、シミュレーションが同じように動作できるようにする。

  1. Network ビューパネルで /obj/testgeometry_rubbertoy_object1 に入り、TAB->Utility->Switch で Switch ノードを作成。
      switch1 ノードが出来る。
  2. switch1 ノードを testgeometry_rubbertoy1 と voronoifracture1 の結線の上に配置し、switch1 を二つのノード間に挿入する。
  3. switch1 ノードを testgeometry_rubbertoy1 と converttofog1 の結線上に移動し、switch1 の入力が testgeometry_rubbertoy1 で、出力が voronoifracture1 と converttofog1 の二つのノードになるようにする。
  4. Network ビューパネルの /obj/testgeometry_rubbertoy_object1 内で TAB->Test Geometry->Pig Headを実行。
      testgeometry_pighead1 ノードが出来る。
  5. testgeometry_pighead1 を switch1 の入力に接続。switch1 の値を 0 から 1 に変更。

    再生すれば、Rubber Toy で設定したシミュレーションがそのまま Pig Head ジオメトリに適用されることがわかる。
ここまでが voronoi_rbd_glue_switch.hip。

パート2に続く。

シーンファイル

  • voronoi_rbd.zip (333KB)
    • voronoi_rbd.hip: Part 1-1 終了時まで。
    • voronoi_rbd_glue.hip: Part 1-2 終了時まで。
    • voronoi_rbd_glue_switch.hip: Part 1 終了時 (1-3) まで。

0 件のコメント:

コメントを投稿