NUKEのinit.pyとmenu.pyをリダイレクト

July 3, 2019
init.pyをリダイクレトさせることで、おおもとのinit.pyとmemu.pyをシンプルにすることができます。
NUKE_PATHで設定された.nukeフォルダ内にinit.pyを配置しますが(うちの場合はデフォルトの$HOME直下です)、ここに前回紹介した方法でプラグインの共通フォルダを設定します。

例えば

$HOME/.nuke/init.py

import nuke, platform
nukePlatform = platform.system()
nukeVersion = nuke.env['NukeVersionString']

if platform.system()=='Windows':
    pluginsRootPath = 'W:/'
else:
    pluginsRootPath = '/Volumes/Share/nuke_plugins/'

nuke.pluginAddPath(pluginsRootPath)

つぎに設定したプラグインのフォルダ(ここでは/Volumes/Share/nuke_plugins/)の中にフォルダ「gizmos」と「blink」を作成します。ここでは簡単に2つだけ。

このフォルダにもうひとつinit.pyをおき、以下のように設定します。


/Volumes/Share/nuke_plugins/init.py

nuke.pluginAddPath('./gizmos')
nuke.pluginAddPath('./blink')

次に「gizmos」フォルダ内に「tools」フォルダと「icons」フォルダを作成します。
それぞれフォルダにgizmoとアイコンをいれます。gizmoをmytool.gizmo、アイコンはmytool.pngとします。アイコンは省略可能。あとグループ用のアイコンがあれば、それもiconsフォルダに入れておきます。仮にMyTools.pngとします。

このフォルダにもinit.pyを作成します。


/Volumes/Share/nuke_plugins/gizmos/init.py

nuke.pluginAddPath('./tools')
nuke.pluginAddPath('./icons')

ここにmenu.pyを作成します。


/Volumes/Share/nuke_plugins/gizmos/init.py

import nuke
t=nuke.menu("Nodes")
u=t.addMenu("MyTools", icon="X_Tools.png")
u.addCommand( "mytool", "nuke.createNode('mytool')", icon="mytool.png")

これで、メニューに反映されます。

こうすることで、各プラグインのフォルダ内で相対パスで記述でき、menu.pyもそのフォルダ内のものを編集するだけで済みます。プラグインのインストール/アンインストールの管理がフォルダごとになるので、多分楽になります。


[関連記事]
NUKEのinit.pyについて
フォルダ内のgizmoのメニューを自動作成する