2010-11-23

python on Nuke

Nukeでのpythonについて。
まずは、簡単なところから・・・

適当にUIを変更してpythonを編集しやすいようにしておく。 フレームの適当なところで右クリックすると、カスタマイズや追加できるwindowが出るので、その中から「Script Editor」を選んで、pythonをいじれるように調整する。




Script Editorは上がOutput(結果等が表示される)で、下がinput(実際にコードを書いて実行するところ)だ。


 また、PreferenceのScript Editorのタブで「echo python commands to output window」にチェックを入れておけば、全てではないがオペレーションがOutputに反映されるので、ある程度参考にはできる。ただmayaとかの同様の機能ほど優秀でないので、その都度リファレンスなどを見ながら欲しいコマンドを探す必要はあるw

準備が整ったところで、とりあえずpythonで適当な操作を・・・

とりあえず、たとえば新規でBlurノードを作ってみる。

nuke.hogehogehoge.....

というような感じで「nuke.」から始まるコマンドでNuke内のコマンドを呼び出せる。
新たにノードを呼び出し作成する場合は「createNode('hoge')」を用いる。Blurノードを呼び出しければ、

 nuke.createNode('Blur')

を実行すれば


こんな感じで output window に結果が表示され、NodeGraphにBlur1という新たなBlurノードが確認できる。

次に、たとえば、ノードのアトリビュートを操作してみる。まずは、 このBlurノードの[size]の値を取得してみる。「nuke.」の後ろに、ノード名を指定してさらに、そのアトリビュート、この場合[size]の値を・・・という感じで、上から順に重ねていく。実際には・・・

nuke.toNode('Blur1').knob('size').value()

となる。通常ではこの頭に「print」などを付けて値をアウトプットさせるということが多いと思う。付けなくてもoutput windowには表示されるが・・・


値を変更したい場合は「setValue()」をもちいて、

 nuke.toNode('Blur1').knob('size').setValue()

とする。実際には、 「setValue()」の括弧の中に数値などを挿入する。

  nuke.toNode('Blur1').knob('size').setValue(3)
 
こんな感じ。すると・・・


こんな感じで値が変更される。

さらに例えば選択しているノードは

nuke.selectedNode()

と書き表され、Blurノードを選択した状態で

sn = nuke.selectedNode()
sn.knob('size').setValue(10)

とやってみると・・・


となり、選択していた「Blur1」ノードのサイズが変更できた。

もちろん

nuke.selectedNode().knob('size').setValue(0)

とすることも可能だ。

複数選択すると、選択したノードがいわゆる「タプル型」で格納されるので、全てには「setValue()」の値が反映されない。
タプル型というのは リスト のようなものを想像してもらえればわかりやすいと思う。そのリストにあげられた、何番目のノードに対してコマンドを実行するのか?ということを宣言してあげないといけない。このあたりはまた次回説明する。

補足; toNode() だとか、selectedNode() または、createNode() ってのが ある って覚えておけば、それで問題ないかと。

2 comments:

  1. いよいよNuke野郎になる私が通ります。
    すばらしいイントロダクション!参考になります!
    過去ログも併せて参考にさせていただきます:D

    ReplyDelete
  2. ありゃ?Fusionじゃ無かったのでsky?

    まぁ、某.jpに向けてイントロ部分を端折る為の更新みたいなもんですw

    Nuke情報は、カトさんのBlogが大変こゆいです!!

    ReplyDelete