Q100458:自定义 Nuke Studio 导出令牌

关注

概括

本文介绍了如何在Nuke Studio中查找可用导出令牌的列表,并添加额外的令牌,以允许用户进一步自定义导出器中使用的导出路径。


更多信息

Nuke Studio导出器内的导出令牌是特殊关键字,它们根据已选择要导出的任务解析为字符串。例如, {shot}导出令牌返回要导出的镜头的名称,并且该令牌仅在导出镜头时可用。导出序列、镜头或剪辑时可以使用其他令牌,例如{user}令牌,它返回使用导出器的用户的名称。

可用代币列表可以通过以下方式查看:

  • 将鼠标悬停在路径模板上并阅读工具提示

  • 右键单击活动路径模板并选择选择关键字...

添加额外的代币

可以使用 Python 添加额外的令牌,这可以让它们在特定环境中更好地工作,例如在生产管道中。

为此,需要添加解析器,为特定关键字调用解析器并返回要在最终路径中使用的字符串来代替令牌。

可以通过覆盖以下实例来添加解析器:

hiero .core.TaskPresetBase.addUserResolveEntries

如果您覆盖主hiero .core.TaskPresetBase.addUserResolveEntries ,则解析器将添加到所有导出处理器。

但是,如果您覆盖 addUserResolveEntries 的其他实例之一(例如hiero .exporters.FnShotProcessor.ShotProcessorPreset.addUserResolveEntries ),则解析器将仅添加到镜头导出处理器中。

添加全球出口令牌

以下是如何添加全局导出令牌的示例:

 import hiero .core
def global_addUserResolveEntries(self, resolver):
resolver.addResolver("{proj}", "First four characters of the project.", lambda keyword, task: task.projectName()[:4])

# This token can be applied to ANY export process, so add it to the base class
hiero .core.TaskPresetBase.addUserResolveEntries = global_addUserResolveEntries

此示例通过调用task.projectName()[:4]返回项目名称的前 4 个字符,这会返回项目的全名,然后使用 Python 字符串语法仅返回前 4 个字符。

addResolver()函数需要三个参数:令牌的名称(关键字)、令牌的描述(将出现在工具提示和“选择关键字”对话框中)以及解析器(返回将被解析的字符串的函数)。在路径中代替令牌使用。

添加特定于镜头的导出令牌

以下是如何添加特定于镜头的导出令牌的示例:

 from hiero .exporters.FnShotProcessor import ShotProcessorPreset
def shot_addUserResolveEntries(self, resolver):
def plateWidth(task):
trackItem = task._item
media = trackItem.source().mediaSource()
return str(media.width())

resolver.addResolver("{platewidth}", "Returns the width of the source plate", lambda keyword, task: plateWidth(task))

resolver.addResolver("{plateheight}", "Returns the height of the source plate", lambda keyword, task: str(task._item.source().mediaSource().height()))

# This token will only be applied to the Shot Processor
ShotProcessorPreset.addUserResolveEntries = shot_addUserResolveEntries

此示例返回源板宽度/高度的字符串。宽度是通过调用plateWidth()函数找到的,该函数返回媒体源.width()方法的字符串。以相同的方式找到高度,但是它是在一行中完成的,而不是调用另一个函数。由于两个左轮手枪都被添加到shot_addUserResolveEntries()函数中,因此在重写addUserResolveEntries时它们都会被添加到射击导出处理器中。

在脚本编辑器中运行上述示例会将这些令牌添加到该Nuke Studio会话的导出器中。要检查令牌是否正常工作,请将令牌添加到路径并检查导出器中的路径预览,在这种情况下,将返回完整高清素材的分辨率:

通过将令牌添加到.nuke/Python/Startup/init.py文件(如果尚不存在则创建一个),可以将令牌永久添加到Nuke Studio设置中。

延伸阅读

有关Nuke Studio导出系统的更多信息可以在我们的文档中找到:

出口系统

有关查找.nuke目录的信息可以在此处找到:

Q100048: Nuke目录位置

有关Python/Startup/init.py的信息可以在这里找到:

Q100142:如何在启动时在Nuke Studio中执行Hiero Python 代码

    我们很遗憾听到

    请告诉我们