「猫はこたつで丸くなる」という歌があるが、
家にはこたつがないので、エルは床暖房の上で丸くなる。
毎年このクッションでエルが丸くとなると
本格的に冬が到来したことを感じる。
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ノードを使用)
4.Photoshopに読み込みニューラルフィルターを適用(風景ミキサー1回、深度ぼかし1回)
今回、Houdiniからレンダリングした画像は深度情報がない画像だったが
PhotoshopのニューラルフィルタのAIが深度情報を自動生成し、
ニューラルフィルターのぼかし、かすみ、ノイズなどをポスト処理として追加することができた。
ニューラルフィルタはレイヤー情報として保存される。
元画像をどのように作ればベストなのかがわからなかっため、
今回はAO(アンビエントオクルージョン)で出してみた。
今後、ユーザー側でもある程度ニューラルフィルタのコントロールができるようになれば
静止画ではかなり使っていける機能になりそうだ。
Houdini Vellum + VEX
引続きHoudini VellumのR&D。
今回はVellumシミュレーションにコンストレイントによる回転アニメーションを加えてみた。
コンストレイントには通常のキーフレームが入るので、ドラゴンに対するコンストレイントを
通した手打ちの動きをVellumシミュレーションに反映させることが出来る。
槍の動きはVEXで全て制御し、ドラゴンの動きに合わせてタイミング調整した。
VEX制御だと動きの調整が簡単になるため、素早いトライ&エラーが可能になる。
Houdini Vellum 簡易版FEM
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 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)のサイズだと煙のディテールを失わずにシミュレーションできるが
今回はシーンサイズが大きいため、メモリを限界まで使うことになった。