Houdini勉強回。
今回は”Compile Block”と”Invoke Compile Block(SOP)”について。
Invoke Compile Block(SOP)を使うことで、Compile Blockで囲まれた処理を他で再利用することが出来ます。
下図はそのシンプルな例です。
サンプルファイル->188_invoke2.hiplc
ネットワークの左側はグリッドに対してランダムな色を付けているだけのものです。Color(SOP)をCompile Blockで囲んでいます。
対して右側はブタモデルにInvokeノードをつないだものです。
このInvokeノードをCompile Blockを参照するよう設定すると、入力に対して指定したCompile Blockと同じ処理をしてくれます。
上記シーンでの設定は次の通り。
詳しくはサンプルシーンを参照。
どんな時に便利かというと、RBD系の破壊シミュレーションで私は使いました。
昨今のRBD系ノードはマルチIn/Outで複数の情報を一度に取り扱う仕様になっています。
破壊だと、レンダ用モデル、コンストレイント、SIM用プロキシです。
このレンダ用モデルとSIM用プロキシに同じ処理をしたいって場合があるのです。
例えば、何かの条件に合致するパーツだけNameを変更するとか。
今までは、しぶしぶノードをコピーしていました。それだとノード数が多くなるしHoudiniっぽくなくて嫌だったのですが、この方法ならノード数減らせてHoudiniっぽさも損なわれなくて、よいなと思いました。
また、シーン内アセットのように考えることも出来るので、汎用性はとても高いと思います。
複雑なネットワークを組む場合、これでネットワークを少しすっきりさせられるかもしれませんね。
Compile Blockが実装された時は、For Loopを高速化するための機能という印象が強かったのですが、このInvokeとのコンボもなかなかに強力だなぁと思う今日この頃。
以上! また次回。
コメント