Vellumを使ったGrainのコントロール例を紹介します。
TEXT_秋元純一 / Junichi Akimoto(トランジスタ・スタジオ/取締役副社長)
日本でも指折りのHoudini アーティスト。
アーティスト業務の傍ら、Houdiniアーティスト育成や布教活動に勤しむ
www.transistorstudio.co.jp
blog.junichiakimoto.com
EDIT_小村仁美 / Hitomi Komura(CGWORLD)
●CGWORLD Online Tutorialsにて特別無料配信中!
【無料】Houdini COOKBOOK +ACADEMY 特別編 ~コロナをやっつけよう!~
-
「Houdini COOKBOOK +ACADEMY」
Houdiniを基礎から楽しく学ぶオンライン講座
公開日程:毎週金曜日公開(予定)
価格:1,300円(税込)※セットでの割引販売有
※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
cgworld.jp/special/houdinicookbookacademy
扱う機会が増えてきたGrain
本連載ではあまり触れてこなかったジャンルのひとつですが、ここに来てGrainについて少し紹介してみようと思います。そこまで使用頻度の高いエフェクトの要素ではないと考えていたため、プライオリティを低めに設定していました。しかし昨今、Houdiniの台頭やVellumの優秀さなどもあいまって、プロジェクトでもそういった要素が増えつつあります。そのため、ぜひこの機会に、可能性を広げる意味でもVellumのGrainを触ってみましょう。
これまでにも、POPベースのGrainは存在していました。ただ、その重さや設定の面倒さなどの理由からなかなかとっかかりがつかめなかったのも事実です。Vellumの場合、そのようなことは一切なく、デザイナーのためのユーザービリティが大変向上していて、直感的に設定できます。多少覚えることも多いですが、あくまでもパラメータ的な要素がほとんどで、基本はSOPベースで設定することが可能です。慣れてくれば、より深いところまで自分でセッティングできるようになると思いますので、まずはトリガーするための基本的なGrainのセッティングを学んでいきましょう。
今回のHoudiniプロジェクトデータはこちら01 Grain Source Flow
ソースのセッティングを解説します。
ベースになるジオメトリ【A】【1】を読み込みます。これに対し、Vellum Configure Grain SOP【B】で、ベースとなるPointを作成します。このノードは、Grainのソースをジオメトリの状態【3】からでも最適な状態で作成することができます。また、整列したPointのパターンをなくすため、Jitterをかけます【4】。このとき、内部的にはシミュレーション時にGrainが破裂しないように、RelaxのIterationがかけられます。また、pscaleやspriteの設定も自動的に作成されます。
Grainの作成は、分割数やJitterの有無にもよりますが非常に重くなる場合がありますので、Vellum I/O SOP【C】でキャッシュを取っておくと、無駄なクッキングをせずに済みます。
GrainのPointに対して、Rest Position SOP【D】でrestのAttributeを作成し、VOP【E】でNoise Deformをかけます。
VDB from Polygons SOPでVolumeを作成し、Volme VOPでDensityにノイズを作成します【F】【5】。このVolumeからScatter SOP【G】でPointを作成します。これは、ClusterのCenter Pointとして使用します。
Cluster SOP【H】を使って、Noise DeformしたGrainに対し、Scatter SOPで作成したCenter PointでclusterのAttributeを作成します。これによって、Grainをclusterごとにグループ分けすることができます【6】。
Clusterの設定が終われば、Wrangle【I】を使用して、restの情報から元のPositionへ戻します。これにより、Clusterにノイズをかけることができます【7】。
ここまでの一連を、Vellum I/O SOP【J】で改めてキャッシュを取っておきます。
次に、徐々に崩壊するためのエリア指定を行います。改めてVOP【K】を使ってNoise Deformをかけます。あえてCluster側と分けているのは、ノイズの具合を別々に変えたい場合に備えるためです。
VOP【L】を使って、エリアが広がる中心点からの距離【M】によって侵食するための設定をします。この手のアプローチは様々な場所で使用できるものですので、手駒として覚えておくか、Assetにしておくのも良いと思います。Wrangle【N】で元のPositionに戻せば、エリア指定の完成です【8】。
02 Simulation Flow
シミュレーションのセッティングを解説します。
Grainのキャッシュを取り終えたら、シミュレーションのセッティングをしていきます。まず、Grainのソースジオメトリに対して、VellumのConstraintを作成していきます。Vellum Constraints SOP【A】を使って、Constraint TypeをGlueにします【1】。また、GeometryのGroup Type【2】とTarget GeometryのTarget Group Type【3】をPointsに設定します。これは、GrainがPointとしてそれぞれ作用するためです。
次に、Glue Searchで、Cluster Attribをアクティブにします【4】。これによって、clusterのAttributeによって結びつくことができます。
今回は、Vellum Constraints SOPをもう1つ【B】使用しており、Clusterとそれ以外をそれぞれ異なるGlueの値の設定の下にシミュレーションしています。そのため、もう1つのGlue Search【5】は、Cluster AttribをOFFのままで使用します。また、それぞれのStretchの設定【6】【7】も、強度を変えておきます。こうすることで、まとまる箇所と割れ目の部分の差分が生じます。
続いて、Vellum Solver SOP【C】を作成します。今回は別途重力を設定しますので、Gravityの値は0にしておきます。また、CollisionでGroundを追加しておきます。
Vellum Solver SOP内に入り、Forceの設定をします。Geometry Wrangle DOP【D】を使って、SOPからAttributeをFetchします。まず、Inputのタブで、Input1の値をSOPに変更し、エリアのAttributeをもっているNull【E】を指定します【8】。次に、Codeのタブで、VEXpressionにてAttributeをFetchします【9】。これによって、毎フレーム変動する値を読み込むことができます。
その後、POP Force DOP【F】を使って、GravityのForceを作成します【10】。このForceに対して先ほどFetchしたAttributeを乗算し【11】、徐々に重力がかかる状態にします。
最後に、シミュレーションをキャッシュして完了です【G】【12】。このフローを使用すれば、簡単にCluster化されたGrainの崩壊シミュレーションを作り出すことができます【13】。Clusterの設定やGlueの設定を複雑化すれば、さらにディテールをもったシミュレーションを作り出すことも可能です。
03 Operators
主要ノードを解説します。
●Cluster SOP
Cluster SOPは、今回の例のような、Pointに対してセル状に分割されたAttributeを作成することが単体のノードで行えるものです。k-meansクラスタリングアルゴリズムを使用してPointをグループ分けしています。
今回は分割の中心点をあえて別途指定しましたが、プロジェクトによっては、その方が頻度が高いと考えます。これは、自由度が高まるだけでなく、思わぬ結果になった際の対処が迅速にできるためです。
ClusterのAttributeを作成するだけであれば、VOPを使ったアプローチなども存在しますが、とりわけこのオペレータのおかげで簡単にできるため、かなり特殊な状況でない限りは問題なくグループ分けすることができます。
今回のように中心点からセル状にグループ分けする場合もありますが、そうでない場合としては、煙などのFluidシミュレーションを分割して、ボクセルの最適化をする場合などに使用することもあります。そういった際のセッティングでは欠かせない要素なので、覚えておいて損はないオペレータのひとつです。
-
「Houdini COOKBOOK +ACADEMY」
Houdiniを基礎から楽しく学ぶオンライン講座
公開日程:毎週金曜日公開(予定)
価格:1,300円(税込)※セットでの割引販売有
※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
cgworld.jp/special/houdinicookbookacademy