部屋の隅

なぜ猫は隅っこが好きなのか。
最近のエルはベッドの隅でまったりしていることが多い。
このタイミングでいつも爪を切る。

Houdini RBD その2

HoudiniのRBDを使って地面の崩落シミュレーションを作ってみた。

Houdini RBD 2 from Shuichi Sakuma on Vimeo.

今回は粉砕処理をカメラ基準にして行った。
具体的には以下のように各リジッドボディのカメラ方向基準で前部分30%くらいを再分割した。
最初はForEachブロックでリジッドボディごとにループを回して割っていたが
スピードが遅いためVEXでやる方法に切り替えた。

拙書「Houidni SOP&VEX編」にも書いたが(p474,p505)、detailモードでVEXを実行し
(1回だけの実行)その中でfindattribval系関数を使うことで、ForEachブロックの使用を
多くの場合回避することができる。このやり方のメリットは処理スピード。

 

以下はPyroのボクセルサイズによる煙の出方についてのテスト。
5cm(0.05)のサイズだと煙のディテールを失わずにシミュレーションできるが
今回はシーンサイズが大きいため、メモリを限界まで使うことになった。

Houdini RBD その1

RBDシミュレーションその1。

18.0からRBD Connected Faces、 RBD Disconnected Facesノードが
追加されたので、破片の割れ目検知が簡単にできるようになった。
(以前は自前のVEXでintersect関数でレイを打って破片の隙間判定を行っていた)
これにより、破片の割れ目からパーティクルや煙を出すためのノードネットワークが
かなりシンプルになった。

Houdini カスタムワイヤーデフォーマー

Houdiniで自前のワイヤーデフォーマーを実装してみた。
最初PointDeformでやっていたが、レスト状態が直線のカーブではうまくいかなかったため、
対応可能な自前のデフォーマーをVEXで実装した。

サンプルとして以前Houdiniでモデリングしたラピュタのロボットに対して
花を咲かせるエフェクトを作成してみた。

Houdiniでポリゴンモデリング

Houdini 粒子化

Houdiniで粒子化エフェクトを作成。

全てSOP内で実装し、VEXでカスタムフォースを作った。
最初に指向性を決めるベクトルを作り、それに対してカールノイズとタービューランス(乱流)を
混ぜ合わせたベクトルを加算してポイントを移流させた。
このブレンド率を決めるのに時間がかかった。

Houdini Pyro その2

HoudiniのSparse Pryoを使って衝撃波(Shock Wave)を作ってみた。
今回も大規模なシミュレーションだが、ボクセルサイズを5cmにしても
Sparse Pryoでは実用的なスピードで計算が回った。

Sparse Pryoのおかげで、個人レベルで一台のマシンでの作業でも
大規模な流体計算が可能になったと実感した。

Houdini Pyro その1

HoudiniのSparse Pyroを使って爆発を作ってみた。
基本はシェルフから作成したが、
そのままではリアルな爆発にはならないので
色々とカスタマイズした。

爆破の規模は100立方メートル以上の非常に巨大なものだが、
Sparse Pyroのおかげで作業は比較的軽かった。

巣穴

巣穴へ入るまでの一連の流れ。



あらためて見るとノルウェージャンは尻尾が長いな。

Houdini FLIP その5

引き続きHoudini FLIPの研究。
今回はHoudiniを使って、海外の映画で何度か見たことがある
水の精霊のようなキャラクターを作成してみた。

 

キャラクターは4層構造になっており、1層目はベースの海面、2層目はFLIPシミュレーション、
3層目はホワイトウォーター、4層目は細かな飛沫シミュレーションとなっている。

標準のホワイトウォーターでは今回のような空間を自由に動く波の形状に対応できる
白い泡立ちを作るのが難しかったため、VEXで実装した自前のものを使用した。
キャラクターの動きはKineFXを使用してキーフレームで作成。
キャラクターの全長は6m。

FLIPシミュレーション中もキャラクターの顔の凹凸が認識できるように、
VEXで顔部分のFLIPパーティクルの初速度を緩やかにしたりするような細かな処理も入れている。
今回はコンポジットまで全てHoudiniを使用。



FLIPパーティクル数は1000万程度だが、今まで作ったシーンの中では最大の計算量だった。