>   >  Houdini Cook Book:Vol.92 Emit Pack
Vol.92 Emit Pack

Vol.92 Emit Pack

Packを発生させてParticleのように制御します。

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


EDIT_小村仁美 / Hitomi Komura(CGWORLD)



Packを常に発生させるセットアップ

以前、連載Vol.90にてPackをParticleのように扱う方法を紹介しましたが、今回はさらにそれを発展させ、Packを発生させつつRBDとParticleの良いところをハイブリッドさせる方法を取り上げます。通常のRBDはイニシャルフレームで読み込まれたものをシミュレーションしますが、それでは発生のコントロールが難しく、あまりスマートではありません。POPの発生のしくみを応用することで、Packを常に発生させることができます。

以前解説したPackをParticleとして制御したものは、いうなれば、単純なPointとしてシミュレーションしていましたが、今回は、ちゃんとPackのRBDとしてシミュレーションできるようなセットアップが必要になります。そのためには、少し通常よりも複雑なセットアップをしなくてはいけませんが、それもセオリーとして覚えてしまうことで、今後の応用へも活かすことができると思います。

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

01 SOP Flow

ソースの準備をします。

はじめに、コリジョンとなるジオメトリを準備します【A】。次に、Curve SOP【B】を使ってコリジョンを取り巻くようにNURBSカーブを作成します。これがCurve Forceのジオメトリとなります。

その後、Group SOP【C】を使ってルートとなるPointを指定します。このPointに対してSphereをコピーして、ISO Offset SOP【D】を使ってVolumeを作り、そのVolumeに対してScatter SOPで【E】Pointを散布します。ここのPointの数は、毎フレームの発生の数になります。これに、ランダムな"pscale"を作り【F】、Boxをコピーします。

上記のBoxをPackに変換します。通常であればCopy to Points SOP→Pack and Instanceの設定でPack化することができますが、その方法では"name"のAttributeがつかないので、その設定を別途したいと思います。これも、Assemble SOPで対応できますが、毎フレーム発生するPackに対応するためのセットアップ方法を解説します。

Connectivity SOP【G】で繋がっているもの同士のアトリビュート【1】を作成します。次にAttribute Create SOP【H】で"name"のアトリビュートをPrimitiveに対し、Stringのタイプで作成します【2】

Attribute Wrangle SOP【I】を使って、"name"に対してフレームごとに増えていく番号を作成して値を設定します【3】。続いて、Pack SOPにより"name"ごとにPackにします。そのPackに対してAttribute Wrangle SOPを使い【K】"name"のアトリビュートを追加します【4】。これで、カスタムされたAssembleを設定できました。

今回はあまり使用していませんが、例えばPackをレンダリング用のジオメトリに差し替えるなど様々な用途に使えるよう、発生に対応したセットアップと言えます。これで、DOPの下準備が完了です【5】


次ページ:
02 DOP Flow

その他の連載