Q100490:什么是 init.py 和 menu.py 启动脚本文件?

概括

本文解释了init.pymenu.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.pymenu.py文件。Nuke会在Nuke路径中主动搜索这两个文件,并在找到时执行它们。

  • 每当初始化任何Nuke会话时,都会调用init.py文件,例如NukeNuke Studio或在终端模式下启动Nuke时,甚至是帧服务器进程。
  • 每次启动 Nuke 的 GUI 版本时都会调用menu.py文件Nuke因此对于Nuke的仅终端会话(例如帧服务器进程)不会调用它。

大多数情况下,自定义设置应该放在init.py文件中,因为所有类型的Nuke会话都会调用该文件,主要的例外是任何与 GUI 相关的设置,例如创建自定义菜单或调整Nuke的默认菜单。

Nuke处理插件路径的方式是:首先,它按相反的顺序遍历整个插件列表,查找并执行所有init.py文件。接下来,它会再次遍历整个插件路径列表,查找并执行menu.py文件。

使用不同的启动脚本目录

尽管Nuke会扫描插件路径中的所有目录, Nuke不会自动创建init.pymenu.py文件。某些目录(例如Nuke 16.0v4/plugins中已经存在这些文件,但对于其他路径,则需要手动创建。

大多数用户会将init.pymenu.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.pymenu.py文件,因为如果更改不当, Nuke可能无法运行或按预期启动。

使用启动脚本

如前所述,启动脚本可用于对Nuke应用各种自定义设置。对于流水线环境来说,一个有用的函数是nuke .pluginAddPath()

技术总监 (TD) 在开发流程时,可以创建一系列工具,并将它们添加到网络上的一个可访问路径中。添加了该插件路径的用户将自动从该目录加载启动脚本,这使得技术总监只需修改一个 Python 文件即可将这些工具推广到整个公司。主网络启动脚本还可以根据用户身份或其他因素添加其他插件路径,以便为不同用户提供仅访问特定工具的权限。

NUKE vs HIERO vs NUKE STUDIO启动脚本

Nuke启动时,它会扫描Nuke插件路径,查找init.pymenu.py文件并执行它们。

Hiero启动时,会扫描Hiero插件路径,查找位于插件路径下的Python/StartupPython/StartupUI目录中的init.pymenu.py以及任何其他Python文件,然后执行它们。更多信息请参见此处:
Q100373:如何向Nuke StudioHiero添加额外的插件路径

Nuke Studio启动时,它会扫描Nuke插件路径中的init.pymenu.py文件并执行它们,然后扫描Hiero插件Hiero中的相同文件并执行它们。

在向Hiero插件路径添加额外的 Python 文件时,应检查这些文件,确保它们在启动时被调用时,即使初始化也不会导致任何不良后果。而存储在Nuke插件路径中的 Python 文件,除非由用户代码明确调用,否则不会被初始化。



延伸阅读

有关init.pymenu.py文件的更多信息,请参见下文:

    我们很遗憾听到

    请告诉我们