2021年12月20日月曜日

オブジェクトをブレンドする 

この記事はHoudini アドベントカレンダー 20日目の記事です。 

ぶっさしのオブジェクトをブレンドした感じに見せる2つのテクニックの紹介です。


---------------------------------------------------------------------------------------------------------------------------

初級編と中級編2つ紹介します。

まずは初級編すごくシンプルです。(初級編は当初空きがあったらApprenticeのカレンダーがあったらそちらに書こうかと思っていたんですが、全てスケジュール埋まってますね。素晴らしいです。)
円柱側(右側)へSphereの法線(N)をattribute transfer で移すのみ!Band widthパラメータで、元の法線は残しつつ境界のみにグラデーションで移せます。



簡単な方法ですが難点としては、ある程度メッシュが細かくないと綺麗にいきせん。
後半の中級編はこの問題は起きません。

---------------------------------------------------------------------------------------------------------------------------

次に中級編です。
こちらは境界に補助ジオメトリをプロシージャルに作成する方法です。その際補助ジオメトリに法線をそれぞれの法線Nを持たすことで綺麗にブレンドして見えます。


まずは全体のネットワーク。


メッシュは細かくなくとも大丈夫です。

重なった部分のメッシュをBooleanで取り出し、Divide SopのRemove Shared Edgeを使い外周のみのジオメトリにします。

その取り出したメッシュにそれぞれ(球と円柱)から法線Nを移します。

その2つの法線Nをブレンドするのですが、内積をとって位置の調整をします。
この法線Nがこの後のSweep Sopで沿わすLineの傾きになります。


以下はSweepの結果。
この作例では球に対して円柱が垂直に立っていてどの境界も同じ角度ですが、
以下のような重なり具合が違う場合、内積の値を位置の調整に使う有用性が分かり易いです。

Sweepで沿わせるLineには、後に使用する終点と始点の分かる様アトリビュートを仕込んでおきます。

Sweepで作っただけでは元ジオメトリの表面と完璧に一致する位置にはないので、RaySopで円柱側に終点側(上記で仕込んだ@mapアトリビュートが1.0)のみ円柱側へ貼り付けます。

同様に始点側(@mapアトリビュートが0)を球に貼り付けます。

以上で形状は完成です。2つのRay共にPoint Intersection Normalを有効にするとそれぞれ球側・円柱側の法線Nを持ってこれスムースにつながります。


最後にストレステストをしてみました。そこそこ複雑な形状やアニメーションさせても有効です。


以上です。

Houdiniアドベントカレンダー2016年から始まりもう6年目ですね。Houdiniのテクニックは過去のものも古くならず有効なものが多いです。今回はAppernticeのカレンダーもすべてスケジュールが埋まっているようなので素晴らしいです。
是非こちらから過去のものやチェックしてみてください。

0 件のコメント :