Houdini勉強メモ #1

半年ほど前からHoudiniを勉強し始めてそこそこ自分でも気に入ったものが作れるようになってきたので、制作したものを雑に解説しつつブログに残していこうと思います。こういうやり方もあるよとかあったらTwitterとかで教えてくれるとありがたい。

基本的にレンダリング部分は解説しません。あとスクショ取るのが面倒なので手元でファイル開いてノード見ながら読まないとわかんない部分多々あります。

今回解説するやつ。
hipファイル
work

editor-ss-01
tubeに点をばらまいて、その点の位置に大きさがバラバラな球体を置く。
その球体からvdbfrompolygons > vdbsmoothsdf > convert でメタボールのポリゴンを作る。(Houdiniにメタボールを作るノードがあったはずだけど使ったことないのでスルー)

メタボールの表面を三角柱が波打つような表現を作っていく。

editor-ss-02

いい感じにpolyreduceでポリゴンを削減して、fuseノードでuniqueを選択して面を構成する点を独立させる。これをやっとかないと後のtridivideがなんかうまくいかない。独立させたぞれぞれの点にpointwrangletriEdge(三角形の周りの辺の意)というグループを割り当てておく。

pointwrangle1

@group_triEdge = 1;

んで、tridivideでそれぞれの面をさらに3つの3角形に分割する。これで3角柱を構成する点が作成できた。smoothノードはお好みで、これをやると3角形の間にいい感じに隙間が作れる。

さらにふたつpointwrangleを繋げる
editor-ss-03

pointwrangle2

@P -= @N * 0.01;

これは全体的に頂点を少し法線と逆方向に縮めている。なんかレンダリングしたときにメタボールの表面に3角柱のポリゴンがちらつくのでその対策。

pointwrangle3

float angle = @P.x*6 + sin(@P.x*5 + @P.y*5) - radians(6*@Frame);
float wave = (sin(angle)+1)*0.5;
wave = 0.2 * pow(wave, 1.5); // waveの値を調整
@P += @N * 0.2 * wave; // 法線方向に変動させる

これで頂点が波打つアニメーションを作っている。
頂点の位置から波の角度(angle)を計算して、その角度をもとに頂点の変動(wave)を計算して頂点を法線方向に変動させている。
このpointwrangletriEdgeのグループが割り当てられていない点(!triEdge)に対して計算させる。
editor-ss-04
3角形の周りの辺にtriEdgeが割り当てられていて、tridivideで作られた点、つまり3角柱の頂点に当たる点にはtriEdgeは割り当てられていないので、これで3角柱の頂点だけを変動させることができる。

radians(6*@Frame)

これはループgifを作るための計算。全体が60フレームだとすると6*60フレームで360度になるのでsin波が一周する。