Created on | Updated on

Houdini でプログラミング:パラメータ

概要

__________2020-10-13_150347.jpg

Houdini での制作は基本的にノードベースであり、プログラミングを必要としません。
しかし Houdini がサポートする PythonやWrangle などの言語を使うことで、これらのノードを制御し、さらに柔軟な表現が可能になります。

本記事では、Python と Wrangle を使ってノードのパラメータを取得、追加する手法を解説します。

パラメータを取得

Wrangle:ch()

mceclip0.png
パラメータを取得するには ch() を使います。
引数に欲しいパラメータへの相対パスを指定することで、そのパラメータを取得し、返り値として使用することができます。

mceclip1.pngmceclip2.png
0.5 * uniform scale を使って box などの入力ジオメトリを大きさに関わらず y=0 に配置するなど、Copy Parameter に似た働きもします。

パラメータを取得するノードは相対パスで指定できるため、Wrangle に入力がないノードのパラメータも参照できます。

Python:parm(), evalParm()

mceclip3.png
Python の場合は parm() を使います。
hou.node() で参照するノードへの相対パスを取り、parm() でパラメータを指定し、eval() で評価します。

mceclip4.png
hou.evalParm() を使って引数にパラメータまでの相対パスを指定すれば、簡潔にまとめることもできます。

パラメータを新規追加

Wrangle:chi(), chf(), chramp()

mceclip4.pngmceclip5.pngmceclip6.png
パラメータを新規で追加したいとき、スクリプトを使わない方法として Edit Parameter Interface から操作する手法があります。

Wrangle からパラメータを追加するには、

mceclip7.png
それぞれの型に合った関数を使い、
mceclip10.png
Wrangle の右にある+ボタンをクリックします。

mceclip8.pngmceclip9.png

Python:hou.ParmTemplateGroup()

Python の場合、テンプレートに沿ってパラメータを生成します。

mceclip13.png
hou.ParmTemplateGroup() でテンプレートを定義し、setTemplateGroup() で Spare を変更します。
その間に ParmTemplate() と append() を使って追加するパラメータを指定します。

mceclip14.png
Spare を確認すると、指定したパラメータ(今回は button)が表示されています。

mceclip15.png
追加できるパラメータとしては上の通りです。

mceclip16.png
先ほどのボタンより多くの要素を追加しました。

ParmTemplateGroup() でテンプレートを定義、xxxParmTemplate() でタプルを定義し、append() で spare に設定します。

mceclip17.pngappend() の順番にパラメータは表示されます。

LabelParmTemplate() でタイトルを設定したり、SeparateParmTemplate() で横線を引いたりと入力を受ける以外の働きをするものもあります。

mceclip18.pngmceclip19.png
記述部分が長くなったり整理が必要になった場合は、def を使って関数として定義することもできます。

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

サポート問い合わせ