>   >  Houdini Cook Book:Vol.91 Control by Volume
Vol.91 Control by Volume

Vol.91 Control by Volume

Volumeを用いてParticleを制御します。

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


EDIT_小村仁美 / Hitomi Komura(CGWORLD)



Volumeの利用

今回は、Volumeを使ったParticleの制御を紹介します。Houdiniの特徴として、SOPとDOPの相互関係の親密さが挙げられますが、今回のようなアプローチは非常にHoudiniらしいといえます。Houdiniでは、SOPにおいて、Volumeの扱いやすさが年々向上しています。エフェクトを制作する際には避けて通れないVolumeですが、VDBなどの台頭もさることながら、Volumeを扱うためのツールの豊富さがそれを端的に表していると言えます。

今回特にフォーカスしたいのが、SDFです。SDFはSigned Distance Fieldの略称で、このVolumeは距離のフィールドとして利用できるため、Volumeの境界線までの距離を取得できるのが大きな特徴です。これを利用することで、Particleの制御を大幅に向上させることが可能となります。また、Volumeを使うことで、Particleにより立体的なフィールドの考え方をもたせることができるのも、非常に重宝するポイントです。今回は、簡単な使用方法を解説しつつ、その理解を深めてもらえればと思います。

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

01 SOP Flow


まず、ベースジオメトリ【A】を準備して、ソースとなるPointを作成していきます。Pointであることが必須ではありませんが、今回はわかりやすくPointを使用します。まず、ベースジオメトリのサーフェスに、VOP【B】を使ってノイズの濃淡をAttribute化します。このAttributeを用いて、Scatter SOP【C】のDensity Attributeのパラメータに指定します。このとき、Relax Iterationsは切っておくとスムーズです。これが、表面用のソースとなります【1】


次に、内部用のソースを作成します。今回はVDB from Polygons SOP【D】を用いて、ジオメトリ全体をVDB化します。ここでは調整しやすいようにDistance VDBで作成しますが、名前はdensityとしておくと面倒がありません。VDB Reshape SDF SOPやVDB Smooth SDF SOPを用いて調整し【E】、Convert VDB【F】でFogに変換します。このFogをVolume VOP【G】を用いてノイズとかけ合わせ、Densityにムラをつくり、Scatter SOP【H】でPointを作成します。ノイズを使えばScatterされるPointにムラを出すことができるので非常に簡単です【2】。同等のアプローチはISO Offset SOPでも可能ですが、今回ジオメトリ形状が複雑なので、より軽快に作業できるVDBを選択しています。


続いて、SDFを作成します。まずVDB from Polygons SOP【I】を用いてDistance VDBを作成し、それをConvert VDB SOP【J】でVolumeに変換します。変換せずにVDBのまま使用したい場合は、VDB from Polygons SOPのFill Interiorにチェックをして内部を埋めます。また、Exterior Band Voxelsも必要に応じて増やしましょう。これでSDFの準備ができました【3】


さらに、サーフェスの表面のVelocity Fieldを作成します。まず、PolyFrame SOP【K】でTangent方向にベクトルを作成します。次に、VOP【L】内で、Noise【M】のベクトルとそれぞれのTangentベクトル【N】との内積を作成し、Tangentベクトルとの積を求めます。それぞれを合算して正規化【P】します。これで表面を這うようなNoiseのベクトルをつくり出すことができます【4】



これをSmooth SOP【Q】でさらに滑らかにし、Fluid Source SOP【R】のContainer SettingsをVelocityにします。これでジオメトリのVelocityをVolumeのFieldにすることができます【5】。また、Comb SOP【S】などを用いれば、自由にVelocityの方向を描けるので面白い結果になると思います。


サーフェスのField作成と同じ方法で、ジオメトリから直接Fluid Source SOP【T】を用いてVelocity Fieldを作成します。このとき、Curl Noiseを用いて内部のVelocityを作成します。これで内部のFieldが完成です【6】


次ページ:
02 POP Flow

その他の連載