3/18/2012

NukeでPythonを使ってみる その1

今回からNukeでのPythonの基本的な使い方について解説します。

NukeにもMayaやMaxと同じようにNukeの機能の多くをコマンドで操作することができます。Nukeでは標準でPythonを使用します。



WindowsタブからScript Editorを選択します。下がinput windowで上がoutput windowになります。


PreferencesのScript Editorタブでecho python commands to output windowにチェックを入れると、操作したときにPythonコマンドがoutput windowに表示されるものもあるので、コマンドを確認することができます。
clear input windowon successful script executionのチェックをはずしておくと入力されたコマンドが実行されたときにinput window コマンドがクリアされなくなります。


はじめにselectedNode()について解説します。

nuke.selectedNode()は選択された単一のノードを返します。複数のノードを選択した場合は最後に選択したノードを返します。

Blurノードをひとつ作成して選択してみます。Script Editorでnuke.selectedNode()と入力する。



ここではOutput Windowに出力された内容を表示しています。#Resultより前がScript Editorで入力した内容です。
任意の変数を割り当てて、name()でノードの名前を表示します。



ノードの特定のknobの値を得るにはgetValue()を使います。knob名はknobにカーソルを合わせてtooltipを表示させると太字表示されます。


 

Blurノードのsizeはデフォルトで0なので0.0が返されます。typeはfloatになります。

次にsetValue()を使ってknobの値を変更します。


複数のknobを一度に変更することもできます。





続いて複数のノードを扱うときについて解説します。
複数のノードを取得するにはnuke.selectedNodes()を使います。
nuke.selectedNodes()はノードのリストを返します。


ここで先ほどのように名前を表示させようとするとエラーが発生します。


そこで選択したノードのリストからpythonのforループを使ってノード名を表示します。forループではリストのそれぞれについて順に実行していきます。


次にsetValue()を使って全てのノードのknobの値を変更します。選択したBlurノードのsizeの値を100にしてみます。



nuke.selectedNodes()はClass名でfilterすることができます。Class名はノードを選択してIキーでinformatuion windowを表示して確認できます。


選択したノードの内Blurノードをdisableをオンにしてみます。



今日はここまでになります。複数のノードの値を一度に変えたり、繰り返しの操作をしたいときには非常に便利になります。次回は簡単なPythonモジュールを作って実際にNukeのコマンドとして登録して利用するところまで解説しようと思います(予定は未定)。

No comments: