概要
Houdini での制作は基本的にノードベースであり、プログラミングを必要としません。
しかし Houdini がサポートする PythonやWrangle などの言語を使うことで、これらのノードを制御し、さらに柔軟な表現が可能になります。
本記事では、Python と Wrangle を使ってノードのパラメータを取得、追加する手法を解説します。
パラメータを取得
Wrangle:ch()
パラメータを取得するには ch() を使います。
引数に欲しいパラメータへの相対パスを指定することで、そのパラメータを取得し、返り値として使用することができます。
0.5 * uniform scale を使って box などの入力ジオメトリを大きさに関わらず y=0 に配置するなど、Copy Parameter に似た働きもします。
パラメータを取得するノードは相対パスで指定できるため、Wrangle に入力がないノードのパラメータも参照できます。
Python:parm(), evalParm()
Python の場合は parm() を使います。
hou.node() で参照するノードへの相対パスを取り、parm() でパラメータを指定し、eval() で評価します。
hou.evalParm() を使って引数にパラメータまでの相対パスを指定すれば、簡潔にまとめることもできます。
パラメータを新規追加
Wrangle:chi(), chf(), chramp()
パラメータを新規で追加したいとき、スクリプトを使わない方法として Edit Parameter Interface から操作する手法があります。
Wrangle からパラメータを追加するには、
それぞれの型に合った関数を使い、
Wrangle の右にある+ボタンをクリックします。
Python:hou.ParmTemplateGroup()
Python の場合、テンプレートに沿ってパラメータを生成します。
hou.ParmTemplateGroup() でテンプレートを定義し、setTemplateGroup() で Spare を変更します。
その間に ParmTemplate() と append() を使って追加するパラメータを指定します。
Spare を確認すると、指定したパラメータ(今回は button)が表示されています。
追加できるパラメータとしては上の通りです。
先ほどのボタンより多くの要素を追加しました。
ParmTemplateGroup() でテンプレートを定義、xxxParmTemplate() でタプルを定義し、append() で spare に設定します。
append() の順番にパラメータは表示されます。
LabelParmTemplate() でタイトルを設定したり、SeparateParmTemplate() で横線を引いたりと入力を受ける以外の働きをするものもあります。
記述部分が長くなったり整理が必要になった場合は、def を使って関数として定義することもできます。