三日月館【別館】開発・制作Tips集
[NUKE] PythonでノードのKnobの値が変更したときの処理を設定する
最終更新:
fumiduki1985
-
view
nukeモジュールのaddKnobChanged()関数を使用すると、プロパティエディタ等でKnobの値が変わったときに実行される関数を設定可能。
キーワード引数のnodeやnodeClassを使用することで、特定種類のノード全てや、特定のノードのみに設定することもできる。
設定した関数を除外する場合は、同じくnukeモジュールのremoveKnobChanged()関数を使用する。
キーワード引数のnodeやnodeClassを使用することで、特定種類のノード全てや、特定のノードのみに設定することもできる。
設定した関数を除外する場合は、同じくnukeモジュールのremoveKnobChanged()関数を使用する。
設定した関数の中で、処理が行われているNodeやKnobを判別したい場合、それぞれnuke.thisNode()、nuke.thisKnob()関数でオブジェクトを取得できる。
addKnobChanged()で設定した処理は、下記のタイミングでも呼び出されるので注意。
詳しくはリファレンスマニュアルを参照のこと。
詳しくはリファレンスマニュアルを参照のこと。
- ノードのプロパティパネルが開いたとき
- ノードのプロパティパネルが閉じたとき
- ノードのinputが更新されたとき
記述例:
import nuke # Knobが変化したときに呼ばれる関数 def func(): nuke.message('Knob changed.') nuke.addKnobChanged(func, nodeClass='Transform') # 全てのTransformノードに処理を追加する nuke.removeKnobChanged(func, nodeClass='Transform') # 処理を除外する nodeObj = nuke.selectedNode() nuke.addKnobChanged(func, node=nodeObj) # nodeObjにのみ処理を追加する nuke.removeKnobChanged(func, node=nodeObj) # 処理を除外する