>   >  Houdini Cook Book:Vol.95 New Smoke
Vol.95 New Smoke

Vol.95 New Smoke

Smokeのセットアップを解説します。

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


EDIT_小村仁美 / Hitomi Komura(CGWORLD)

Houdini 17で新しくなったSmoke

今回は、Houdini 17で新しくなったSmokeへのアプローチを解説していきます。DOP自体の見た目はこれまでとさほど変わらないものの、SOPからDOPへの橋渡しの方法が大きく変わっており、SOPの時点での扱い方にはかなり変化があります。これまではVolumeを使用したアプローチだったものがVDBへと置き換わることで、高精細なシミュレーションの際にその威力を発揮することができるようになりました。

これまでは、SOPからDOPへ渡すためのソースを作成する箇所が大きなボトルネックとなっていました。それがVDBを代用することによって解消され、速度も大きく向上する結果となっています。

事実、Houdiniにおけるシミュレーションは、SOPにおけるセットアップとSOPによる後処理が非常に重要で、そこが他のソフトウェアとの差となっていることを理解しなくてはいけません。DOPのシミュレーション速度や調整のしやすさはあくまでもカスタマイズなどにもよりますが、根本的なボトルネックの解消には、VDBへの対応が欠かせない要因となっています。また、Pointを使用したセットアップのアプローチによって、格段にソーシングのしやすさが向上しています。今回はそういった部分を含めて解説できればと思います。

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

01 SOP Setup

Sourceのセットアップを解説します。

はじめに、SOPでソースの準備をします。これまでは1つのHDAで簡単にセットアップができるようになっており、全ての準備がそれで完結できましたが、Houdini 17からは最低でも2つのノードからセットアップする必要があります。ただ、これは、用意されているHDAを使用する前提で、あくまでもベーシックなアプローチと考えてください。

まず、ソースとなるジオメトリにPyro Source SOP【A】を作成します。このノードによって、ジオメトリが最低限のAttributeをもったPointへ変換されます【1】。InitializeによってSource Smoke【B】へセッティングすると、Smoke用にDensityとTemperatureが作成されます【C】。Particle Separation【D】はScatterされるPointの幅だと考えてください。概ね、SmokeのContainerのDivision程度がディテール保持の最低ラインになってきます。ただ、これもシチュエーションによって異なるので、SourceとSimulationを分けて考えても問題はありません。Mode【E】はSurface Scatterにすると、外周部分のみで、Volume Scatterにすれば、内部にもPointが作られます。Keep InputはインプットしたPointをそのまま使用します。

次に、Attributeに対して、Attribute Noise SOP【F】を使ってNoiseをかけます。これもシチュエーションによって必要かどうか判断してください。今回は、DensityとTemperature【G】に対してNoiseをかけています。このノードを使わず、VOPやWrangleなどを使ってAttributeの値を調整しても同じことですので、最終的に値がどのようになってほしいかによって選択してください。

これらの準備が完了したら、最後にVolume Rasterize Attributes SOP【H】を使って、PointをVDBに変換します。このノードを使うことで、最終的に使用したいVDBへ簡単に変換することができます。Voxel Size【I】はPyro Source SOPのParticle Separationが最低ラインになるようにするとディテールや形状を維持しやすいです。AttributeをPointレベルで調整することが設計の根幹にありますので、一見面倒なアプローチに見えますが、実はコントロール性は格段にアップしています。

これまでも同じようなことはできましたが、今回のバージョンアップでVDBに置き換わり、さらにコントロールしやすい設計になっています。例えば、Noiseがない状態のDensity【2】とAttributeをコントロールした際のDensity【3】のちがいをインタラクティブに確認することも可能です。

Pointを制御することで調整が簡単になっていますので、その効果を試したいと思います。Point Velocity SOP【J】を使って、簡単にPointに対してVelocityを追加したいと思います。こうすることで、PointにVelocityのAttributeが追加されました【4】。さらに、Volume Rasterize Attribute SOP【K】のAttributeに"v"を追加すれば【L】、自動的にVectorのVDBが作成されます。

また、Densityの値をWrangle【M】などを使って徐々に薄くするといったようなことも、Point Attributeを調整するだけで可能になるため、よりSOPライクな制御ができるようになっています。

02 DOP Setup

Simulationのセットアップを解説します。

DOPでのセットアップは、従来のアプローチをある程度踏襲していますが、今回は新たにVolume Source DOP【A】が加わりました。Houdini 16.5まではSource Volume DOPというものがありましたが、名前だけでなくパラメータが大きく変わり、VolumeとFieldのやり取りが非常にわかりやすくなっています。

SOPで作成したSourceのVolumeを指定します【B】。Initializeで、どういったSimulationに使用するSourceなのかセッティングできます。今回はSource Smokeでセッティングしており【C】、Field to MatchによってDensityのFieldへ全てがマッチするようになっています【D】。また、必要になるSource Volumeを読み込み、それに対応するFieldをセットするところまでがInitializeで行われています。例えば、SOPで作成したDensityというVolumeはDensityというFieldへ対応するように設定されています【E】。この場合、Smokeに必要なtemperatureとvelがセットされています。

次ページ:
03 Additional Flow

その他の連載