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

Houdini 竜巻シミュレーション

Houdiniを使って竜巻を作ってみた。
冬休みの自由になる時間をほぼ全部つぎこんだ。
結果、時間はかかったが今回色々と勉強になった。

 

Houdini tornade test ver01 from shuichi sakuma on Vimeo.

 

シミュレーションの規模が大きくなると
8コアでもCPUパワーが全然足りなくなる。
作業中のメモリ使用量は30GB近く。
これはネットワークのポイントポイントで
メモリキャッシュをとっているため。

2015-12-28_174627

 

ただ、8コアのPCの場合はレンダリングを回しながら
wordで教科書の原稿も書けるので色々助かる。

調べると個人ではXeonを2個積んだ36コアのマシンまでは購入できるみたいだが
価格帯が昔のシリコングラフィックスのレベルなので購入はとても無理(笑)

宝くじが当たればな~

Houdini RBDをフィールドで動かす

リジッドボディをSOPで作成した竜巻フィールドで動かすテストを行った。

POP系のオペレータはDOP内のGeometry全般を制御するためのマイクロソルバ。
よってパックしたRBDもPOP Advect By Volumesで移流させることができる。
(Gas Advectでも可)

 

2015-12-25_212418

 

今回フィールドによってRBDの加速度、速度、位置を更新し
その動きの違いを確認してみた。

 

1.加速度の更新

update_force from shuichi sakuma on Vimeo.

 

2.速度の更新

update_velocity from shuichi sakuma on Vimeo.

 

3.位置の更新

update_position from shuichi sakuma on Vimeo.

 

POP Advect By Volumesは、SOPから直接フィールドを持ってくるとうまくいかない。
(理由は不明)
代わりにDOPオブジェクトのデータとしてフィールドセットし、それを使用した。

2015-12-25_212944

 

SOP Vector Fieldは以下の設定

1.SOPのボリュームにDOPのフィールドサイズを合わせる
2.ボリュームのパス
3.velociyの効果をフィールド内に留めたい時はConstantに設定
4.読み込むボリュームがvector型の場合は0,1,2に設定(1ボリューム=1プリミティブ)
5.フィールドを毎フレームリフレッシュするためSet Alwaysに設定
6.データ名(わかりやすい名前にしておく)

2015-12-25_220523

Houdini 渦(vorticle)テスト

 

Houdiniの流体シミュレーションで重要になる
渦生成(vorticle)のテストを行ってみた。

 

Houdini vorticle test from shuichi sakuma on Vimeo.

 

最初にSOP内で渦の元となるポイントを作成する。
その際、渦の大きさ(@mag)、渦の影響範囲(@pscale)、渦の回転軸(@up)
アトリビュートをポイントに追加しておけば
DOP内でGas Vorticle Forces DOPがそれらのアトリビュートに従って、
渦を発生させるための力を作成しvelフィールドに足し合わせてくれる。

渦の巻き方は、各種パラメータによってかなり様相を変えるため
それなりのトライ&エラーが必要そうだ。

Houdini スピンドル形状の煙

 

HoudiniのVDBを使ってスピンドル形状の煙を作ってみた。

 

Houdini spindle smoke test from shuichi sakuma on Vimeo.

 

以下流れ。

先導パーティクル(3個)から追従パーティクルをエミット

2015-12-01_043829

 

パーティクル位置に球体をコピー。
この時パーティクルのageアトリビュートを球体のポイントにトランスファーしておく。
ageはパーティクルの年齢(秒)

2015-12-01_043843

 

VDBボリューム化

2015-12-01_043917

 

ボリュームにVolume VOP SOPでノイズを加える

2015-12-01_043943

 

最後に元の球体のageアトリビュートをボリュームからポイントクラウドとして読み込み、
ageに応じてボリュームのdensityを徐々に薄くさせて完成

spindlesmoke

 

VDBボクセルは0.01間隔で作成した。
個人製作においても普通にボリュームデータが使える時代だと
改めて感じた。

Houdini Vex Editor

HoudiniでVEXを書く際、標準のVEXエディターが使いずらいと常に感じていた。

そんな時にフリーのエディタ(Houdini Vex Editor)の存在を知り
本日インストールしてみた。

フリーでこの機能は凄い。
これからのVEXコーディングが捗りそうだ。

Houdini VEX Editor v1.0.5 from paulwinex on Vimeo.

Houdini 群衆シミュレーション

Houdiniで群衆シミュレーションを作ってみた。

群衆機能はHoudiniの標準機能にも用意されているが
今回はPointWrangle SOPのVEXを使ってゼロから実装した。
よってDOPを経由せずにSOP内で完結できる。

群衆アルゴリズムには様々なものがあるが
今回実装したのは一番有名であろうレイノルズの整列、分離、結合、障害物回避の4つ。
障害物はサークルで近似している(画面中央)。
この手のものはポイントクラウドを使えば非常にエレガントにプログラムが書ける。
群集を構成するユニットは1600体いるが、アニメーション再生はほぼリアルタイムにできた。

 

Houdini Boids Test from shuichi sakuma on Vimeo.

Houdini ノイズ関数

Houdiniではノイズ関数が複数用意されており、それぞれの関数で
生成されるノイズは異なる特徴を持っている。

その特徴を把握するために、グリッド状にポイントを作成して
ノイズ関数によってベクトルアトリビュートを作り、
視覚的にベクトルの向きを確認してみた。
ベクトルはY成分を0とし正規化して表示している。

2015-10-24_162016

2015-10-24_162053

 

1. Perlinノイズ(非周期)

2015-10-24_161609

 

2. オリジナルPerlinノイズ

2015-10-24_161658

 

3. Sparse Convolutionノイズ

2015-10-24_161751

 

4. Alligatorノイズ

2015-10-24_161837

Alligatorノイズは@Pに乗算する周波数の値が小さいと
大きさ0のベクトルを返す場合がある。
周波数を上げていくと大きさ0のベクトルは減少していく。

2015-10-24_164404

2015-10-24_164437

 

5. Simplexノイズ

2015-10-25_061540

Houdini Fur テスト

Houdiniを使ってFurのシミュレーションを行ってみた。
セッティングもやり易く、ダイナミクスの計算スピードも早い。
FurのレンダリングにもMantraが予想以上に使える印象。

今度はもう少し複雑なオブジェクトで試してみたい。

 

Houdini Fur Test01 from shuichi sakuma on Vimeo.