(かれこれ5、6年前のh11とかh12の頃にやってた事なので、
既知の内容かもしれませんが。。。)
例として、
ropのgeometryノードにパラメーターを追加します。
ここでは、geometry ropが元々持っているパラメーターを、
「Default」と言うフォルダ(タブ)を作ってそちらに全部入れ、
その上で新たに「Backburner」と言う名前のタブを追加してます。
これはデフォルトのパラメーター、
こちらが新たに追加したタブとパラメーター
どうやるか?
Houdiniには、
ノードが作成された直後、用意したスクリプトを実行してくれる仕組みがあります。
・OnCreated.py(どんなノード生成時も実行される)
・ノードタイプ名.py(ノードタイプ名のタイプのノードが作成された時だけ実行)
・ノードタイプ名_oncreated.py(HDAの場合)
上記スクリプトの中でパラメーターを追加するコードを書いておけば、
ノード生成時に独自のパラメーターを追加しておく事が可能です。
・OnCreated.py、ノードタイプ名_oncreated.pyは、
HOUDINI_PATHに通したパスの中の、/scripts/pythonに
ファイルを置いておけば実行してくれます。
・ノードタイプ名.pyは、
ノードはカテゴリ分けされており、
HOUDINI_PATHに通したパスの中の、/scripts/カテゴリ名フォルダにファイルを置いておけばいいです。
パラメーターの作り方
pythonでパラメーターを作成、追加することは可能ですが、
手動でコード書くのはかなりめんどくさい・・・
そこで、houdini上のUIでパラメーターを作成し、
それをpythonコードとして書き出す事ができるので、
書き出しておいて、後はそれを実行することで追加していきます。
パラメーターの追加は以下「Edit Parameter Interface」で
「Backburner」以下追加してます。
houdiniのパラメーターの持ち方
houdiniは、個々のノードが、parmTemplateGroupと言う入れ物を持っており、
この中にパラメーターとなるオブジェクトを持ってます。
各パラメーターは、
parmTemplateと言うクラスから派生したオブジェクトとなっており、
parmTemplateGroupが、それを持っています。
parmTemplate class
http://www.sidefx.com/docs/houdini/hom/hou/ParmTemplate.html
parmTemplateGroup class
http://www.sidefx.com/docs/houdini/hom/hou/ParmTemplateGroup.html
Pythonでノードにパラメーターを追加する方法
以下でまさにサンプルコードが載ってます。
http://www.sidefx.com/docs/houdini/hom/hou/Node.html#parmTemplateGroup
# ノードを作成(/obj以下にgeometryノードを作成)
node = hou.node("/obj").createNode("geo")
# ノードが持つparmTemplateGroup()(箱)を取得
group = node.parmTemplateGroup()
# My Parmsと言うラベルの付いたフォルダを作成
(フォルダはパラメーターのタブに当たります)
folder = hou.FolderParmTemplate("folder", "My Parms")
# フォルダにfloat型の myparm という名前のパラメーターを追加
folder.addParmTemplate(hou.FloatParmTemplate("myparm", "My Parm", 1))
# 最初に取得したparmTemplateGroup(箱)にフォルダごと追加
group.append(folder)
で、最後がポイントなのですが、
上記、group.append(folder) で、
parmTemplateGroup()で取得した箱にフォルダを追加しているのですが、
この時点ではノードにパラメーターは追加されず、何の変化もありません。
このparmTemplateGroup()で取得した箱と言うのは、
あくまでコピーを取得しており、
もはや実際のノードがもつ箱ではないので、
これに何を追加してもノードには反映されません。
ではどうするか、
最後に以下を行うことで追加したパラメーターを持つ箱parmTemplateGroupをセットでき、
めでたくパラメーターを追加することが可能になります。
node.setParmTemplateGroup(group)
0 件のコメント:
コメントを投稿