概括
本文解释了如何使用 Python 为Nuke Studio或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)
逐行分析代码,以下是对每一行功能的具体解释:
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 软特效的结果:
我们很遗憾听到
请告诉我们