>   >  Houdini Cook Book:Vol. 99 POP Fluid
Vol. 99 POP Fluid

Vol. 99 POP Fluid

低コストなFluidの使用方法を解説します。

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


EDIT_小村仁美 / Hitomi Komura(CGWORLD)



POPでFluid

Houdiniには、これまで大きく3種類のフルイドシミュレーションが存在しました。比較的広範囲で穏やかな動きに最適なVolumeベース、比較的小規模でリアルなディテールに最適なSPH、VolumeとSPHの長所を併せもつハイブリッドタイプのFLIPの3種類です。どれも一長一短があり、シチュエーションによって使い分けます。

ただ、近年ではFLIPの登場回数が増えたと思われます。それはやはりディテールを出しやすいことと、それでいて低コストだからに他なりません。今回紹介するPOP Fluidはひっそりと登場したものの、設計は非常に新しく、リアルな結果よりもそれらしいものを低コストで手に入れたい場合に最適な手法です。

また、POPをベースに構築できるのも魅力的で、操作性にも優れています。今後さらに発展していくであろうこのPOP Fluidは、新しくなったWhitewater Solver DOPのために開発されたPOPノードの1つです。ただ、PBDをベースに設計されており、さらにそのコアのソルバはOpenCLをベースにしているため、非常に高速です。イメージとしては、Particleの動きをそのままPBDベースのFluidに変換してしまうような雰囲気で扱うことが可能になっています。

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

01 SOP Flow

まず、SOPでシミュレーションの下準備をします。今回は、基本的にはPOPのシミュレーションをベースに構築します。動きの軸にはカーブを使ったForceを使用したいので、ベースとなるカーブから作成していきます【A】。作成したカーブを適量でResampleした後、Sweep SOP【B】でメッシュを張ります。その際、NURBSのサーフェスになるように、Cross SectionのCircle【C】をNURBSで作成しておきます。

Sweep SOPのセッティングは、Ramp Parameter【1】とFloat Parameter【2】を追加して、メッシュの形状をコントロールします。chramp()のExpressionを使用して形状にRampの形を流し込みます【3】

このように作成したNURBSのサーフェス【4】を、Carve SOP【D】でカーブをExtractします【5】。これで、螺旋状のカーブを作成することができました。次に、新たにCarve SOP【E】【F】を使って、始点と終点のPointをExtractします。ここに、SourceとなるPointとSinkとなるジオメトリ【G】をコピーします【H】。Source Pointは、Point from Volume SOP【I】を使って作成します。

Point Separation【6】は、DOP内の数値をリファレンスします。Jitter Scale【7】を大きくして、Jitter Seed【8】は$Tで毎フレーム変動するように設定します。Sink用のジオメトリは、終点でコリジョンになるような大きさのPolygonを用意します。これで下準備は完了です【9】

02 POP Simulation

まず、通常のPOPによるParticleシミュレーションフローの構築をします。POP Object DOP【A】を作成し、POP Solver DOP【B】に接続します。続いて、POP Source DOP【C】を作り、Emission TypeはAll Pointsに設定します。これで、SourceのPointからParticleが発生します。Lifeの設定などはせず、基本的にデフォルトのままで問題ありません。

次に、Forceの設定をします。POP Curve Force DOP【D】を使って、SOPで準備したカーブを読み込みます【1】。これにより、カーブに沿った動きになります。この際、3つの値をメインに調整していきます。Follow【2】はカーブに沿って進む力、Suction【3】はカーブに吸い寄せられる力、Orbit【4】はカーブを軸に回転する力になります。これらのバランスで見た目が決まってきます。

また、このParticleにPOP Force DOP【E】を使ってNoiseのForceを追加します。これで、動きにさらなるバリエーションを追加します。POP Drag DOP【F】は動きが激しくなりすぎないように、抵抗をかけるForceです。これも好みで調整しましょう。

最後に、POP Collision Detect DOP【G】を使って、カーブの終点でParticleを削除します。BehaviorのResponseをDieにすることで、衝突したParticleが消されます。これでベースシミュレーションフローが完了です【5】。Velocityの値を可視化することで、より動きを調整しやすくなります。今回、わかりやすいようにVOP【H】でCdの値に変換していますが、Vizualizeの方法は様々です【6】

次ページ:
03 POP Fluid

その他の連載