>   >  Houdini Cook Book:Vol.105 Mud FLIP
Vol.105 Mud FLIP

Vol.105 Mud FLIP

FLIPの粘性を利用したシミュレーションをご紹介します。

TEXT_秋元純一 / Junichi Akimoto(トランジスタ・スタジオ/ディレクター)
日本でも指折りのHoudini アーティスト。
手がけてきた作品は数々の賞を受賞している。
代表作に、HIDETAKE TAKAYAMA『Express feat. Silla(mum)』など。
www.transistorstudio.co.jp
blog.junichiakimoto.com


EDIT_小村仁美 / Hitomi Komura(CGWORLD)

●CGWORLD Online Tutorialsにて特別無料配信中!
【無料】Houdini COOKBOOK +ACADEMY 特別編 ~コロナをやっつけよう!~

粘性の混在

今回は、FLIPの粘性のちがいを表現するシミュレーションにチャレンジしていきたいと思います。FLIPの粘性をAttributeでコントロールできることは以前の記事でも紹介しましたが、今回はさらに応用的な使用方法になります。

粘性を直接コントロールするというより温度を利用して粘性を変化させるというやり方にはなりますが、温度そのものを利用したいわけではなく、それぞれちがいのある粘性の橋渡しとして利用していくアプローチです。この橋渡し役は当然温度である必要はないのですが、デフォルトの機能を活用することで、ある程度セットアップを簡略化しています。

このような考え方は、Houdiniを使用する上では非常に重要なので、頭を柔らかくして固定観念に囚われないセットアップを目指しましょう。

今回のHoudiniプロジェクトデータはこちら

01 Source Setup

ソースのセットアップを解説します。


今回のシミュレーションでは、泥を水で溶かす、洗い流すような表現にチャレンジしていきます。まず、FLIPのシミュレーション用にソースの作成を行います。インポートしたジオメトリのサーフェスに対して、OpenVDBを使い、SDFへ変換し外側へ太らせます【A】【1】。地面との接地面だけをさらに太らせたいので、その部分だけ抜き出してVDB Combine SOPで合わせてVDB Smooth SDF SOPで滑らかにし、一度Polygonに変換します【B】。VOP【C】を使ってNoise Deformをかけます【2】

最終的には地面にめり込んでいる部分を引いて【D】、内部を元の形状でくり抜いておきます【E】【3】。このSDFから、Point from Volume SOP【F】を使ってPointを生成します。これが、泥のベースになります【4】

このPointに対して必要なAttributeを作成します【G】

次に、水のエミッタの準備です。ソースになる球体を準備します【H】。これに対して、FLIP Source SOP【I】を使ってエミットの準備をします。このソースに対して、必要なAttributeを作成します【J】。さらに、水の発生にムラをもたせるために、Point Velocity SOP【K】を使ってVelocityにNoiseを追加します【5】

【G】【J】で追加したAttributeは、それぞれ異なる値にしています。泥の方は、初期の粘性が高く、温度をもっておらず、比重が重いものになっています。逆に、水の方は粘性が低く、温度をもち、比重は通常の値となっています。このように異なった値を、温度のちがいを使って橋渡しすることで、粘性や比重を混ぜ合わせていくようなシミュレーションをセットアップしていきます。

このソースには動きをもたせたいため、Motion FXを利用してアニメーションを追加します【L】。Motion FXはCHOP【6】を使った構造になっていて、Transform SOPのParameterに自動的にChannelを追加してくれます【7】

Collisionの準備もしておきましょう。精度を求めたい場合は、SDFを用いてVolume SampleでCollisionを作ることも手のひとつですが、今回は速度優先でPolygonをリダクションし【M】、それをCollisionとしています。

02 Sim Flow

シミュレーションのフローを解説します。


シミュレーションのセットアップをします。まず、CollisionとなるGround Plane【A】とStatic Object【B】を準備します。

続いて、FLIP Object DOP【C】を作成します。このObjectのInitial Dataに、泥のソースPointを読み込みます【1】。次に、Volume Source DOP【D】を使って、水のエミッタを読み込みます。

FLIP Solver DOP【E】を作成し、Viscosity【2】とDensity【3】をAttributeから計算するためのセットアップをしておきます。今回のシミュレーションの要となる設定は、Gas Temperature Update DOP【F】を使用して解決します。

このMicro Solverは、Temperature情報を更新するとともに、付随するViscosity【4】およびDensity【5】の値も更新してくれます。要は、Temperatureの拡散【6】を泥に対する水の浸透として置き換えるようなアプローチと言えます。固まっている泥が、水の浸透によって溶け出していくようなシミュレーションを行なっているのです。

あくまでもフェイクのシミュレーションではありますが、比較的シンプルに再現することができました。本来は溶岩などの表現に用いられるものですが、熱をあくまでも値をミックスするためのブリッジに使用して、熱の拡散を浸透に置き換えれば、今回のような表現も可能です。また、Cooling【7】を設定することで、浸透が落ち着いてまた固まっていくような様子もシミュレーション可能です。

また、シミュレーションの際に、Visualizationの設定にあるAttribute【8】を変更するとそれぞれの特性が確認できるため、パラメータ調整の役に立つと思います。画像はtemperature【9】、viscosity【10】、density【11】に変更した様子です。

次ページ:
03 Operator

その他の連載