カテゴリー別アーカイブ: houdini

Houdini19 Crowdシミュレーション

Houdini19でクラウドシミュレーションを行ってみた。

Houdini18.5から追加されたAgent Pose From Rigノードを使用すると
KineFX側(SOP内リグ)からクラウドエージェントのモーションを制御することができる。
これを使って、クラウドを構成するロボットの40%に対して右手を上げるポース、
同じく40%に対して左手を上げるポーズを追加し、それぞれに赤と黄色の花を持たせてみた。
(残りの20%は両腕を下げた通常の歩きモーションとなっている)

今回Solaris内でKarmaでレンダリングしたが、クラウドのマテリアル設定と
モーションブラー設定で躓いたので、その解決方法を書いておく。
まず、SceneImportノードでは以下の設定をしておく。

これによって、Assign Materialノードでクラウドを構成するロボットの各パーツに対して
個別のマテリアル設定ができるようになった。

クラウドに限ってはObjectレベルでGeometryノードにVelocityBlurの設定を入れておいても
Karmaではモーションブラーがレンダリングされないため、Cacheノードを作って
LOPネットワークに挿入することで解決した。この方法は以下のスレッドを参考にした。
https://www.sidefx.com/forum/topic/71305/

また、レンダリングではLOP内でHoudini19から追加されたBackground Plateノードを使って
COP内で実写テンプレートと影を合成した。
https://www.sidefx.com/docs/houdini/nodes/lop/backgroundplate.html

Karmaによってビューポート内でモーションブラーや影つきで結果が確認できるようになったが、
快適に作業するためにはそれなりのCPUパワーが必要だと感じた。

Photoshop ニューラルフィルター

Photoshop(v23)のニューラルフィルターが凄い。
今回簡単なテストを行ってみた。

1.OpenStreetMapで新宿の1ブロックをosmマップとして出力

2.osmマップをHoudiniに読み込んで建物を生成(Labs OSM ImportとLabs OSM Buildingsノードを使用)

3.AOモードでMantraでレンダリング(深度情報なし)

4.Photoshopに読み込みニューラルフィルターを適用(風景ミキサー1回、深度ぼかし1回)

5.完成

今回、Houdiniからレンダリングした画像は深度情報がない画像だったが
PhotoshopのニューラルフィルタのAIが深度情報を自動生成し、
ニューラルフィルターのぼかし、かすみ、ノイズなどをポスト処理として追加することができた。
ニューラルフィルタはレイヤー情報として保存される。

元画像をどのように作ればベストなのかがわからなかっため、
今回はAO(アンビエントオクルージョン)で出してみた。
今後、ユーザー側でもある程度ニューラルフィルタのコントロールができるようになれば
静止画ではかなり使っていける機能になりそうだ。

Houdini Vellum + VEX

引続きHoudini VellumのR&D。

今回はVellumシミュレーションにコンストレイントによる回転アニメーションを加えてみた。
コンストレイントには通常のキーフレームが入るので、ドラゴンに対するコンストレイントを
通した手打ちの動きをVellumシミュレーションに反映させることが出来る。

槍の動きはVEXで全て制御し、ドラゴンの動きに合わせてタイミング調整した。
VEX制御だと動きの調整が簡単になるため、素早いトライ&エラーが可能になる。

Houdini Vellum 簡易版FEM

簡易版FEMとしてVellumを使ったサンプルを作ってみた。
このやり方はFEMと比較すると処理が早いため、1台のPCでも処理が十分回る。

今回はTet Conformノードを使ってドラゴンを四面体で構成しておき
それにVellumコンストレイント(Tetrahedral Stretch)を適用した。

さらに胴体部分に対してNULLに対するコンストレイントを作り、NULLを動かすことで
Vellum Solverでボディ全体の振動を発生させた。

以下はコンストレイントの強さによるボディ振動の違い。

Vellumにはいろいろな可能性がありそうだ。

Houdini Vellum 翼

HoudiniのVellum使って翼のアニメーションを作ってみた。

まずはAttributePaintでマスクを作成。赤はVellumで揺らすポイント、紫はベースメッシュに固定させるポイント。翼の骨付近のポイントはVellumで揺らさずにベースメッシュに追従するようにするため紫になっている。

次にGroupノードのバウンディングボックスを使って翼をグループ化。
これはこの後のBendデフォーマーのため。

Bendで翼のアニメーションづけ。sin関数を使って動かし、翼の可動領域はfit関数で調整。

60*fit(sin(15*@Frame),-1,1,-2,0.5)

その後、Vellum ConstraintsのプリセットClothとPin To Targetを使って
Vellumシミュレーションを行って翼の二次的な揺れアニメーションを設定。
以下はPin To Targetの設定項目。(Clothの方はデフォルトのまま)

実行結果。いい感じにシワができた。

最初Pin To TargetのTarget(ターゲット)って何?と思ったが、
VellumSolverのadvacedタブ内で設定してあった。
First Input、つまりVellumに刺す前の状態のメッシュということ。
(今回はBendでアニメーションした状態のメッシュ)

今回のモデルはフリーモデルを使用。

 

Houdini 薔薇

Houdiniで薔薇をモデリングしてみた。
ベースは以前作ったものがあったので、今回はそれを改良した。
以下はMantraでのレンダリング。SSS(サブサーフェイススキャッタリング)使用。

今回は最初に螺旋カーブを回転しながら複数コピーし、
その後はVEXを使って徐々に花びらの形に近づけていった。
花びらのカール具合はパラメーターから簡単にコントロールできるようにした。
また、枝分かれする葉の部分にはL-systemを使用した(すっかり忘れていたため自分の本で勉強)






 

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