概括
本文解释了init.py和menu.py文件是什么,以及如何将它们与Nuke一起使用,具体内容如下:
更多信息
Nuke允许用户通过其 Python API(应用程序编程接口)对应用程序进行大量自定义。这些自定义选项包括更改Nuke的颜色、设置默认旋钮值、更改整个菜单结构以及自动化Nuke脚本创建等。这种强大的自定义能力使Nuke在工作室流程中非常实用且功能强大。
大多数这类自定义操作都可以在Nuke的脚本编辑器中运行。例如,如果用户希望所有创建的 ColorCorrect 节点默认增益值为 2,那么在脚本编辑器中运行nuke .knobDefault("ColorCorrect.gain", "2")即可将该Nuke会话中创建的所有 ColorCorrect 节点的增益值设置为 2。
但是,下次启动不同的Nuke会话时,新创建的 ColorCorrect 节点的默认增益值将为 1。为了使这些默认值更改永久生效,需要启动脚本为每个Nuke会话设置旋钮默认值。
启动脚本是Nuke启动时运行的 Python 脚本,可用于运行类似nuke .knobDefault("ColorCorrect.gain", "2") ` 的命令。这意味着Nuke之后的所有会话都会创建增益旋钮设置为 2 的 ColorCorrect 节点。
启动脚本位置
Nuke会在Nuke插件路径中列出的任何路径下搜索启动脚本。Nuke 16.0v4 Nuke默认插件路径在各个操作系统中如下:
视窗
C:\Users\ <userName> \.nuke
C:\Program Files\Common Files\Nuke\16.0\plugins
C:\Program Files\Nuke16.0v4\plugins\user
C:\Program Files\Nuke16.0v4\plugins\caravr
C:\Program Files\Nuke16.0v4\plugins\air
C:\Program Files\Nuke16.0v4\plugins\icons
C:\Program Files\Nuke16.0v4\plugins
Linux
/home/ <userName> /.nuke
/usr/local/ Nuke /16.0/plugins
/usr/local/ Nuke 16.0v4/plugins/user
/usr/local/ Nuke 16.0v4/plugins/ caravr
/usr/local/ Nuke 16.0v4/plugins/air
/usr/local/ Nuke 16.0v4/plugins/icons
/usr/local/ Nuke 16.0v4/plugins
macOS
/Users/ <userName> /.nuke
/Library/Application Support/ Nuke /16.0/plugins
/Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/plugins/user /Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/plugins/ caravr /Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/plugins/air /Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/plugins/icons /Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/plugins
可以通过在脚本编辑器中运行以下命令来找到Nuke当前使用的插件路径集:
print(nuke.pluginPath())
Nuke会按照启动脚本的列表顺序的相反顺序进行扫描,因此从上面的列表中,首先扫描Nuke 16.0v4/plugins ,最后扫描<userName> /.nuke 。
还可以通过两种方式向此列表中添加其他路径:使用nuke .pluginAddPath() ` 将路径添加到列表开头,或nuke .pluginAppendPath()将路径添加到列表末尾。此外,还可以通过修改NUKE _PATH环境变量来编辑插件路径列表。
INIT.PY 与 MENU.PY
Nuke启动时会调用两个启动脚本Nuke init.py和menu.py文件。Nuke会在Nuke路径中主动搜索这两个文件,并在找到时执行它们。
- 每当初始化任何Nuke会话时,都会调用init.py文件,例如Nuke 、 Nuke Studio或在终端模式下启动Nuke时,甚至是帧服务器进程。
- 每次启动 Nuke 的 GUI 版本时都会调用menu.py文件Nuke因此对于Nuke的仅终端会话(例如帧服务器进程)不会调用它。
大多数情况下,自定义设置应该放在init.py文件中,因为所有类型的Nuke会话都会调用该文件,主要的例外是任何与 GUI 相关的设置,例如创建自定义菜单或调整Nuke的默认菜单。
Nuke处理插件路径的方式是:首先,它按相反的顺序遍历整个插件列表,查找并执行所有init.py文件。接下来,它会再次遍历整个插件路径列表,查找并执行menu.py文件。
使用不同的启动脚本目录
尽管Nuke会扫描插件路径中的所有目录, Nuke不会自动创建init.py或menu.py文件。某些目录(例如Nuke 16.0v4/plugins中已经存在这些文件,但对于其他路径,则需要手动创建。
大多数用户会将init.py和menu.py文件添加到.nuke目录,该目录是Nuke插件路径列表中的第一个路径。由于 .nuke 目录位于用户自己的区域内,因此将menu.py添加到该目录只会影响该用户的Nuke会话,而且通常比尝试访问应用程序安装文件更少出现权限问题,因此用户不太可能意外更改Nuke的安装内容。
注意:如果将启动脚本添加到Nuke /16.0/plugins目录,则这些脚本将影响所有Nuke版本,在本例中,即所有Nuke 16.0v# 版本。如果在创建Nuke 16.0v4/plugins/user目录后将其添加到Nuke目录,则这些脚本将影响该特定Nuke版本。
注意:我们不建议更改Nuke 16.0v4/plugins目录中的init.py和menu.py文件,因为如果更改不当, Nuke可能无法运行或按预期启动。
使用启动脚本
如前所述,启动脚本可用于对Nuke应用各种自定义设置。对于流水线环境来说,一个有用的函数是nuke .pluginAddPath() 。
技术总监 (TD) 在开发流程时,可以创建一系列工具,并将它们添加到网络上的一个可访问路径中。添加了该插件路径的用户将自动从该目录加载启动脚本,这使得技术总监只需修改一个 Python 文件即可将这些工具推广到整个公司。主网络启动脚本还可以根据用户身份或其他因素添加其他插件路径,以便为不同用户提供仅访问特定工具的权限。
NUKE vs HIERO vs NUKE STUDIO启动脚本
当Nuke启动时,它会扫描Nuke插件路径,查找init.py和menu.py文件并执行它们。
Hiero启动时,会扫描Hiero插件路径,查找位于插件路径下的Python/Startup和Python/StartupUI目录中的init.py 、 menu.py以及任何其他Python文件,然后执行它们。更多信息请参见此处:
Q100373:如何向Nuke Studio和Hiero添加额外的插件路径
当Nuke Studio启动时,它会扫描Nuke插件路径中的init.py和menu.py文件并执行它们,然后扫描Hiero插件Hiero中的相同文件并执行它们。
在向Hiero插件路径添加额外的 Python 文件时,应检查这些文件,确保它们在启动时被调用时,即使初始化也不会导致任何不良后果。而存储在Nuke插件路径中的 Python 文件,除非由用户代码明确调用,否则不会被初始化。
延伸阅读
有关init.py和menu.py文件的更多信息,请参见下文:
我们很遗憾听到
请告诉我们