概括
本文介绍如何使用 Python 自动为NukeStudio或Hiero时间线中的每个剪辑创建 OCIOCDLTransform 软效果,并为每个镜头定义 ASC CDL 文件路径。
更多信息
当您在NukeStudio或Hiero中手动为剪辑创建 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 软效果的结果:
我们很遗憾听到
请告诉我们