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

戦車エクスプレッション

Houdiniを使って戦車のキャタピラアニメーションと
戦車が凹凸地形上を移動するアニメーションをそれぞれ作ってみた。
Wrangle上のVEXで実装している。

 

Tank test 01 from shuichi sakuma on Vimeo.

 

このようなアニメーションはMayaで行うよりも
Houdiniを使った方が遥かにエレガントな方法で作成できる。

戦車はMaya上でフリーモデルを修正し、
それをAlembic経由でHoudiniへ持ち込んで使用した。

今回Maya2016を使ったが、UIがかなり変わった印象。
(”FX”タブができてるし。。。)

2015-09-07_223213

Houdini 落葉シミュレーション

もうすぐ秋(早く夏終わってくれ)
ってことでHoudiniで落葉アニメーションを作ってみた。

 

Houdini leaf-fall sim from shuichi sakuma on Vimeo.

 

葉の色の移り変わりはカスタムシェーダを書くことで実現した。
それぞれの葉は徐々に緑から黄、赤にカラーシフトしていく。
今回シェーダの中でInlineVEXを使ったが、その中ではchramp関数を使用できないことが判明。結局別にrampノードを作る必要があることがわかった。
また変数名に$記号が必要だったりと、通常のVEXpressionとは少し仕様が違う。

動きはパーティクルを使ってノイズフォースによって動かしている。
今回葉に対する処理を行う際に、ForEachノードが絶望的に遅かったので全てWrangleノードで置き換えた。

Houdini L-system 樹木成長アニメーション

今回、Houdiniを使って樹木の成長アニメーションを作ってみた。
元ネタはとなりのトトロの1シーン。

 

Houdini L-system test from shuichi sakuma on Vimeo.

 

ベースとなるのはHoudiniのL-system。
L-systemとは、簡単にいえば再帰をベースにしたパターン生成アルゴリズムの総称。
専用の言語を使ってルールを定義すれば様々なフラクタル図形を作ることができる。
例えば、以下の様なもの。

A=”[&FFFA]///[&FFFA]///[&FFFA]

これは初期文字をAとし、ルールをA=”[&FFFA]///[&FFFA]///[&FFFA]としている。
意味としてはAを見つければ”[&FFFA]///[&FFFA]///[&FFFA]に置換するということ。
これを指定した世代まで再帰ループすると以下の様な図が作成される。

2015-08-15_213020

各文字の意味は、
F(1ユニット進む)、&(枝を垂直に分割), /(異なる方向に枝を向ける),
/(反時計回りにロール)を意味しており、[]で囲まれた部分は枝分かれを意味する。
“コマンドは、生成毎にFコマンドを半分の長さにする。

このルールを変えることで様々な形状の樹木を作成できる。

 

元ネタのシーン。1:17くらいから。

Houdiniを使ったモーフィングアニメーション

Houdiniを使ってモーフィングアニメーションを作ってみた。

モーフィングとは、簡単に言えば形状Aから形状Bへの変形。

HoudiniではMayaの単純なブレンドシェイプのような変形ではなく
異なるトポロジーに対するモーフィングができる。
これはHoudiniのプロシージャルワークフローによって
AからBへ変形する間に様々なロジックを含めることができるため。

今回は、パーティクルをベースに作成しており、パーティクルは次の3つの状態
1.密着フェーズ、2.放出フェーズ、3.ゴール追跡フェーズを順番に遷移する。
それぞれのフェーズにいるパーティクルに対しては個別の処理を行った。

気をつけたのは各フェーズを移行する際のパーティクルのスムースなトランジション。
これはパーティクルのフォースアトリビュート(@force)を調整することで実現した。

 

Houdini morphing test01 from shuichi sakuma on Vimeo.

血管&ivy(ツタ)生成アニメーション

金、土の2日間は筋肉痛。

筋肉痛の原因はリレーを走ったことではなくて、あのエアロビ体操。
毎年「普通のラジオ体操でいいんですけど」って思うが
スポフェスの風物詩みたいになっているのでしょうがない。

 

週末、Houdiniを使って血管生成アニメーションを作ってみた。
さらに、伸ばした血管をツタ生成アニメーションに発展させた。

 

houdini line growing & ivy gen test 01 from shuichi sakuma on Vimeo.

 

 

血管にあたるのはナーブスカーブ。メッシュに沿いながら複雑な軌道を描くように調整した。

2015-07-12_162605

 

そのナーブスカーブをベースにして、ツタの茎や葉を成長タイミング合わせて生やしている。

2015-07-12_173630

 

Houdiniはコピーする際に、アニメーションしているオブジェクトの時間軸をずらしながら
コピーすることもできる。(Mayaの単純な複製機能とは異なる)

Houdiniのコピー機能には無限の可能性がある。

変形を伴う衝突

前回行った衝突シミュレーションの改良版。
作業時間は、毎日やっていたわけでないがおよそ3週間くらい。

houdini car crash test 02 from shuichi sakuma on Vimeo.

 

 

 

備忘録もかねて今回作成した内容を書いておく。

 

 

2015-07-07_135427
今回作成したSOPネットワーク
(図の黄色の四角はメモ書き。後で意味がわかるようにメモ貼りまくり)

 

今回、車と地面との衝撃時における車ボディの一瞬の歪みの表現には
DOP内のFEM(有限要素法)とSOP内のPoint Deformの組み合わせを使用した。
(最初Lattice SOPを使ってFEMから取得したポイントで車を変形しようとしたが
うまくいかなかった)
ちなみにPoint Deform SOPはPBD(Position Based Dynamics)の導入に合わせて
Houdini14から新しく追加されたノード。

車と地面との衝突に関しては今回RBD(Rigid Body Dynamics)は使っていない。

衝突時のボディの細かな凹みには
SOP内で専用のネットワークを作成することで実現した。
凹み生成のために、Point Wrangle SOP内で二種類のノイズの周波数を変えて@Pを変動させた。
周波数を大きめにした細かいノイズをかける直前にメッシュをサブディビジョンしている。

 

このやり方で気をつけなければならないことは衝突時にボディを凹ませた分、
ボディが若干宙に浮いてしまうこと。
(つまりFEMは接地していても、その中の車は宙に浮いている状態)

その隙間を埋めるために車の高さ調整もSOPで行っている。
これは元のFEMのバウンディングボックスと、凹後の車のバウンディングボックスの
地面からの高さを比較し、その差分をY軸方向の移動量として高さ調整することで実現した。

また、FEMの衝突ポイントがどうやっても取得できなかったので
(SOP Solver DOP内のImpactsでも駄目、Impact Analysis DOPでも駄目、
ちなみにDom Import SOPのintrinsicアトリビュートの行列も空)
そのための専用ネットワークをSOPで組んだ。

これには、地面にScatter SOPでポイントをばら撒いておき、色情報を設定してから
AttributeTransfer SOPを使用して色情報(赤)を近傍のFEMポイントに対して
移し変えるやり方を使った。
色が変わったらその近傍で衝突したこととし、色が変わった時間を
そのポイントの衝突時間として記録した。

今回、車のガラスパーツが衝撃で割れるが、衝突の影響を前面のウィンドウガラスまで
届かせるためにトランスファーされた色情報の若干の調整も行っている。(図で赤で示した部分)

2015-07-07_220323

 

その他にも、レンダリング時に衝突時のガラス破片にボロノイエッジではない
元メッシュのエッジを表示させないために
ForEach SOP内で各破片プリミティブにDivide SOPを適用させて
余分なエッジの削除なども行っている。(下図は比較図)

edge

 

一口に「変形を伴う衝突」と言っても、とても奥が深い分野であることを今回再認識した。

今後やるべきこととしては以下の二点
・FEMのパラメータ調整
・完全なプロシージャル化を行いアセット化

 

そういえば今日は七夕か~
特に何もない(笑)

Houdiniの値段

本棚の整理をしていたら
学生の時に買ったCGソフトのカタログ本が出てきた。

1996年の本だから、当時私は大学2年生くらいだろうか。

2015-06-28_174626

当時のHoudini の値段は400万円。

2015-06-28_174825

当時はシリコングラフィックスのワークステーション上で動いていたから
一般人が使えるようなソフトではなかった。

今はHoudiniのフリー版もある時代だから、隔世の感がある。。。

カークラッシュ

Houdiniでカークラッシュアニメーションを作ってみた。
仕事が終わってから、家で3週間ほど作業していた。

ガラスの破片の飛散方向はエクスプレッションでコントロールしている。
地面の衝突時のボディの変形もエクスプレッションで実現した。
衝突時に、どちらの方向にどのくらいの変位量でボディが変形するかを自由に制御できる。

 

houdini car crash test 01 from shuichi sakuma on Vimeo.

動的粉砕&デブリ&煙テスト2

Houdiniを使って、ディザスター(災害)・ムービでよく見る崩落シーンを作ってみた。
要素としては大きな破片、デブリ小片、煙の3つ。
すべて車の位置にあわせてプロシージャルにセットアップしている。

車ボディの振動もエクスプレッションで再現しているが、出来上がりを見ると
あまり意味がなかった。

このシーンの作業中、Houdiniだけでメモリを約24GB使っていたので
これ以上の大規模なシーンを1台のマシンで作るとすると現状のメモリ32GBでは無理っぽい。
近々64GBに増やす予定。

 

dynamic fracture & smoke test 02 from shuichi sakuma on Vimeo.

 

今回作成したHoudiniのSOPネットワーク。
実際には、各ノードに中にさらに別のネットワークもある。

2015-05-25_090613