よくあるブレンドシェイプというと、同じポイント数ジオメトリ同士を、ソースとターゲットに分けて変化させ、数値で変形具合をコントロールする的なやつだと思います。

けれどポイント数が違うもの同士でモーフさせたいなんて時もあったりなかったりしませんか??
本日ご紹介する商品はそんなお悩みの解決する方法です!(なぜかテレビ通販風…)
※上手くいかないケースもあるので、一つの手段として見てもらえるのがいいです


やり方

今回はsphereにノイズをかけたものと、boxをpos.xをつかってブレンドしてもみます。結果はトップの画像のやつです。

方法は至って簡単。
ブレンドさせたいジオメトリをvdbに変換して、
volumw wrangleで以下のようにするだけ

float surface1 = volumesample(0,"surface",@P);
float surface2 = volumesample(1,"surface",@P);

float w = fit(@P.x,ch("min"), ch("max"), 0, 1);

@surface = fit01(w, surface1, surface2);

ツリーは大したことないですけどこんなんです。


コードをみれば分かると思いますが、それぞれのvolumeの値をvolumesampleで拾って、positionによって作ったウェイト値を使い、
voxelごとの値を変更させています。

ポイントはfit01の結果の値を、各ジオメトリのvolumeの値にしているところです。何言ってるか文章だと分かりづらいですね…
ここの部分です


最初自分はvolumeの値を入れる??(・・?
ってなってましたが、よくよく考えればあぁそうと…
何となくvolumeってだけで少し、取り扱いづらく感じてましたけど、
何のことはないいつもと変わらないデータのコントロールと同じでした。

これを応用すると今まで出来なかったアプローチが結構とれるようになると思います。
vdbコントロールレベルが上がりましたね!٩(ˊᗜˋ*)وやった


今回はこんな感じです。
注意点全然言ってなかったですけど、sdfだとマイナス値が入る事があるので、穴が開いたりします…

そんな時はfogにしてdesnityでやると上手くいったりします。
ニュアンスが変わったり、volumesampleで取得する値が変化するので、
fitの値はあれこれ変わってくるので、いい感じにしてみてください…(o゚Д゚o)

では!

Follow me!

カテゴリー: houdini

PAGE TOP