创建支持服务单
关注

Q100248:在Nuke中添加回调

摘要

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

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

更多信息

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

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

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

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

  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() 

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

# Result: 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环境中,下次启动应用程序并创建新的Write节点时,这些将应用“文件”和“文件类型”设置。

注意: 如果您希望特定类的每个节点都应用特定设置,也可以使用旧的已保存脚本加载的那些节点,则可以使用 nuke .addOnCreate 回调而不是nuke.addOnUserCreate。

如果您在设置回调时遇到任何问题,请打开支持服务单,告诉我们您遇到的问题以及您到目前为止所采取的故障排除步骤。

有关如何打开支持服务单的更多信息,请参阅“ 使用支持门户 ”一文。

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
8 人中有 4 人觉得有帮助

评论