2016-12-24

setting 2 sims

ここでは二つの独立したシミュレーションを作成し、片方をもう一方によってコントロールする方法を紹介する。具体的には、Pyro (流体)による煙のシミュレーションと、パーティクルのシミュレーションを別々に作成、煙の動きでパーティクルをコントロールできるようにする。

これは、Houdini Advent Calendar 2016 の 25日目の記事です。



使用したビルド: 15.5.673
シーンファイルへのリンクは一番下にあり。

1. Pyro Smoke の作成

初めに、もとになる煙を作成する(ここの1.と同じ)。

  1. Create シェルフから Sphere を作成 (Torus でも Box でも何でも良い)。
  2. 作成したオブジェクトを選択したまま、Pyro シェルフから Billowy Smoke を実行。

    再生すればこんな感じ。
この結果として、Scene Level には3つのノードができた。

  • sphere_object1: 最初に作成した形状
  • pyro_sim: この煙のシミュレーションのネットワーク
  • pyro_import: シミュレーションの結果を表示・レンダリングするためのボリューム(形状)。

2. 独立したパーティクルシミュレーションの追加

今の状態で、例えば Particles シェルフの Location Particle Emitter をクリックすれば、パーティクルシミュレーションのネットワークは、既に存在する pyro_sim の中に統合されてしまう。そうではなく、別のシミュレーションとして作成するには以下の手順で行なう。

  1. 画面右下の脳みそのようなアイコン () をクリックし、Create New Simulation を実行。
      シーンビューに新たな AutoDopNetwork ができ、画面下のシミュレーション名が /obj/AutoDopNetwork となった。

      これによりシェルフからの操作は新しく作成された方になる。
  2. この時点で Particles シェルフの Location Particle Emitter をCtrl キーを押しながらクリック。
      パーティクルエミッターが原点に作成され、このエミッターにまつわるシミュレーションネットワークは、/obj/AutoDopNetwork 以下に作成された。
  3. 再生してみる。
      煙は上に向かって上昇し、発生したパーティクルは下に向かって落下している。

      この二つに相互関連性はない。
  4. AutoDopNetwork 内に行き、gravity1 の バイパスフラグ (ノードの左側の黄色いフラグ) を有効にし、重力の効果を無効にする。
  5. 再び再生してみる。
      今度はパーティクルは重力の影響を受けずに全方向に放射される。

3. パーティクルをPyroで動かす

次にパーティクルが煙の動きによって動くようにする。

  1. パーティクルシミュレーションを構成する /obj/AutoDopNetwork 以下、location ノードと popsolver1 ノードの間に POP Advect by Volumes ノードを挿入する (厳密には merge2 の下流)。
  2. popadvectbyvolumes1 ノードのパラメータビューに行き、Parameters タブ以下の SOP テキストフィールドに、 /obj/pyro_import/import_pyrofields を指定。

    再生をすれば以下の通り。
これでパーティクルがスモークシミュレーションによってコントロールされるようになった。

シーンファイル


最終更新: 2020-12-23

0 件のコメント:

コメントを投稿