Houdini VDBによる移流

SOP内でVDB Advect SOPを使ってポイントを動かしてみた。

 

Houdini VDB Advect test001 from shuichi sakuma on Vimeo.

 

今回のやり方は最初にPointWrangleでポイントごと作成したベクトルアトリビュートを
Volume Wrangle内からポイントクラウドとして読み込んで、近傍ボクセルへ移しておく。

ベクトルフィールドの元となるポイントのアトリビュートは
図のようにサーフェイスの傾斜に沿った下向きのベクトルになっている。
このベクトルは、鉛直下向きのベクトル{0,-1,0}をPolyFrame SOPによって作成した
tangentu、tangentvベクトルに内積計算で投影することで作成した。

2016-07-30_070524

また、VDB Advectによって移流されたポイントがサーフェイスから離れた瞬間に
VDB Advectによるフィールド移流からPoint Wrangleによる重力落下に切り替えている。
よって、今回もDOP系オペレーターは使用せず全てSOPオペレーターで行っている。
今回コリジョン計算はしていないので、100万個以上のポイントでもほぼリアルタイムに近い速度で再生できた。

Volume Wrangle SOPからもポイントクラウドが読めるは自分的には盲点だった。
これができれば、色々なことに応用ができそうだ。