Q100248: Nuke のコールバックを使用して Python 関数を自動的に呼び出す方法

フォローする

まとめ

この記事では、 Nukeでコールバックを設定する方法と、コールバックに使用する正しい Python コマンドを見つける方法について説明します。

利用可能なコールバックと例の完全なリストはNuke Python 開発者ガイドに記載されています。

詳しくは

コールバックは、 Nukeでさまざまなイベント (ノードの作成やスクリプトのロードなど) が発生したときに Python 関数を自動的に呼び出す、 Nuke環境に追加されるコードの一部です。

これは、ノードの作成時にノブの値を設定したり、スクリプトの増分バージョンを自動的に保存したり、新しいプロジェクトをセットアップするときにプロジェクト設定を変更したりする場合など、多くの状況で役立ちます。

以下に、 Nukeで新しく作成されたすべての書き込みノード上で、書き込みノードの「ファイル タイプ」を exr に設定し、「ファイル」パスを一時的な場所に設定するコールバックを作成する方法の例を示します。

コールバックを設定するには、次の手順を実行してください (各手順の詳細については、以下をお読みください)。

  1. Nukeのスクリプト エディタでコマンドをテストして、正しく動作することを確認します。
  2. コールバック関数を定義し、コールバックとして追加し、.nuke フォルダー内の init.py に保存します。
  3. 次回Nukeが開くと、指定されたイベントが発生したときにコールバックが実行されます。


1. Nukeのスクリプト エディタでコマンドをテストし、正しく動作することを確認します。

コールバックを作成するには、最初にNukeセッション内のスクリプト エディターで Python コマンドをテストすると役立つことがよくあります。使用可能な Python API コマンドの詳細については、「 Nuke Python 開発者ガイド」およびNuke Python API リファレンス」を参照してください

スクリプト用のノードのノブの名前は、通常、ノブの上にマウスを置いたときに表示されるラベルに表示されます。

たとえば、Write ノードの「file」ノブは「file」を使用してスクリプトで参照でき、「file type」ノブは「file_type」を使用してスクリプトで参照できます。



特定のノブの現在の値、たとえば「ファイル タイプ」を取得するには、スクリプト エディターで次のコマンドを実行します。

node = nuke .toNode(“Write1”)
# replace Write1 with the name of your Write node if it is different

print(node["file_type"].getValue())

これにより、以下がコンソールに出力されます。

# node = nuke .toNode("Write1")
# print(node["file_type"].getValue())
# Result: 2.0

この場合、 2.0 はファイル タイプのドロップダウン リストの「 dpx 」のインデックスです。 Python 経由で「ファイル タイプ」を「 exr 」に変更するには、スクリプト エディターで次のコマンドを入力します。

node["file_type"].setValue(3)

これはコールバックに追加したいコマンドの 1 つです。宛先「ファイル」パスを一時的な場所に設定する他のコマンドは次のようになります。

node["file"].setValue("/tmp/test.####.exr")

2. コールバック関数を定義し、コールバックとして追加し、.nuke フォルダー内のinit.pyに保存します。
以下のコード例に示すように、コールバックで実行するすべてのアクションを 1 つの Python 関数で定義し、この関数をOnUserCreateコールバックとして追加します。

import nuke 

def writeSettings():
node = nuke .thisNode()
node["file_type"].setValue(3)
node["file"].setValue("/tmp/test.####.exr")

# add callback to execute this every time a Write node is created
nuke .addOnUserCreate(writeSettings, nodeClass="Write")


これをコピーしてテキスト エディタに貼り付け、ファイルを保存します。

ファイルの名前をinit.pyに変更し、これを行うときにファイル拡張子がファイル ブラウザに表示されることを確認して、ファイル拡張子が.txtなどはなく.pyであることを確認します。


このファイルは、 .nukeフォルダーに配置する必要があります。このフォルダーは、 Nuke起動時にプラグインを検索する最初の場所です。 .nukeフォルダーを見つけるには、この記事を参照してください: Q100048: Nukeディレクトリの場所

3. 次回Nukeが開いたとき、指定されたイベントが発生したときにコールバックが実行されます。

これを完了すると、コールバックがNuke環境に追加され、次回アプリケーションを起動して新しい書き込みノードを作成したときに、これらの「ファイル」と「ファイル タイプ」の設定が適用されます。

注:特定のクラスのすべてのノードに特定の設定 (古い保存済みスクリプトからロードされた設定も含む) を適用したい場合は、 nuke .addOnUserCreate の代わりに nuke nukeコールバックをnukeできます。


さらなるヘルプ

コールバックの設定で問題が発生した場合は、サポート チケットを開いて、発生した問題とこれまでに実行したトラブルシューティング手順をお知らせください。

サポート チケットを開く方法の詳細については、「 サポート チケットを発行する方法」の記事を参照してください。

    私たちはそれを聞いて申し訳ございません

    理由をお聞かせください