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

概括

本文解释了如何使用 Python 为Nuke StudioHiero时间线中的每个片段自动创建 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)

逐行分析代码,以下是对每一行功能的具体解释:

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

第一行代码创建了一个 for 循环,遍历时间线中的所有片段。然后,其余代码会逐个应用于时间线片段列表中的每个片段。

hiero .ui.activeSequence().videoTracks()命令会查询时间轴上当前活动的序列,遍历每个视频轨道的所有片段,并将它们添加到 Python 列表中。这样就创建了一个完整的片段列表,后续的命令将应用到该列表中。

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

第二行代码创建柔和效果,并将其添加到 for 循环中我们正在播放的当前片段。


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

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


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

第四行代码生成片段的镜头编号。其工作原理是查询镜头名称,找到最后一个下划线,然后将镜头名称拆分,只保留镜头编号。


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

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


6. trackItemEffect.node()["file"].setValue(ocioPath)

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

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

以下是代码在脚本编辑器中运行后,为Nuke Studio时间线中的所有片段创建的 OCIOCDLTransform 软特效的结果:

    我们很遗憾听到

    请告诉我们