🐈

HoudiniのExpressionをFontノードでプレビューする

2024/10/03に公開

環境

Houdini Indie 20.5.332

概要

HoudiniのExpressionをテストするときはFontノードを使うとわかりやすい
expression_preview

※一応、ExpressionEditorでprint文を使えば値の中身も見れるらしい、printから読むためにパスを設定するみたいな手間があるので個人的にはfontノードの方が楽(2024/10/09追記)
https://qiita.com/aburafia/items/aaa096e25628b7dcbced

HoudiniのExpressionについて

HoudiniのExpressionはパラメータ入力欄に記入することで動的に動作させることができるスクリプト。フレームに合わせて変更したい値やパラメータ間の値の紐づけなどを行おうとする場合に利用されることが多い印象がある。
https://www.sidefx.com/docs/houdini/expressions/index.html

パラメータを右クリックし、「Copy Paramater」→ 参照先パラメータで右クリックし「Paste Relative Reference」をすると相対パスで値の参照式を入力してくれるのだが、この時のスクリプトがExpressionである。
相対パスの自動入力

MultiParamBlockでのExpressionは複雑になりがち

UI上から動的にパラメータグループの数を変更することができる機能をMultiParamBlockといい、ForEachノードなどと組み合わせることで要素を増減可能なHDAを構築することができる便利な機能。
https://www.sidefx.com/docs/houdini/unreal/parameters.html#multiparams
・・・なのだが、アトリビュートのリンクなどを行うためにMultiParamBlockとExpressionを組合わせたりすると大体複雑になる。

例として以下の画像はMultiParamBlockで動的にキューブを作成するような構造で、MultiParamBlock内でキューブのTransformと頂点カラーを設定できるシンプルなもの。
sample_mulit_param_001

これをノード内のMultiParamBlock内に設定したExpressionで制御しようと思うと以下のようになってしまう。
ノード構造
sample_mulit_param_002

translate x に入っているエクスプレッションを抜粋
ch(strcat(strcat("../position", detail("../foreach_count1", "iteration", 0) +1), "x"))

Stringパラメータに至っては出力された値の確認もできない
Stringパラメータはプレビューされない

ファイルパスにかかわるような処理を動的に変更する場合などは利便性が高いのだが上述のように上述のように複雑になりがちで個人的にも苦手意識を持っていた。

Fontノードで値を確認しながらExpressionを作成する

最近Fontノードを触る機会があったのだが、Fontノードは入力した文字列に対して「`」で囲った範囲をエクスプレッション文として評価してくれる。

これを利用して対象ノードと同じ階層などに置いて、簡易なExpressionエディタとして使うと結果と文字列の比較もしやすいのでexpressionの開発効率が目に見えてよくなった。
FontでExpressionをプレビュー

お勧めです。

Discussion