Vellumを使ったCurveのコントロール例を紹介します。
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の勉強で挫折した方など
VellumのHairで軟体の動きをつくる
今回取り上げるモチーフはイソギンチャクのような、細長い軟体です。もっとも、今回のアプローチは、それを簡易的に表現する手段に過ぎませんが、おそらく十分な表現力があります。モチーフの構造を把握し、因数分解することで、フローを極限までシンプルにして、必要に応じてディテールを追加していくことこそ、最もHoudiniらしいアプローチだと考えます。
今回は、軟体の表現にVellumのHair、つまりカーブ向けのConstraintを用いたフローになります。それを上手くコントロールすることで、ただの線ではなく、十分な体積を持ったものとして表現可能であり、そのシミュレーションのコストの低さにおいては申し分ないと思います。この手法を用いれば、イソギンチャクに限らず、様々なシチュエーションをクリアできる引き出しになるはずです。
本連載でかなり以前に取り上げた内容と酷似していますが、そのときはまだVellumが存在しておらず、ここまで簡易的に同等の内容が行えませんでした。時代は変化し、当然Houdiniにおけるアプローチにも変化があります。考え方は同じですが、よりシンプルにフローを構築できるのは、Vellumのようなアーティストが直感的に扱いやすいHDAが組み込まれたことが大きいです。
01 Source Flow
ソースのセッティングを解説します。
軟体を生やすためのベースとなるGridを作成し、Mountain SOPなどでNoise Deformをかけて、法線を作成しておきます【A】。この際、ある程度カメラを意識しながらベースを作成することで、無駄のない範囲に収められるようにしましょう。
また、コリジョンとなるジオメトリも作成し、良い場所にレイアウトしておきます【B】。コリジョンジオメトリは、トポロジーをRemesh SOP【C】で調整し、重すぎない程度に整理しておきます。
ベースとジオメトリは、シミュレーション初期に邪魔にならないよう、それぞれオフセットをかけています。例えば地面は法線逆方向に少しオフセットし、コリジョンジオメトリは初期に埋まりなどが発生しないよう上に逃がして、シミュレーション中に定位置に戻るようにアニメーションを付けています【D】。これにてコリジョンジオメトリの準備が整いました【1】。
軟体の軸になるカーブをLine SOP【E】で作成します。変形が十分行える程度の分割数で作成します。また、Texture UV SOP【F】を使ってPoint Attributeとして”uv”を作成しておきます。
次に、軟体の形状を決めるAttributeを作成するために、Wrangle【G】などで”pscale”を作成します。Curveの太さになる”pscale”をRampなど【2】で自由に調整できるため、実際に体積をもたせることなく厚みのあるシミュレーションを行え、非常に簡易的に表現することが可能です。ここが今回の核になります。
カーブをその場に留めるための固定PointをGroup SOP【H】を使って設定しています。これでベースカーブの完成です【3】。
次に、ベースのGridからScatter SOP【I】を使って、点群を作成します。この点群に対して、Noiseなどを使ってランダムな”pscale”を作成しておきます【J】【4】。こうすることで、ベースのカーブを点群にCopy【K】した際に、ランダムな大きさで簡単に複製することが可能になります【5】。これで、シミュレーションのためのソースが完成しました。
02 Simulation Flow
シミュレーションのセッティングを解説します。
ソースのカーブにVellum Constraints SOP【A】を使ってConstraintsの設定をしていきます。今回は、Constraint TypeをHairにセッティング【1】して、カーブそのものをVellum Constraintにしていきます。また、Thicknessの設定をUnchangedにすることで【2】、元のカーブがもっている”pscale”をVellum GeometryのThicknessとして利用することが可能です。
このままでは固定されないため、Pin to Animationで、Pin Pointsをカーブがもっている固定用のPoint Groupに指定します【3】。これにより、ルートになるPointが固定された状態でシミュレーションを行うことができます。
続いて、カーブの柔らかさを設定します。Stretchは伸びに対する設定なので、これはあまり伸びないように強めの値で設定し【4】、Bendは曲げに対する強度なので、こちらはかなり柔らかめに設定しています【5】。これで、シミュレーションの下準備の完了です。
次に、Vellum Solver SOP【B】を使って、シミュレーションをします。今回は水中の表現になるため、Gravityの値は浮力として設定し直します【6】。今回は正確な値と言うより雰囲気で設定しています。また、Visualizeの設定からThicknessを表示して、実際の太さを確認します。ここで、全体の密度感などを再度調整しておきます【7】。
また、Vellum Solver内部に潜り、海流の動きを追加します。今回はPOP Force DOP【C】を使用して、Noiseの動きを元に海流を表現しています。これでシミュレーションの準備が整いました。シミュレーションはFile Cache SOP【D】でキャッシュを取ります。
キャッシュしたカーブジオメトリに対して、Polyframe SOP【E】を使ってTangent方向へNormalとUP Vectorを作成します【8】。これは、メッシュを張る際に、動きに合わせてメッシュのフリップなどが起きないように固定する目的があります。
Sweep SOP【F】を使ってメッシュを作成します。Surface ShapeをRound Tubeにして【9】、カーブがもっている”pscale”に合わせてメッシュを作成します。また、End Capsを追加してTubeの穴を閉じておきます【10】。必要に応じてSweep SOPでUVの設定をしておきます。
最後にFile Cache SOP【G】でジオメトリのキャッシュを取って完成です【11】。
03 Operators
主要ノードを解説します。
●Vellum Constraints SOP
これまで幾度となく登場しているVellum Constraints SOPですが、Hairのタイプは使いどころが限定されるため、現場でも登場頻度は少ないのが実情かと思います。ただ、Hairという名前に引っ張られがちではありますが、実はその名前以上に存在価値の高いものと考えています。
よく使用される場所としては、Furなどの毛の表現や芝生などが挙げられますが、今回イソギンチャクのような軟体にも使用したように、アプローチ次第ではかなり自由度の高いものだと思います。
実際には、鎖やロープ、ケーブル、キャラクターの垂れものなどのセカンダリセットアップのために使用したり、様々なものに流用できます。シンプルな設定で固定ポイントを決められることや”pscale”でコントロールしやすいことなど、SOPレベルでの設定をDOPに持ち込みやすいのもメリットのひとつだと思います。
Vellumの登場以前はWireが主流でしたが、それよりも安定したシミュレーションが望めるだけでなく、低コストでハイクオリティなことも重要です。これから来るであろう、これまではHoudiniで避けられていたフローに対応すべく、カーブのシミュレーションを極めていきましょう。
-
「Houdini COOKBOOK +ACADEMY」
Houdiniを基礎から楽しく学ぶオンライン講座
公開日程:毎週金曜日公開(予定)
価格:1,300円(税込)※セットでの割引販売有
※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など