Q100248:如何使用 Nuke 的回调自动调用 Python 函数

关注

概括

本文将解释如何在Nuke中设置回调以及如何找到用于回调的正确 Python 命令。

可用回调和示例的完整列表可以在Nuke Python 开发人员指南中找到。

更多信息

回调是添加到Nuke环境中的一段代码,当Nuke中发生各种事件(例如创建节点或加载脚本)时,它会自动调用 Python 函数。

这在许多情况下都很有用,例如,在创建节点时设置旋钮值的首选项、自动保存脚本的增量版本或在设置新项目时更改项目设置。

下面您可以找到如何创建回调的示例,该回调将在Nuke中每个新创建的 Write 节点上将 Write 节点的“文件类型”设置为 exr 并将“文件”路径设置为临时位置。

要设置回调,请执行以下步骤(请继续阅读以获取有关每个步骤的更多信息):

  1. Nuke的脚本编辑器中测试命令以确保它们正常工作
  2. 定义回调函数,将其添加为回调,并将其保存到 .nuke 文件夹内的 init.py
  3. 下次Nuke打开时,指定事件发生时会执行回调


1. 在Nuke的脚本编辑器中测试命令以确保它们正常工作

要创建回调,首先在Nuke会话内的脚本编辑器中测试 Python 命令通常会很有帮助。您可以在Nuke Python 开发人员指南Nuke Python API 参考中找到有关可用 Python API 命令的更多信息

用于脚本编写的节点旋钮的名称通常可以在将鼠标悬停在旋钮上时显示的标签中找到。

例如,可以使用“file”引用 Write 节点中的“file”旋钮进行脚本编写,并通过“file_type”引用“file type”旋钮进行脚本编写:



要获取特定旋钮的当前值(例如“文件类型”),请在脚本编辑器中运行以下命令:

node = nuke .toNode(“Write1”)
# replace Write1 with the name of your Write node if it is different

print(node["file_type"].getValue())

这会将以下内容打印到控制台:

# node = nuke .toNode("Write1")
# print(node["file_type"].getValue())
# Result: 2.0

在本例中, 2.0是文件类型下拉列表中“ dpx ”的索引。要通过 Python 将“文件类型”更改为“ exr ”,请在脚本编辑器中输入以下命令:

node["file_type"].setValue(3)

这是我们要添加到回调中的命令之一。将目标“文件”路径设置为临时位置的另一个命令如下所示:

node["file"].setValue("/tmp/test.####.exr")

2. 定义回调函数,将其添加为回调,并将其保存到 .nuke 文件夹内的init.py
在单个 Python 函数中定义您希望回调执行的所有操作,并将该函数添加为OnUserCreate回调,如下面的示例代码所示:

import nuke 

def writeSettings():
node = nuke .thisNode()
node["file_type"].setValue(3)
node["file"].setValue("/tmp/test.####.exr")

# add callback to execute this every time a Write node is created
nuke .addOnUserCreate(writeSettings, nodeClass="Write")


将其复制并粘贴到文本编辑器中,然后保存文件。

将文件重命名为init.py并确保执行此操作时文件扩展名显示在文件浏览器中,以验证文件扩展名是.py 而不是.txt或其他。


该文件需要放置在您的.nuke文件夹中,这是Nuke在启动时查找插件的第一个位置。请参阅本文来找到您的.nuke文件夹: Q100048: Nuke目录位置

3、下次Nuke打开时,指定事件发生时执行回调

完成此操作后,回调将添加到Nuke环境中,下次启动应用程序并创建新的写入节点时,这些节点将应用“文件”和“文件类型”设置。

注意:如果您希望特定类的每个节点应用特定设置,以及从旧的保存的脚本加载的设置,您可以使用 nuke nuke回调而不是nuke .addOnUserCreate


进一步的帮助

如果您在设置回拨时遇到任何问题,请打开支持票证并告知我们您遇到的问题以及您迄今为止采取的故障排除步骤。

有关如何开立支持票证的更多信息,请参阅如何提出支持票证文章。

    我们很遗憾听到

    请告诉我们