3/26/2012

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

今回は前回に引き続きNukeでのPythonの基本的な使い方について解説します。今回は簡単なPythonスクリプトを作成してツールバーにボタンを追加してみます。

VectorBlurノードのオンオフを切り替えるスクリプトを例にとり解説していきます。


ノードのオンオフを切り替えるにはNodoタブのdisableチェックボックスを切り替えます。Nukeのチェックボックスはonが1でオフが0です。デフォルトではdisableはオフになっています。

DAG(NodeGraph)上で選択した単一のノードのdisableを切り替えるときは前回取り上げたnuke.selectedNode()を使うことができます(もちろんショートカットの方が簡単ですが)。

複数の場合はselectedNodes()を用いて以下のようになります。


もうひとつ使用頻度の高いコマンドにallNodes()があります。nuke.allNodes()は選択しているかどうかに関わらず全てのノードの値をリストで返します。


allNodes()はselectedNodes()と同じようにfilterすることができます。VectorBlurのクラスはVectorBlurになります。


forループを使ってdisableをオンにしてみます。

逆にdisableをオフにするにはdisableの値を0にします。

ここでif~elseの条件式で組み合わせてオンオフを切り替える式を作ります。

一連の処理をtoggleVectorBlurという名前で関数として定義します。


一度関数を定義してしまえばtoggleVectorBlur()と入力するだけでオンオフを切り替えることができます。

次にこのPythonスクリプトをScript EditorでtoggleVectorBlur.pyという名前で保存します。

普通のテキストエディターで書いて保存してもかまいません。保存する場所は.nukeの中にpythonフォルダを作成して、そこに保存しておきます。

Nukeのツールバーにボタンを配置するために以下の3行をmenu.pyに追加します。iconファイルは自分で作成して使うことができます。今回は標準のVectorBlurのiconを使いました。

これでPaneの中にMyToolsというタブができているので好きな場所に配置します。


ボタンをクリックしてみましょう。何やらエラーが発生しました。

外部のスクリプトでnukeモジュールを使う場合はインポートしなければ使えません。
先ほどのtoggleVectorBlur.pyの先頭に import nukeと記述して保存します。


これで無事スクリプトボタンをツールバーに追加して使用することができました。このように繰り返し使用するような機能なども簡単にツール化することができるので自分の良く使う機能などをスクリプト化しておくといいでしょう。

少しだらだらした長文で失礼いたしました。次回はユーザーの入力を求めるPythonコマンドを解説してみたいと思います。

No comments: