Q100343:如何在 NukeStudio 和 Hiero 中自动创建 OCIOCDLTransform 软效果并为剪辑设置 .cc 文件路径

关注

概括

本文介绍如何使用 Python 自动为NukeStudioHiero时间线中的每个剪辑创建 OCIOCDLTransform 软效果,并为每个镜头定义 ASC CDL 文件路径。

更多信息

当您在NukeStudioHiero中手动为剪辑创建 OCIOCDLTransform 软效果时,您可以一次为每个剪辑创建一种效果,然后必须手动为每个软效果设置 .cc 文件路径。

这可能相当耗时,特别是如果您的时间线中有很多镜头并且每个镜头都有自己的 .cc 文件要应用。

但是,您可以使用 Python 自动执行此设置,下面是为每个剪辑创建 OCIOCDLTransform 软效果并向每个软效果应用不同的 .cc 文件路径的示例代码:

for trackItem in [y for x in hiero .ui.activeSequence().videoTracks() for y in x.items()]:
trackItemEffect = trackItem.parentTrack().createEffect("OCIOCDLTransform",trackItem=trackItem )
trackItemEffect.node()["read_from_file"].setValue(1)
shotNumber = trackItem.name()[trackItem.name().rfind("_")+1:]
ocioPath = "/path/to/CDL/shot_" + shotNumber + ".cc"
trackItemEffect.node()["file"].setValue(ocioPath)

逐行分解代码,以下是每行的作用的解释:

for trackItem in [y for x in hiero .ui.activeSequence().videoTracks() for y in x.items()]:

第一行创建一个 for 循环并迭代时间线中的所有剪辑。然后,代码的其余部分将一次应用于时间线剪辑列表中的每个剪辑。

hiero .ui.activeSequence().videoTracks()命令查询时间线上当前活动的序列,循环遍历每个视频轨道的所有剪辑项并将它们添加到 Python 列表中。这将创建要应用下一行命令的完整剪辑列表。

trackItemEffect = trackItem.parentTrack().createEffect("OCIOCDLTransform",trackItem=trackItem )

第二行创建软效果并将其添加到我们在 for 循环中所在的当前剪辑中。

trackItemEffect.node()["read_from_file"].setValue(1)

第三行设置为当前剪辑创建的软效果的“从文件读取”旋钮值。

shotNumber = trackItem.name()[trackItem.name().rfind("_")+1:]

第四行生成剪辑的镜头编号。这是通过查询镜头名称、查找最后一个下划线并拆分镜头名称以仅留下镜头编号来实现的。

ocioPath = "/path/to/CDL/shot_" + shotNumber + ".cc"

第五行使用位置路径和文件命名约定生成 .cc 文件的路径,并将其连接到镜头编号和 .cc 文件扩展名。

trackItemEffect.node()["file"].setValue(ccPath) 

最后一行将软效果文件路径设置为第 5 行中生成的路径。

注意:该代码基于镜头和 .cc 文件路径的既定命名约定来工作。为了适应您的工作流程,您需要调整第 4 行和第 5 行以匹配您的项目使用的命名约定。

下面是在脚本编辑器中运行代码以及为NukeStudio时间线内的所有剪辑创建 OCIOCDLTransform 软效果的结果:

    我们很遗憾听到

    请告诉我们