概括
本文将概述两种不同的方法,用于如何为多个版本的Nuke加载不同的插件目录。
如果您同时使用多个不同版本的Nuke这可能会有所帮助,因为您可能会发现某些第三方插件与您正在使用的所有版本的Nuke不兼容。
从Nuke 13.0v1 开始,不再支持 Python 2,因此这在您更新 Python 脚本以与 Python 3.7 兼容时也可能有所帮助。
更多信息
首先,您需要将每个Nuke版本的插件保存在不同的目录中。然后,您可以添加Nuke启动时加载的其他目录。
您希望仅为特定版本的Nuke加载的任何插件不应添加到本地~/.nuke 文件夹中,因为该目录始终会加载(除非您在安全模式下运行)。
您可以使用两种方法来加载不同版本的Nuke的插件,第一种是使用pluginAddPath()
方法通过 Python 添加插件目录,或者使用Nuke Studio和Hiero的addPluginPath()
方法。第二种方法是创建自定义包装脚本来启动带有环境变量集的Nuke 、 Nuke Studio或Hiero 。
两种方法之间的区别在于评估顺序。使用pluginAddPath()
会将目录添加到Nuke插件路径的前面,而使用环境变量将在~/.nuke
目录之后加载目录。以下是在脚本编辑器中运行nuke .pluginPath()的示例,其中两个目录添加到Nuke的插件路径中,一个是通过 Python 添加的,另一个是使用环境变量设置的:
您决定使用哪种方法取决于您当前的管道环境以及您的插件可能依赖的任何依赖项。
Python脚本
Nuke
通过使用 init.py 文件,您可以定义给定Nuke版本在启动时加载的插件路径。
下面是一个 Python 代码示例,它将检查您是否启动了Nuke 12 或Nuke 14 并相应地加载插件路径:
import nuke
if nuke .NUKE_VERSION_MAJOR==14:
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 14 ")
if nuke .NUKE_VERSION_MAJOR==12:
nuke .pluginAddPath(" /path/to/plugins/folder/ nuke 12 ")
上面的代码只会检查您正在运行的Nuke的主要版本(即Nuke 12、 Nuke 14 等),但通过使用 ' and ' 语句和NUKE _MINOR_VERSION
,您可以更具体地了解Nuke版本将启动某些插件。例如,以下代码将在加载插件路径之前检查Nuke版本是否为 14.0(如果版本匹配):
import nuke
if nuke .NUKE_VERSION_MAJOR==14 and nuke .NUKE_VERSION_MINOR==0:
nuke .pluginAddPath(" /path/to/plugins/folder ")
您还可以使用NUKE _VERSION_STRING
检查完整的Nuke版本,如下所示:
import nuke
if nuke .NUKE_VERSION_STRING=="14.0v5":
nuke .pluginAddPath(" /path/to/plugins/folder ")
Nuke Studio和Hiero
与为Nuke创建插件路径类似,对于Nuke Studio和Hiero ,您可以通过编写“ if ”语句来检查已启动的Nuke Studio / Hiero版本并相应地加载插件路径。
但是,不需要将此代码添加到~/.nuke/init.py
文件中,而是需要将其保存到~/.nuke/Python/Startup
或~/.nuke/Python/StartupUI
目录内的 .py 文件中。您可以在此处找到有关向Nuke Studio和Hiero添加插件路径的更多信息。
注意:您正在加载的其他目录还需要包含与~/.nuke
文件夹相同的/Python/Startup
或/Python/StartupUI
文件夹结构。
以下是为Nuke Studio / Hiero 12 或 13 设置要加载的不同插件路径的示例:
import hiero
from hiero .core import *
if env["VersionMajor"]==14:
# scripts saved in /path/to/plugins/folder/ hiero 14/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 14")
if env["VersionMajor"]==12:
# scripts saved in /path/to/plugins/folder/ hiero 12/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 12")
与Nuke一样,您可以使用env["VersionMinor"]
和 ' and ' 语句来定义主要版本和次要版本的插件路径。例如,以下代码将加载所有Nuke Studio / Hiero 14.0 版本的插件路径:
import hiero
from hiero .core import *
if env["VersionMajor"]==14 and env["VersionMinor"]==0:
# scripts saved in /path/to/plugins/folder/ hiero 14/Python/Startup
hiero .core.addPluginPath(" /path/to/plugins/folder/ hiero 14 ")
您还可以使用env["VersionString"]
根据确切版本加载插件。但是,请注意env["VersionString"]
的结果还包括产品名称(例如"Hiero 14.0v5"
或"NukeStudio 14.0v5"
):
import hiero
from hiero .core import *
if env["VersionString"]=="Hiero 14.0v5" or env["VersionString"]=="NukeStudio 14.0v5":
# scripts saved in /path/to/plugins/folder/ hiero 13/Python/Startup
hiero .core.addPluginPath("/path/to/plugins/folder/ hiero 14")
创建包装脚本
包装器脚本将系统命令或实用程序嵌入到可执行文件中,然后您可以从中重复调用这些命令,而无需在命令行中重新键入。在这种情况下,您可以设置NUKE _PATH
或HIERO _PLUGIN_PATH
环境变量并启动应用程序。通过包装脚本设置环境变量意味着这些命令仅针对该活动命令行会话启用,并且不会在您的系统上永久设置。
包装器脚本可以保存在计算机上的任何位置,并且可以通过在终端中运行它们来执行。您还可以将这些文件设置为默认在终端中打开,这样您只需双击即可执行它们。
Nuke
macOS 和 Linux 的包装器脚本包含非常相似的命令, Nuke应用程序目录是两个操作系统之间最大的区别。每个操作系统上的Nuke 14.0v2 示例脚本如下:
苹果系统
#! /bin/bash
export NUKE _PATH=/path/to/some/folder/
/Applications/ Nuke 14.0v5/ Nuke 14.0v5.app/Contents/MacOS/ Nuke 14.0
Linux
#! /bin/sh
export NUKE _PATH=/path/to/some/folder/
/usr/local/ Nuke 14.0v5/ Nuke 14.0
这与 Windows 有很大不同,在 Windows 中,您需要创建一个脚本来运行 Windows 命令提示符中的命令。为此,您可以创建一个批处理文件 ( .bat ),其中包含以下命令:
视窗
set NUKE _PATH=/path/to/some/folder
"C:\Program Files\Nuke14.0v5\Nuke14.0.exe"
注意:您还可以找到本文所附的每个操作系统的示例包装器脚本。
Nuke Studio和Hiero
对于Nuke Studio和Hiero ,您需要在启动应用程序之前使用--hiero
--studio
HIERO _PLUGIN_PATH
启动标志设置 HIERO _PLUGIN_PATH 环境变量。
苹果系统
#! /bin/bash
export HIERO _PLUGIN_PATH=/path/to/some/folder/
/Applications/ Nuke 14.0v5/ Nuke 14.0v5.app/Contents/MacOS/ Nuke 14.0v5 --studio
Linux
#! /bin/sh
export HIERO _PLUGIN_PATH=/path/to/some/folder/
/usr/local/ Nuke 14.0v5/ Nuke 14.0 --studio
视窗
set HIERO _PLUGIN_PATH=/path/to/some/folder
"C:\Program Files\Nuke14.0v5\Nuke14.0.exe" --studio
延伸阅读
有关在Nuke中加载插件的更多信息,请参阅我们文档的以下页面:
我们很遗憾听到
请告诉我们