まとめ
この記事では、 Nukeの複数のバージョンに異なるプラグイン ディレクトリをロードする 2 つの異なる方法について説明します。
これは、複数の異なるバージョンのNukeを同時に使用している場合に役立つことがあります。一部のサードパーティ製プラグインは、使用しているすべてのバージョンのNukeと互換性がない場合があります。
Nuke 13.0v1以降、Python 2はサポートされなくなりました。 したがって、これは Python スクリプトを Python 3.7 と互換性があるように更新するときにも役立つ可能性があります。また、 Nuke 16.0v1 で PySide2 から PySide6 に変更するために Python コードを更新するときにも同じ原則が適用されます。
詳細情報
まず、 Nukeバージョンごとにプラグインを異なるディレクトリに保存する必要があります。その後、 Nukeの起動時に読み込むディレクトリを追加できます。
特定のバージョンのNukeにのみロードしたいプラグインは、ローカルの~/.nuke フォルダの最上位に追加しないでください。このディレクトリは常にロードされるためです ( セーフ モードで実行している場合を除く)。
異なるバージョンのNuke用のプラグインをロードするには、次の 2 つの方法があります。
-
プラグイン ディレクトリは、 Nukeの場合は
pluginAddPath()メソッド、 Nuke StudioおよびHieroの場合はaddPluginPath()メソッドを使用して Python 経由で追加できます。 -
あるいは、カスタム ラッパー スクリプトを使用して、必要なプラグインを指す環境変数でNuke 、 Nuke Studio 、またはHieroの特定のバージョンを起動することもできます。
これら2つの方法の結果の主な違いは、 評価順序です。pluginAddPath pluginAddPath()を使用すると、ディレクトリはNukeのプラグインパスの先頭に追加されますが、環境変数を使用すると、ディレクトリは~/.nukeディレクトリの後に追加されます。以下は、スクリプトエディタでnuke .pluginPath()を実行する例です。Nuke Nukeプラグインパスに2つのディレクトリが追加されています。1つはPythonで追加され、もう1つは環境変数で設定されています。
どちらの方法を使用するかは、現在のパイプライン環境と、プラグインが依存する可能性のある依存関係によって異なります。
Python 起動スクリプトの作成
init.py ファイルを使用すると、特定のNukeバージョンの起動時にどのプラグイン パスが読み込まれるかを定義できます。
以下は、 Nuke 13 またはNuke 16 を起動したかどうかを確認し、それに応じてプラグイン パスをロードする Python コードの例です。
import nuke
if nuke .NUKE_VERSION_MAJOR==16:
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 16 ")
if nuke .NUKE_VERSION_MAJOR==13:
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 13 ")
上記のコードは、実行中のNukeのメジャーバージョン(Nuke 13、 Nuke 16など)のみをチェックしますが、 and文とNUKE _MINOR_VERSION使用することで、特定のプラグインを起動するNukeのバージョンをより具体的に指定できます。例えば、以下のコードは、プラグインのパスをロードする前に、 Nukeバージョンが15.1かどうかを確認します。
import nuke
if nuke .NUKE_VERSION_MAJOR==15 and nuke .NUKE_VERSION_MINOR==1:
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 151 ")
次のように、 NUKE _VERSION_STRING使用して、 Nuke完全なバージョンを確認することもできます。
import nuke
if nuke .NUKE_VERSION_STRING=="16.0v4":
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 160v4 ")
Nuke StudioとHiero
Nukeのプラグイン パスを作成するのと同様に、 Nuke StudioおよびHieroの場合、起動されているNuke Studio / Hieroのバージョンを確認し、それに応じてプラグイン パスをロードするifステートメントを記述することでこれを実行できます。
ただし、このコードを~/.nuke/init.pyファイルに追加するのではなく、 ~/.nuke/Python/Startupまたは~/.nuke/Python/StartupUIディレクトリ内の.pyファイルに保存する必要があります。Nuke Nuke StudioとHieroへのプラグインパスの追加方法については、次の記事をご覧ください: Q100373: Nuke StudioとHieroにプラグインパスを追加する方法
注意:ロードする追加のディレクトリにも、 ~/.nukeフォルダと同じ/Python/Startupまたは/Python/StartupUIフォルダ構造が含まれている必要があります。
以下は、 Nuke Studio / Hiero 13 または 16 にロードされるさまざまなプラグイン パスを設定する例です。
import hiero
from hiero .core import env
if env["VersionMajor"]==16:
# scripts saved in /path/to/plugins/folder/ hiero 16/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 16")
if env["VersionMajor"]==13:
# scripts saved in /path/to/plugins/folder/ hiero 13/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 13")
Nukeと同様に、 env["VersionMinor"] andステートメントで使用して、メジャーバージョンとマイナーバージョンのプラグインパスを定義できます。例えば、次のコードはNuke Studio / Hiero 15.1のすべてのバージョンのプラグインパスを読み込みます。
import hiero
from hiero .core import env
if env["VersionMajor"]==15 and env["VersionMinor"]==1:
# scripts saved in /path/to/plugins/folder/ hiero 151/Python/Startup
hiero .core.addPluginPath(" /path/to/plugins/folder/ hiero 151 ")
env["VersionString"]を使用することで、正確なバージョンに基づいてプラグインをロードすることもできます。ただし、 env["VersionString"]の結果には製品名(例: "Hiero 16.0v4"または"NukeStudio 16.0v4" )も含まれることに注意してください。
import hiero
from hiero .core import env
if env["VersionString"].endswith("16.0v4"):
# scripts saved in /path/to/plugins/folder/ hiero 160v4/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 160v4")
環境変数ラッパースクリプトの作成
ラッパースクリプトは、システムコマンドやユーティリティを実行ファイルに埋め込みます。これにより、コマンドラインでコマンドを再入力することなく、コマンドを繰り返し実行できるようになります。この場合、 NUKE _PATH環境変数を設定してアプリケーションを起動できます。ラッパースクリプトを介して環境変数を設定すると、コマンドはそのアクティブなコマンドラインセッションでのみ有効になり、システム上に永続的に設定されることはありません。
ラッパースクリプトはマシン上の任意の場所に保存でき、ターミナルで実行できます。また、これらのファイルをデフォルトでターミナルで開くように設定すれば、ダブルクリックで実行できます。
macOSとLinuxのラッパースクリプトには非常によく似たコマンドが含まれていますが、 Nukeアプリケーションディレクトリが2つのオペレーティングシステム間の最大の違いです。各オペレーティングシステムにおけるNuke 16.0v4のサンプルスクリプトは以下をご覧ください。
ヒント:同じ原則がNuke StudioとHieroにも適用され、これらのスクリプトに--hieroまたは--studio 起動フラグを追加することで起動できます。
macOS:
#! /bin/bash
export NUKE _PATH=/path/to/some/folder/
/Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/ Nuke 16.0
リナックス:
#! /bin/sh
export NUKE _PATH=/path/to/some/folder/
/usr/local/ Nuke 16.0v4/ Nuke 16.0
これはWindowsとは全く異なります。Windowsでは、Windowsコマンドプロンプトでコマンドを実行するスクリプトを作成する必要があります。これを行うには、以下のコマンドを含むバッチファイル( .bat )を作成します。
ウィンドウズ:
set NUKE _PATH=\path\to\some\folder
"C:\Program Files\Nuke16.0v4\Nuke16.0.exe"
注:この記事には、各オペレーティング システムの例のラッパー スクリプトも添付されています。
さらに詳しく
Nukeでプラグインをロードする方法の詳細については、ドキュメントの次のページを参照してください。
- Q100490: init.pyとmenu.pyの起動スクリプトファイルとは何ですか?
- ギズモ、NDKプラグイン、PythonおよびTclスクリプトの読み込み
- Nukeプラグインパスの定義
- プラグインのインストール
- Hieroの環境情報
- Nuke環境変数
サンプルファイル
私たちはそれを聞いて申し訳ございません
理由をお聞かせください