Whitewater Cache Separation: Part 2

Part 1: シーンの設定 | Part 3: Scene ビューからのアクセス

Whitewater の分割

  • whitewater_sim の中に入り、whitewaterobject1 を選択
  • Guides タブの Color Particles by Type をオンにすれば、Spray, Foam, Bubbles が色分けされて表示される。

    このようにそれぞれのタイプのWhitewater を別キャッシュで出力するのが今回の目的。

  1. whitewater_sim を出て、import_whitewater の中に入る。
  2. Delete ノードを一つ追加、import_whitewater ノードから接続。
  3. 表示フラグをこの delete1 に設定。表示モードを Hide Other Objects にしておくと良いかもしれない。
  4. delete1 のGroup の右端にある三角形から bubbles を選択
    • Operation を Delete Non-Selected
    • Entity を Points に設定。
  5. これにより、bubbles パーティクルのみが表示される。この delete1 ノードを bubbles と名前を変更しておく。
  6. 名前を変更した bubbles ノードを Ctrl+C、Ctrl+Vでもう一つ追加。
    • 名前を foam
    • Group も foam に変更。
  7. もう一度 Ctrl+C、Ctrl+Vでもう一つ追加。
    • 名前を spray
    • Group も spray に変更。
    これら3つの Delete ノードによって、bubbles, foam, spray が別々のノードになった。


    これらのノードを元に Alembic でキャッシュを書き出そうとすると、Houdini 13ではエラーが起き書き出すことが出来ない。Bgeo であれば問題なく書き出すことが可能。これはなぜかというと、1フレーム目に キャッシュすべきパーティクルが存在しないから。注: Houdini 14 では問題なく書き出すことが可能。

    回避策は二つあり、
    1. Whitewaterが発生するフレームから書き始める (今回のシーンでは23フレーム目から)
    2. 固定パーティクルを一つ追加し、Whitewaterパーティクルとマージすることで 1 フレーム目からパーティクルが存在するようにした上で、パーティクルを書き出す。
    ここでは、後者の方法を取る。
  8. パーティクルをマージする際には、両方のパーティクルが同じセットのアトリビュートを持っている必要がある。

  9. 例えば、01_sceneSetup.hip の 1フレーム目で /obj/import_whitewater/import_whitewater 上でMMBクリックすると、 このノードには、
    • 3つのPoint アトリビュート
    • 1つのPrimitive アトリビュート
    • 2つのDetail アトリビュート
    があることがわかる。

    ところが、実際にWhitewaterが発生を始めた 23フレーム目で同じノードをMMBクリックすると、
    • 14のPoint アトリビュート
    • 2つのPrimitive アトリビュート
    • 3つのDetail アトリビュート
    に増加していることがわかる。

    パーティクルを新たに一つ作成し、これだけのアトリビュートを追加するのは正直非常に面倒。
    よって、以下の方法を取る。
  10. 23フレーム目(whitewaterが出現したフレーム以降)に行き、
    /obj/import_whitewater/ 以下で import_whitewaterに deleteノード(delete1)をもう一つ接続
    • Group: 「空白」
    • Operation: Delete Non-Selected
    • Entity: Points
    • Pattern: 0
    これにより、delete1には頂点番号#0のポイントが一つ、そして必要なアトリビュートがすべて含まれた。
  11. このノードを onepoint と名称変更しておく。この状態でノードをロックする。
    ノードのロックには、ネットワークビューでの onepoint ノードの左から2番目の帯をクリック、赤くする。

    これで、フレーム番号に関わらず、常に一つのパーティクルが必要なアトリビュートを伴ってこのノードに存在する。

    この一つだけのパーティクルが邪魔な場合は、Transformノードを挟んで、どこか見えないところに移動しても構わない。

ここまでの設定を行ったのが、 02_deleteGroups.hip。 (854KB zip)

Part 1: シーンの設定 | Part 3: Scene ビューからのアクセス

0 件のコメント:

コメントを投稿