>   >  Houdini Cook Book:Vol.107 FLIP Air Resistance
Vol.107 FLIP Air Resistance

Vol.107 FLIP Air Resistance

02 Sim Flow

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


シミュレーションのセッティングをしていきます。まず、FLIP Object DOP【A】を作成します。次にFLIP Solver DOP【B】を作成し、[Volume Motion→Density→Density by Attribute]【1】をONにして、DensityをAttributeから計算するように設定します。

続いて、Volume Source DOP【C】を使用してソースを読み込みます。通常はエミットをする際に用いるこのノードですが、今回はActivationをイニシャルフレームのみにして、エミットさせないように設定しています【2】。これにより、面倒なソースの読み込みを簡単にすることができます。

今回の作例にはあまり関係ないですが、必要に応じてコリジョンも設定します。今回はGroud Planeのみを設定しています【D】。また、Gravity DOP【E】はスローモーション風にするために、値を弱めにしています。

ここから空気抵抗を設定していきます。まず、Gas Match Field DOP【F】を用いて、新たにFieldを作成します。元々ある"surface"のField【3】を利用して、新たに"air_field"を作成します【4】。このとき、Rank【5】やBorder Type【6】もReference Fieldと同等にします。

新たに作成したFieldに対して、Gas Particle to SDF DOP【G】を用いて、ParticleからSDF Fieldを構築していきます。初期化されるFieldを先ほど作成した"air_surface"に設定して、ここにSDFを構築していきます【7】。ParticleのGroupは"water"のみを選択するようにします【8】。また、今回はMethodにClosest Particle Uniform Radiusを用いていますが、これは、Particleの半径を全て均一とみなすことで最も高速に結果を得ることができるというもので、今回はこの設定を使用します【9】

次に、作成したFieldに対してSOP Solver DOP【H】を使用して空気のParticleを作成し、さらにSOP Solver DOP【I】で余分な空気の層を消す設定をしていきます。

空気の層を作成するために、"air_surface"を読み込み、これを"density"に変更します【J】。これによって、Volume VOP【K】でRangeを調整することができ、そのVolumeにPoint from Volume SOP【L】でPointを作成します。このPointにAttribute Create SOP【M】を使って"density"を空気の密度に設定し、視覚の差別化を図るために"Cd"も設定しておきます。また、このPointに対して、"air"のGroupを追加します【N】。これを、"water"のみをインポートしたデータとMergeして空気の層の完成です【10】

ただ、このままだと、空気の層に余分なところが多すぎるので、新たにSOP Solver DOPで余計なParticleを削除します。Particleを読み込み【P】、それに対して"air_surface"のVolume【Q】を用いてGroup【R】を作成します。GroupはPointに対してBounding Volumeを用いて設定します【11】。Volumeは反転して使用し【12】、ISO Surfaceの値は、空気層の厚みを意味しています【13】。最後に、このGroupを利用して余分な空気層を削除して完了です【S】【14】

今回の空気層を用いて落下させた水は、【15】のように落下する際に空気抵抗によって、形状が崩れていきます。自然とディテールも発生してよりリアリティのある挙動を簡単に作り出すことができました。

それに対して、【16】は空気抵抗を用いない通常のFLIPシミュレーションの結果です。同じフレームを見比べてみるとその違いは一目瞭然です。

今回のアプローチは全てのシチュエーションに対応できるものではありませんが、特に巨大な液体に対してはより効果的だと言えます。ただし、その分シミュレーションは重くなってしまうので、そこに注意して使用するのが望ましいでしょう。

03 Operators

主要ノードを解説します。

●Gas Match Field DOP&Gas Particle to SDF

今回紹介するノードは、Gas Match Field DOPGas Particle to SDFです。

Gas Match Field DOPはこれまでも登場している比較的メジャーなMicro Solverではありますが、やはりこういったカスタマイズの際には重要なノードのひとつに挙げられます。新たにFieldを構築するアプローチは、良く行うというより、ほぼ必然となる作業です。その際に、Gas Match Field DOPを上手く利用することで、かなり簡単にFieldを作成することができます。

FieldをイチからDivisionやSizeなどを指定して作成することもできますが、それよりは、同等のものを参照して作成する方が圧倒的に楽です。

また、Gas Particle to SDF DOPも非常に便利なMicro Solverと言えます。似た作用をするノードとして、Gas Particle to Field DOPがあります。こちらは、ParticleのAttributeをFieldに移す作用があり、Gas Particle to SDFは、Particle自体の半径からサンプリングしてSDFを構築するというものです。どちらもParticleからFieldを変更するものですが、そこが大きく異なります。

今回紹介できるのはここまでです。これらのノードを使用してFieldの作成をしてみましたが、実はもっと簡易的に、元からあるSurfaceを利用して同じことをする方法もあります。敢えてFieldを新たに作成することで、今回よりさらに深いカスタマイズを意識したセットアップになっています。


  • 「Houdini COOKBOOK +ACADEMY」
    Houdiniを基礎から楽しく学ぶオンライン講座

    公開日程:毎週金曜日公開(予定)
    価格:1,300円(税込)※セットでの割引販売有
    ※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
    受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
    cgworld.jp/special/houdinicookbookacademy

その他の連載