HoudiniのExpressionをFontノードでプレビューする
環境
Houdini Indie 20.5.332
概要
HoudiniのExpressionをテストするときはFontノードを使うとわかりやすい
※一応、ExpressionEditorでprint文を使えば値の中身も見れるらしい、printから読むためにパスを設定するみたいな手間があるので個人的にはfontノードの方が楽(2024/10/09追記)
HoudiniのExpressionについて
HoudiniのExpressionはパラメータ入力欄に記入することで動的に動作させることができるスクリプト。フレームに合わせて変更したい値やパラメータ間の値の紐づけなどを行おうとする場合に利用されることが多い印象がある。
パラメータを右クリックし、「Copy Paramater」→ 参照先パラメータで右クリックし「Paste Relative Reference」をすると相対パスで値の参照式を入力してくれるのだが、この時のスクリプトがExpressionである。
MultiParamBlockでのExpressionは複雑になりがち
UI上から動的にパラメータグループの数を変更することができる機能をMultiParamBlockといい、ForEachノードなどと組み合わせることで要素を増減可能なHDAを構築することができる便利な機能。
・・・なのだが、アトリビュートのリンクなどを行うためにMultiParamBlockとExpressionを組合わせたりすると大体複雑になる。例として以下の画像はMultiParamBlockで動的にキューブを作成するような構造で、MultiParamBlock内でキューブのTransformと頂点カラーを設定できるシンプルなもの。
これをノード内のMultiParamBlock内に設定したExpressionで制御しようと思うと以下のようになってしまう。
translate x に入っているエクスプレッションを抜粋
ch(strcat(strcat("../position", detail("../foreach_count1", "iteration", 0) +1), "x"))
Stringパラメータに至っては出力された値の確認もできない
ファイルパスにかかわるような処理を動的に変更する場合などは利便性が高いのだが上述のように上述のように複雑になりがちで個人的にも苦手意識を持っていた。
Fontノードで値を確認しながらExpressionを作成する
最近Fontノードを触る機会があったのだが、Fontノードは入力した文字列に対して「`」で囲った範囲をエクスプレッション文として評価してくれる。
これを利用して対象ノードと同じ階層などに置いて、簡易なExpressionエディタとして使うと結果と文字列の比較もしやすいのでexpressionの開発効率が目に見えてよくなった。
お勧めです。
Discussion