これは Houdini Apprentice Advent Calendar 2019 1日目の記事です。
初日から奇を衒った内容になってしまいましたが、vex/vopの比較表をまとめてみます。
毎年似たようなこと書いている気がしなくもないです。
はじめに
VOP は VEX のラッパーです。Houdini は実質、 SOP(VOP)+DOP です。
MEL 無しで Maya を使う辛さほどではないと思いますが、VEX なしで Houdini を使いこなすのも難しいです。
DSL(と数学)の実力がそのままDCCアプリケーションでの表現に反映される感覚をひしひし感じます。
参考のチュートリアルを見ていると、VEX と VOP が混ざって結構混乱します。
VOP の操作を VEX でどうするのか都度調べてたりするので、表にまとめてみました。
優劣や使用頻度はともかく、類似度で並べています。
もっと良い方法、比較対象があれば、ご指摘頂けると嬉しいです。
対応表
- Houdini Apprentice 17.5.391
並べてみると、四則演算や制御文をVOPでやる意味はほとんどありません。
HOM (Houdini Object Model)
基本的なノードの操作は以前まとめてみました。VEX の文字列を Python で書いてみます。
余談ですがtextwrap
モジュールで書き込めば、VEXもきれいに整形されます。
import hou
import textwrap
def set_vex():
vex = textwrap.dedent("""\
// Average Neighbouring Points
int n[] = neighbours(0, @ptnum);
vector avgP = @P;
// Loops over all elements of n, setting pt
// to be the value of each element
foreach (int pt; n)
{
avgP += point(0, "P", pt);
}
""")
wrangle = hou.node("/obj/geo1").createNode("attribwrangle")
wrangle.parm("snippet").set(vex)
書けるといえば書けるのですが、そこまで重要ではないですね。
Python AST から VEX にトランスパイルするぐらいでないとインラインで
VEX書き込んでもあまり...
まとめ
ノードベースの弱点は、他人へ技術や知識を移植し辛いことだと思います。
上級者のhip見ろってことだと思いますが...
単発機能だけじゃなく一覧で見るのも理解が深まっていいですね。