Vellumを使用した枯葉のシミュレーションを紹介します。
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
Vellumのコントロール
今回は、Vellumを使用した枯葉のシミュレーションにチャレンジしたいと思います。Vellumは様々なマテリアルに対応した万能のSolverなので、枯葉のような薄い弾性のあるものを表現するのにはうってつけのアプローチです。
さらに、大量の枯葉でもそこまでストレスを感じずにシミュレーションが行える高速さを兼ね備えており、まさにアーティストフレンドリーな設計となっています。それを可能にしているのが、XPBD(Extended Position Based Dynamics)であり、点位置情報と衝突情報との点をつなげるためのConstraint情報で成り立っています。PBD自体、OpenCLを使用した高速なシミュレーションが可能なので、その恩恵を十分に感じられるはずです。
今回は、Vellumを2段構えにし、配置とモーションを分けています。また、モーションのコントロールには、Pyroを用いたVelocityのFieldを使用して、リアリティのある動きを追加するためのワークフローを紹介したいと思います。
今回のHoudiniプロジェクトデータはこちら01 Source Point Flow
ソースポイントのセッティングを解説します。
まず、コリジョンとなるジオメトリを読み込み、VDB等を利用して簡易的なモデルへリダクションしておきます。精度やジオメトリの構造にもよりますが、複雑すぎるとVellumのシミュレーションに悪影響を与えかねないのと、なるべくシミュレーションコストを下げる意味でも、整理しておくと良いでしょう【A】【1】。
次に、今回のモチーフとなる、枯葉を準備しておきます。これはHoudini内で作成しても他からジオメトリをインポートしても良いので、配置しやすいように整理して数パターン準備しておきます【B】。
枯葉を配置するPointを作成します。今回は、枯葉を発生させるのではなく、あらかじめ想定したPointを作成しておきます。体積を持ったエリアを作成し【C】、Point from Volume SOP【D】を使ってPointを作成し、Relax Point SOP【E】で3D空間上でリラックスをかけ、葉が重ならないようにします。Attribute Randomize SOP【F】を使って、コピーした際にランダムな回転がかかるように、法線をあらかじめランダムな方向へ向けておきます。これらをCopy Stamp SOP【G】を使って配置します。Stampを使って、Pointごとにジオメトリが切り替わるように、Switch SOP【H】を駆使して配置していきます。これによって、自動的にジオメトリの種類をランダムに作成できます【2】。
ジオメトリの準備が終わったら、これをVellum Constraints SOP【I】で、ClothのConstraintタイプにします。今回は特別なセッティングはしていませんが、必要であれば葉の硬さなどに合わせて調整をします。
Vellum Solver SOP【J】を使って、配置用のシミュレーションを行います。この際、Substepは少し標準よりも精度を上げた方が、よりビビりの少ないきれいな配置が行えます【3】。また、配置し終わったシミュレーションが動き続けないように、Sleepの設定もしておきます【4】。
Vellum I/O SOP【K】でキャッシュをし、Vellum Pack SOP【L】でジオメトリとConstraintをPack化します。それを一気にTime Shift SOP【M】で最終フレームでフリーズして、配置のシミュレーションが完了です【5】。
02 Velocity Field
Velocity Fieldを作成します。
Vellumの最終シミュレーション前に、まずVelocity Fieldを作成していきます。通常のPOP Forceなどとは異なり、実際の気流の動きを用いることで、よりリアリティのある動きを作成するねらいがあります。
まず、PyroのソースとなるVolumeを作成していきます。今回は、コリジョンの両脇から可視化用の煙を発生させたいと思います。ジオメトリにPyro SourceからPointを作り、Attributeを調整します。このときに、Point Velocity SOPなどでVelocityのAttributeも作成しておくと、風の流れをコントロールしやすいです【A】。このPointを、Volume Rasterize Attributes SOP【B】を使ってVolumeに変換します。
Dopnet【C】の中に、Smokeのセットアップをしていきます。今回はSparseを使用しました。Pyro Solverで煙の大まかな動きを調整します。今回はBuoyancyを使用せず、浮力ではなくVelocityとGas Axis Force DOP【D】を使ったコントロールを行います。Gas Axis Force SOPはHoudini 19 から一新されたForceで、流体に回転や方向などの動きを追加できるものです。Gas Curve Forceとも似ていますが、このオペレータは直線的なコントロールになります【1】。
シミュレーションをDOP I/O【E】でSOPに呼び出して、キャッシュを取ります【F】。最終的にVelのFieldのみを残して完成です【G】【2】。
03 Vellum Flow
最終的なVellumのシミュレーションを行います。
最後に、Velocity Fieldを使って、Vellumの最終的なシミュレーションを行います。VellumのConstraintの設定は配置の際に終わっていますので、再度動きを付けてSolveし直します。まず、Vellum Unpack SOP【A】でジオメトリとConstraintに分けます。注意点としては、配置の際にSleepを使用していますので、不要なAttributeが存在します。"stopped"というAttributeが停止情報をもっているため、シミュレーションが始まっても動かない状況になります。そのため、Attribute Delete SOP【B】で削除します。これでVellum Solver SOP【C】を使用してチェックし、重力がかかれば問題ありません。
次に、Vellum Solver SOP内に入り、POP Advect by Volume DOP【D】を使って、前項で解説したVelocity Fieldを読み込みます。この際、ForceとしてFieldを使用します。また、Vellum Solver SOPはGroundのCollisionを使用し、Substepは2以上に設定しておきます。
最後に、シミュレーションのキャッシュを取って、完成です【E】【1】。
04 Operators
主要ノードを解説します。
●Gas Axis Force SOP
今回のメインはVellumでしたが、動きのコントロールの肝になっていたのはGas Axis Force SOPです。これはHoudini 19から一新された機能ですが、元々同等の機能としてはGas Curve Forceと言うものが存在しました。
これらは、方向(カーブ)に沿った力、軸に吸い寄せられる力、軸を中心に回転する力の3点がセットになったForceになります。非常に簡単なセットアップで動きをコントロールできるため重宝しますが、言ってしまえばこれだけしかできないので、汎用性に富んでいるとは言い難いです。
しかし、Houdiniのいいところとして、これらのオペレータはHDAで作られており、どういった構造になっているか参照することができます。そのため、知識があればこれらを元にさらにカスタマイズされたForceを作り出すことが可能になります。例えば、これらのForceに新たに乱流を追加したりすることも簡単にできるのです。ぜひ、ありものを使用するだけでなく、さらにステップアップしたカスタマイズにチャレンジしてみてください。
-
「Houdini COOKBOOK +ACADEMY」
Houdiniを基礎から楽しく学ぶオンライン講座
公開日程:毎週金曜日公開(予定)
価格:1,300円(税込)※セットでの割引販売有
※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
cgworld.jp/special/houdinicookbookacademy