Houdini FLIP その2

HoudiniのFLIPを使って海を作成してみた。

FLIP パーティクル:約2200万
Whitewater パーティクル:約2000万
計4200万個のパーティクルを使用

岩のテクスチャーはサブスタンスで作成。
RBD(亀)とFLIPは相互作用するよう調整した。
レンダリングはmantra。
ホワイトウォーターの泡っぽい質感は出せたと思う。

 

 

Houdini FLIP その1

Houdini FLIPのテスト。
岩に凹みをつけて、岩が浮き上がった際に水が凹みに溜まるようにしてみた。

レンダリングはRenderMan。
最新のRenderMan23.5では途中でレンダリングが止まってしまうため
Houdini 18.0.532上でRenderMan23.4を使用した。

Houdini FLIP test from Shuichi Sakuma on Vimeo.

Houdini KineFX Spider リグ

Houdini 18.5のKineFXを使って蜘蛛のアニメーションを作ってみた。

今回、蜘蛛の脚の動きにはサイクロイド曲線を使用し
Rig Attribute Wrangleノード内のVEXで制御した。
(サイクロイドとは円が回転するときの円上の点が描く軌跡のこと)
蜘蛛のジョイント階層のルートジョイントの毎フレームの移動量から
サイクロイド曲線上の各脚先の動きを割り出している。

【テスト1】
蜘蛛を動かしながら衝突判定を行った。
蜘蛛の脚先からintersect関数を使って特定方向にレイを打ち、衝突検知を行っている。
衝突した際の姿勢の制御もVEXで行った。

【テスト2】
壁を上るテスト。
平地からのスムーズなトランジションを実現。

以下、サイクロイド曲線を可視化したもの

今回感じたKineFXの強み
・ローカル座標系<–>ワールド座標系の使い分けが簡単にできる
・フルボディIKをプロシージャルに使用できる
・モーションのブレンドをプロシージャルに行える
・どこでどのようなモーション編集を行っているかが一目でわかる
・必要なタイミングでFK・IKを組み込める
・CHOPを簡単に組み込める(蜘蛛の頭の振動を抑えるためにFilter CHOPを使用)

 

Houdini KineFX

Houdini18.5 のKineFXを使って、以前Houdiniでモデリングしたロボットを
動かしてみた。

モーションはmixamo.comからダウンロードしたもの。
ロボットの体型に合わせてモーションの調整を行い、
Vellumで腕のインナーチューブのシミュレーションを行った。

足の接地にはStabilizeJointノード、関節の曲がり角度制限にはFullBodyIKConfFgureJointsノード、重心制御にはIKChainノード、腕のモーション修正にはRigPoseノードを使用した。
今回mixamoのジョイント階層とロボットの階層構造がかなり異なるため、
モーションを移し替えた際にロボットの膝の振動が発生してしまった。
そのためにRigAttributeWrangleでIKのTwist位置を調整するVEXを書いた。
さらにAttachControlGeometryノードを使用し、Vellumシミュレーションのベースとなる
チューブの初期位置を確定した。

KineFXを触ってみた所感だが、SOP内で階層構造を扱うための行列計算が格段にやり易くなった。
数年前に書籍「Houdini SOP&VEX編」を書いているときは、SOP内で階層構造を実現するための
行列計算が大変だった記憶がある。
また、KineFXとVellumの親和性はかなり高そうだ。

そういえば、SideFXのHouidni18.5のデモ動画にも
このタイプのロボットが出ていたな~。流行ってるのかな?

テレワーク中のエル3

自宅のPCは水冷マシンだが、天井がメッシュ構造になっていて
ここからCPUファンの熱が排熱される。

レンダリングを回すとCPUからかなりの熱が出てくるが、
寒い日はエルがここに座って暖をとるようになってしまった。

RenderMan for Houdini その3

今回RenderManのボリュームシェーダと屈折系シェーダのテストを行うために
以下のような海中を泳ぐクラゲのシーンを作成した。

海の中を表現するために大きなコンテナに対してボリュームシェーダを設定。
その上部にエリアライトを置き、ライトとコンテナの間にライトをブロックするための
複数のグリッドを配置した。それをVEXで小刻みに動かして水中に差し込む光を表現した。

Houdini Jellyfish test from Shuichi Sakuma on Vimeo.

クラゲの頭の動きはH18から新しくなったBendノードとsin関数を組み合わせて制御。
クラゲの触手はVellumを使って動かした。

シーンに大量の屈折体やボリュームシェーダが割り当てられたスケールの大きいオブジェクトが
ある場合でも、RenderManは極端にレンダリングスピードが落ちることがない。
このあたりが標準レンダラーのmantraとは違う点。

今回少しだけRenderManカスタムシェーダを書いたが、SeExprは必要な関数が
一通り揃ってるため使いやすかった。
(以前ブログにも書いたがSeExprはWalt Disney Animation Studiosが策定した
エクスプレッション言語)
http://wdas.github.io/SeExpr/doxygen/userdoc.html

シェーダ内でSeExpr関数を使う際には以下の本が役に立った。
REYESが終わってもこの本はまだまだ活躍できる。

 

RenderMan for Houdini

RenderMan for Houdini その2

Houdini18 RBD その1

H18のRBD(RigidBody)ワークフローに慣れるために
高架橋の破壊エフェクトを作ってみた。

H18から、RBDはSOP内でセッティングを行うことができ
ノードネットワークもかなりわかりやすくなっている。
今まで散在していたRBD関連のノードを
うまくアセットにまとめている感じだ。

シミュレーションはキャッシュを取りながらRBD->Pyro->パーティクルの順番で行った。
RBDのシミュレーション結果の速度ベクトルを
パーティクル、Ryroシミュレーションで再利用している。

動きの細かい部分に関してはVEXで制御した。

H18 RBD test v.01 from Shuichi Sakuma on Vimeo.

H18 RBD test v.01 flipbook from Shuichi Sakuma on Vimeo.