Created on | Updated on

【Shelf Tool x Python】選択ノードを任意のタイミングで再クックするシェルフツール

Python SOP はスクリプトを書いた後に実行することで入力ジオメトリに変更を加えることができますが、一度実行するとまたスクリプトに変更を加えないと再実行することができません。例えば、print()  を一度出力したコードは二度続けて出力することはできません。

Python SOP に限らず wrangle ノードもスクリプトをノードに保存して、他の Houdini コンポーネントがノードのジオメトリを要求すると、ノードは保存されたスクリプト コードを再クックして実行します。

 

本記事では、選択ノードを任意のタイミングで再クックするスクリプトをシェルフツールに記述して、Python SOP を変更を挟まずに強制的に再クックするシェルフツールを作ります。今回は例として Python SOP を使用していますが、再クックするのは他のノードでも可能です。

 

シェルフツール

mceclip9.png

 

シェルフタブから、 + > New Shelf... を選択

mceclip0.png

Save To, Name, Label をそれそれ任意で変更し、Apply, Accept で保存

mceclip1.png

Python シェルフの空白で右クリック > New Tool... を選択

mceclip2.png

Options タブから Save To, Name, Label, Icon を任意で変更

mceclip3.png

Script タブから以下の通り記述、Script Language が Python になっていることを確認

以下が実行されたとき、選択されているノードすべてに対し再クックを強制する(選択ノードを取得する際に Python SOP  のみなどの条件を付けていないため、Python SOP 以外のノードでも選択状態なら強制クックされます)

mceclip5.png

Hotkeys タブから Network Pane 右端の Edit を選択

mceclip6.png

Context: Network Editor, Action: Force Cook(ここは任意で付けた名前)を確認して、右の + を選択

______1.png

Press a Key と出るので、キーバインドしたいキーを入力(今回は Ctrl+Enter)

______1.png

Apply, Accept で保存して閉じる

 

実際に実行して確認

Python SOP を配置し、print() を記述する

mceclip7.png

Python SOP を選択した状態で Force Cook ツールを選択し、Python SOP の print() が実行されることを確認する
ノードを複数選択した状態でツールを選択すると、選択したノードすべてが再クックされる

mceclip8.png

Ctrl+Enter をキーバインドしたため、Network Editor 内で Ctrl+Enter を入力しても同じく再クックされる。

 

cook()

mceclip0.png

hou.Node.cook() はノードを強制的に再クックするメソッドですが、そのノードには縛りはなく、ノードオブジェクトすべてを強制クックします。

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

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