2017-05-24

Attribute Transfer and SOP Solver

球の落下シミュレーションで、球が落下した部分の地面の色を Attribute Transfer を使って変える方法、そしてSOP Solver を使い色が軌跡として残るようにする方法をここにまとめました。



使用したビルド: 16.0.618
シーンファイルへのリンクはこちらにあり。

1. 球の作成

  1. Ctrl キーを押しながら、Create シェルフから Sphere を実行、Sphere を原点に作成。
      ネットワークエディタ内に sphere_object1 ができた。
  2. sphere_object1 の中に入り、TAB->Grid を実行。
      grid1 ができた。
  3. grid1 のパラメータを以下のように変更。
    • Size を 20x20 に
    • Center を 0, 4, 0 (など) に、少し持ち上げる。
    • Rows と Columns を 6x6 (など) に
  4. 同じく sphere_object1 の中で、TAB->Copy To Points を実行。
      copytopoints1 ができた。
  5. copytopoints1 のパラメータを以下のように変更。
    • Pack and Instance をオンに
  6. U キーを押し上に上がる。

2. 地面形状の作成

  1. Ctrl キーを押しながら、Create シェルフで Grid を実行、Grid を原点に作成。
      ネットワークエディタ内に grid_object1 ができた。
  2. grid_object1 の中に入り、grid1 のパラメータを以下のように変更。
    • Size を 40x40 に
    • Rows と Columns を 100x100 (など) に
  3. grid1 の出力から TAB->Mountain を実行。
      mountain1 ができた。
  4. mountain1 のパラメータを以下のように変更。
    • Height を 10 に
    • Scale を 10, 10, 10 に
    これで落下する球体グループと衝突地面の2種類の形状が出来た。次に、RBD の設定に移る。

3. RBD の設定

  1. ネットワークエディタで sphere_object1 を選択、Rigid Bodies シェルフから RBD Fractured Object ツールを実行。表示される小さなパネルで、RBD Packed Object を選択。
      ネットワークエディタ内に AutoDopNetwork ができた。再生すれば、球体が落下し始めるが、地面にぶつからずに突き抜ける。
  2. grid_object1 を選択し、 Collisions シェルフの Static Object を実行。
      grid_object1 が衝突面となるが、再生すると、球体は地面にぶつかる前に静止してしまう。
  3. AutoDopNetwork 内に行き、 grid_object1 を選択、パラメータビューで下にスクロール、Display Geometry をオフにする。
  4. Collision タブの Bullet Data タブを開き、Show Guide Geometry をオンにする。すると、衝突形状が地面形状のバウンディングボックスで設定されているのがわかる。

      これは その下にある Geometry Representation が Convex Hull になっているため。
  5. Geometry Representation を Convex Hull から Concave に変更する。

      Collisions タブすぐ上の Display Geometry をオフにすると、Collsion 設定が青で地形の通りに設定されているのがわかる。
  6. 設定が確認できたら、色の設定は元に戻しておくのが良い。
    • Show Guide Geometry をオフ
    • Display Geometry をオン
これで衝突の設定が完成。次に進む場合こちら

3 件のコメント:

  1. 始めまして、Houdini初心者です。
    質問なのですが
    『1. Attribute Transfer の設定の2.object_merge1 を spheres と名称変更し、Ctrl+C、Ctrl +V で複製、新しく出来たノードを terrain とする。』という部分なのですがこれをする理由が分からないのですがこれは何のために行う作業なのでしょうか?

    返信削除
    返信
    1. こんにちは、コメント有難うございます。要らないですね。
      コメントアウトしました。
      書き始めた時は、/obj 以下に Geometry ノードをもう一つ作っていてその中に球と地面の両方を object_merge で持って来ていたのだと思います。コメントアウトを正しくしていないようでした。

      削除
    2. 回答ありがとうございます。
      なんとか再現することができました。
      ほんとにありがとうございました。
      ブログの更新頑張ってください。

      削除