Created on | Updated on

ノードの再作成に必要なPythonコードをプリントする asCode()

hou.Node.asCode()からの出力を使えば、ノードの作成とパラメータとキーフレームの設定をするHOM APIを学習するのに役に立ちます。

mceclip13.png

 

任意のノードを Python Shell にドラッグするとプロンプトにカーソルが出るので、
そのまま離すとそのノードの Node オブジェクトが生成されます。

______1.pngmceclip1.png

後ろに .asCode() を付けて Enter を入力すると、

mceclip2.png

一気にコードが生成されました。

mceclip3.png

このままだと改行文字(\n)有りで読みにくいので、書き換えます。

 

元の改行文字有りコードを text 変数に格納し、
その text を splitlines() を使って改行文字までを一要素としてリスト化します。
その後 for ループでリストの要素の数(分割した行数)だけループし、
一行ずつ出力します。

mceclip4.png

これで改行は文字ではなく、見やすく出力されました。

mceclip5.png

 

コードは大きく分けて三つに分割されます。

if 文で既に hou_parent が定義されているかを確認し、されていない(None)とき、
対象ノードの親ノード(今回で言う geo2)の Node オブジェクトを hou_parent に格納します。

mceclip7.png

 

続いて対象ノードを定義するコードで、
hou_node には hou_parent の子ノードとして作られた box ノードのオブジェクトが格納されます。

オプションは
run_init_scripts:Trueの場合、ノードタイプに関連した初期化スクリプトが新しいノードに対して実行されます。
load_contents:Trueの場合、サブネットの内容がカスタムサブネットオペレータに対して読み込まれます。
exact_type_name:Trueの場合、ノードのタイプ名がnode_type_nameで指定した通りのままになります。 そうでない場合、指定したnode_type_nameに合致する優先度の高いオペレータタイプを使用することができます。

その hou_node に対して、move() で対象ノードの一に移動させたり、Flag() で各フラグの設定をしたりなどして対象ノードの状態をコピーする処理をします。

mceclip8.png

 

その下はパラメータの設定で、上から順にパラメータを設定していきます。

mceclip11.png

 

最後にデフォルトのエクスプレッション言語を設定し、
必要があれば指定したバージョンのHDA定義から現行バージョンのHDA定義へノードを同期化します。

mceclip12.png

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

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ