だいぶHoudiniにも慣れてきました。最近ではAttribute Noiseノードを使うよりWrangle一つにまとめて記述していったほうがいちいちノードを探す必要がなく、見やすいなーと思っています。
今週の成果はこんな感じです。
ついでにクリキュラの実物も提示しておきます。
なかなかいい感じだと思います。むしろ穴を細かくしすぎたかも。
繭の大きさに対してここまで細かいのはCeranchia(発音不明)かな。
yのスケールを1.5にしたSphereをそれぞれ3つのルートで加工します。
左はVDB Subtractで「引かれる」ボリュームです。
中央はVDB Subtractで大きめの穴をあけるため、Noiseでディスプレイスメントを付けています。与えたノイズの値が0.7以上になったポイントに穴が開きます。
右はノイズに関係なく一定以上の内部をくり抜くためのものです。今見るとこれWrangleで閾値設定からの定数代入でいいじゃん・・・。
そうして出来たVDBボリュームを一度ConvertVDBでポリゴンに戻し、Wrangleでノイズをかけた後、IsoOffsetとScatterでVoronoi Fractureを作成。PolyWireでワイヤーフレーム化した後さらにもう一度VDBにしてReshapeSDFとSmoothSDFで形を整え、ConvertVDBでポリゴンメッシュに変換して完成です。ね?簡単でしょう?(白目)
始めはVoxelの大きさを0.001くらいで設定してたんですが、オブジェクトの計算だけで30分持っていかれました。3回くらい。あまりに重かったのでなんとかして最適化。と言ってもVoxelサイズを形状に影響のない0.002に引き上げただけです。それだけでVoxelの量は8分の1になりますのでだいぶ軽くなりました。ゼミ制作の背景にでも使おうか、というあたり。
ここからは余談ですが、UIって意外と欠点だらけなのかもしれないと思いました。
HoudiniはVEXをノードで扱えるVOPというものがありますが、算術計算などに対してはVOPはありえないレベルで非効率的です。ノードの画面占有率の問題です。簡単な四則演算を計算するために余裕で一画面が埋まるんですよね。
そしてさらに、UIという物自体の無駄の多さ(≠余白の多さ)にも気が付くようになりました。どういうことかと言えば、その時点において必要とされない機能であっても常駐せざるを得ないということ。
例えば、一つのfloat入力を要求するノードがあって、それはUIに数値を入力して加算と乗算の計算をできるとします。そして加算と乗算は同時に行うことができないという条件です。
この場合、常にどちらか一つの機能が使用されないことが確定します。にもかかわらず、UIにおいては使用されない機能のためにも常に表示枠を用意しなければならないという状況になります。
これって文字通り無駄なんですよね。その無駄を省くために折り畳み・プルダウンメニューはあるわけですが結局それらのためにもまた表示枠を使用しますし、変にプルダウンメニューを増やしまくると当然画面の占有率が「無駄を省くためのUI要素」によって無駄に埋まるという。そういう風に考えると無駄のないUIって何なんだろうと思います。
そんなところです。偉そうに語るもんだ。