>   >  Houdini Cook Book:vol.82 For and VOP
vol.82 For and VOP

vol.82 For and VOP

くり返しを利用したエフェクトを解説します。

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


EDIT_小村仁美 / Hitomi Komura(CGWORLD)

くり返し

今回のモチーフは「テスラコイル」です。エフェクト制作をされている方なら一度は耳にしたことがあるのではないでしょうか。筆者は、Houdiniによるエフェクトは大きく2種類あると考えます。それは、シミュレーションによるエフェクトと、プロシージャルモデリングによるエフェクトです。今回は後者のプロシージャルモデリングを駆使したエフェクトを作成していきたいと思います。

Houdiniにおいて、今回のようなアプローチは古典的ではありますが非常に有用であり、なおかつ基礎を学習するにはもってこいの内容です。特にSOPのみをつかってエフェクトを作成することの優位性としては、リアルタイムでシークができるため、シミュレーションの待機時間なくアニメーションの良し悪しを確認できる点にあります。また、通常のシミュレーションでは再現できないエフェクトなどは、SOPを駆使することで表現可能になることがあります。

筆者としては、シミュレーションによるエフェクトよりもSOPを使ったプロシージャルなエフェクトを作成する方が好みです。これは、Houdiniの良さを十分に発揮できるということもありますし、それ以上に、Houdiniでしか表現できないエフェクトをつくることに喜びを感じるからです。今回のアプローチを参考にしていただければ幸いです。

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

01 All Flow

全体のワークフローは下記のようになります。



  • ノードの全体像(左から右に続きます)


まず、Emitterとなるジオメトリを準備します。ジオメトリはPointのNormalをもっている状態で、Scatter SOPを使用しTrunk(幹)のルートになるPointを発生させます【A】【1】。Pointには、Wrangleなどを使用してPoint番号からidのAttributeを作成します。そのPointをRay SOPを使ってCollisionとなるジオメトリにヒットさせます【B】。ヒットさせたPointと元になったPointをAdd SOPのAttributeから接続します【C】【2】


ヒットしなかったPointはFuse SOPを使って消します【D】。次に、繋いだPolygonに対してUVを作成し【E】、それをResample SOPを使って分割します【F】。その後VOPを使用してNoiseを追加していきますが、この手順の詳細に関しては後述します【G】。Noiseが追加できたら、Polyframe SOPを使ってNormalをTangent方向へ作成し【H】、そのNormalを反転します【I】。続いてVOPを使ってラインの太さのAttributeを作成しますが、こちらも後述します【J】。これで、Trunk部分の完成です【3】



続いて、Branch(枝)の作成をしていきます。ここでのポイントはFor Loopを使用したアプローチになります【K】。Branchは枝から枝が生える世代が重なって構成されます。Trunkのフローを何度もコピーしてくり返せばBranchになりますが、何世代に渡ってくり返すかによって手間が変わってきます。そのため、For Loopを使用して1つのフローをくり返します。



  • Block End【L】の設定は、By Count【4】で、Iterationsで世代の数を決定します【5】。また、最後にくり返したデータを合わせて出力するように、Gather MethodをMerge Each Iterationに設定します【6】。Block Begin【M】からMeta Data【N】を作成し、Branchの数【O】がIterationごとにランダムになるようにExpressionを組みます【7】

その他のながれは概ねTrunkのフローと同じです。若干異なるのがNormalの調整です。これはRay SOPで飛ばした際に横に広がりすぎないような調整をVOPで行います【P】。また、BranchのThicknessを設定するVOPも若干異なりますので、後述をご確認ください【Q】。Measure SOPを使って、そのBranchの長さから、Noiseの強さを設定するようなしくみをつくるのも有用です【R】。これですべてのフローの完成になります【8】


次ページ:
02 VOP Flow

その他の連載