Houdini勉強回。
Houdiniについてくるサンプルファイルが、とても勉強になったので復習がてら解説してみようとてするなり。
使用するサンプルファイルは、VellumSmokeSheetです。
サンプルファイルの開き方はこちらの記事参考。
https://www.sidefx.com/docs/houdini/examples/nodes/dop/vellumsolver/VellumSmokeSheet.html
こんな感じに、布の下に入り込んだ空気が押し出されてブワッとなる、みたいなシミュレーションです。
[ネットワーク概要]
上図赤枠部分が、SIM前の仕込み。上図緑枠部分が、シミュレーション。
(a)Cloth設定を付与しGridの端っこをPin留め。(b)”resist”というアトリビュートを付与(シミュレーションで空気抵抗値に使用)、(c)縦にパタパタ移動させる(シミュレーション内でPin留めしたところが影響を受ける)
シミュレーション方法としては2種類、提示されています。面白かったのが、(d)右側の方。以下は、その中のネットワーク。
ネットワーク内は大きく分けて、(e)左の方がVellumのシミュレーション、(d)右の方がSmokeのシミュレーション。
なんとなくの流れは、
[1]:Vellumのシミュレーション(f)
[2]:Vellum形状に厚みを持たせてVDB化(g)
[3]:それをSmoke側のコリジョンとして使用、コリジョンの動きによって Velocity Fieldが更新される(h)
[4]:更新されたVelocity FieldがVellumのシミュレーションに影響を与える(i)
[5]:1に戻る
個人的に目から鱗だったのは、[3]のコリジョンによるVelocity Field更新の部分。
煙が発生しているわけでもないただの空間内で、コリジョンモデルが動くことで、Velocity Fieldが更新されている(空気の流れができている)ことでした。
Vellumの動きによって作られた、Velocity Fieldを可視化したのがこちら。
Smoke Solverは煙(density)をシミュレーションするものという思い込みがあったようで、こういう使い方もあるのかと思いました。
空気の流れを作るだけならdensityは必ずしも必要ないな、と。
これを使って、次のようなのを作ってみました。
上記のコリジョンとVelocity FIeldにフォーカスして、シンプルにしたものです。
一見、コリジョンありにようにも見えますが、衝突の類は一切なし。
パーティクルはジオメトリが動いた際に作られるVelocity Fieldによって動かされています。
Velocityフィールドを可視化したのが、下図。
ネットワークは以下の通りです。
DOPネットワーク内に、SOPネットワークを作成。そこでコリジョンオブジェクトを作り動かす。これをStatic Object DOPノードが読み込んでいます。
Smoke Object(DOP)内の空間をコリジョンが動きまわり、Velocity Fieldが更新されて、空気の流れが生まれる。(左黄色)
そのVelocity Fieldを使って、パーティクルを動かす。(右赤)
左右のネットワークをつなぐMerge(DOP)の設定で、Relationshipの設定が”None”に設定しているので、コリジョンが直接パーティクルには影響していない。
パーティクルを動かすのは、あくまでVelocityフィールド。
煙シミュレーションのプロセスを思い返してみると、確かにそのとおりなのですが、目からウロコでした、はい。
以上、また次回!
面白いです!とても勉強になりました!
また次のサンプルファイルの解説記事も楽しみにしています!