三日月館【別館】開発・制作Tips集

[NUKE] PythonでノードのKnobの値が変更したときの処理を設定する

最終更新:

fumiduki1985

- view
管理者のみ編集可
nukeモジュールのaddKnobChanged()関数を使用すると、プロパティエディタ等でKnobの値が変わったときに実行される関数を設定可能。
キーワード引数の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)  # 処理を除外する


このページのタグ一覧
NUKE Python プログラミング

記事メニュー
ウィキ募集バナー