DaVinci Resolve 的 Fusion 设置中的“变量映射”(Variables Map)用于建立可以在 Fusion 表达式、脚本以及 Saver 文件路径和文件名中调用的命名变量。

打开网易新闻 查看精彩图片

变量可以保存固定文本、数值,也可以使用表达式取得其他数据,例如上游素材的元数据。这样,同一个名称可以在多个位置重复调用,而不必在表达式、脚本或输出路径中反复填写相同内容。变量还可以引用其他变量,从而建立更灵活的自动化工作流程。

变量映射分为全局变量和合成变量两个作用范围。Fusion 设置中建立的全局变量可以供所有合成使用;针对单个 Composition 建立的变量则只属于相应合成。

变量映射

Variables Map

列表由“名称”和“值”两列组成。

--名称

Name

表示变量的名称。

例如可以建立:

output

这些名称用于以后在表达式、脚本或 Saver 路径中调用变量。

变量名称应尽量简洁、明确并保持一致。尤其是在复杂合成和团队工作流程中,使用具有明确含义的名称比大量使用临时名称更容易维护。

--

Value

表示变量实际对应的数据。

值可以是:

• 文本

• 数值

• 表达式

• 对其他变量或元数据的引用

例如可以建立一个固定数值:

pi → 3.14159

也可以建立用于取得元数据的表达式。

Fusion 变量因此不只是简单的“名称替换”,还可以把需要动态计算或读取的数据统一映射到一个容易调用的名称。官方文档明确说明,变量可以包含表达式,并且可以引用其他变量。

默认变量映射

Defaults

用于显示 Fusion 内置的默认变量映射。

当前界面包含:

metadata

对应值为:

self:GetMainInputValue(1).Metadata

这是 Fusion 内置的元数据变量,用于取得当前上下文中主输入上游图像携带的 Metadata。

借助这一默认映射,可以在表达式中进一步取得上游素材的具体元数据字段,而不需要每次重新编写完整的 Metadata 获取表达式。

例如,全局变量中的上游元数据可以通过:

fu.vars.metadata.[name]

调用;合成级变量则可以使用:

comp.vars.metadata.[name]

其中 [name] 表示需要读取的具体元数据名称。官方文档明确提供了这两种调用形式。

因此,metadata 可以理解为 Fusion 已经预先建立好的一个元数据入口变量。

一般不建议修改这个默认映射。

用户

User

用于保存用户自行建立的变量。

当前截图中 User 区域为空,表示还没有建立自定义全局变量。

用户变量适合保存需要在多个 Fusion 合成中重复使用的内容,例如:

• 制作者名称

• 工作室名称

• 固定目录名称

• 项目代号

• 输出版本标记

• 经常使用的数值

• 根据表达式取得的动态数据

例如建立:

MikeG

以后就可以通过变量名称调用这个值,而不需要在多个表达式或输出设置中反复填写相同文字。

需要注意,全局变量适合保存多个合成都需要使用的通用数据。如果某个值只属于一个特定 Fusion Composition,更适合建立合成级变量,以避免修改全局变量后影响其他合成。

新建

New

用于建立新的用户变量。

点击“新建”后,在下方填写“名称”和“值”,再保存设置,新变量就会出现在 User 区域。

例如:

artist

MikeG

保存后,可以在 Fusion 表达式中通过:

fu.vars.artist

调用这个全局变量。

如果相同变量是在 Composition 级 Variables Map 中建立,则使用:

comp.vars.artist

调用。

这里的 fu.vars 表示 Fusion 的全局变量集合;

comp.vars 表示当前 Composition 的合成级变量集合。

因此,两个作用域可以分别保存通用变量和当前合成专用变量。

1、在表达式中使用变量

Fusion 表达式可以直接读取 Variables Map 中定义的变量。

对于全局变量:

fu.vars.[变量名称]

例如:

fu.vars.artist

对于当前合成变量:

comp.vars.[变量名称]

例如:

comp.vars.artist

这种方式特别适合需要让多个节点共同使用同一个参数来源的情况。

例如多个 Text+ 节点都需要引用相同的项目名称时,可以先建立一个变量,再让所有相关表达式读取这个变量。以后只需修改 Variables Map 中的值,就可以统一改变所有引用它的位置。

2、使用素材元数据

变量系统还可以直接读取 Fusion 上游素材中的元数据。

默认的:

metadata

变量已经为这种操作建立了入口。

例如在表达式中,可以使用:

fu.vars.metadata.[name]

或者:

comp.vars.metadata.[name]

取得上游片段对应的 Metadata。

这样可以让节点参数根据素材元数据自动变化,例如把镜头、文件或其他元数据信息用于文字、路径或脚本处理。

具体可以读取哪些字段,取决于当前输入素材实际携带的 Metadata。

3、使用 Resolve 元数据

在 DaVinci Resolve 的 Fusion 页面中,还可以调用 Resolve 提供的元数据。

例如:

fu.vars.resolve["Timeline Name"]

可以取得相应的 Resolve 元数据。官方文档明确说明,在 Fusion 页面中可以通过 fu.vars.resolve 访问 Resolve Metadata。

这里的 Resolve Metadata 与前面的 metadata 有所不同:

• metadata:主要读取 Fusion 上游输入图像携带的 Metadata

• resolve:读取 DaVinci Resolve 提供给 Fusion 的项目、时间线、片段等相关元数据

因此,在 Resolve Fusion 页面制作自动标题、版本标识或动态文件名时,Resolve 元数据非常有用。

4、在Saver路径中使用变量

Variables Map 的另一个重要用途,是自动建立 Saver 的输出文件夹和文件名。

在 Saver 的“文件名”(Filename)中,可以使用:

%{变量名称}

调用自定义变量。

例如建立变量:

artist → MikeG

Saver 文件名中使用:

%{artist}

渲染时就可以把变量对应的内容加入路径或文件名。

输入素材 Metadata 可以采用:

%{metadata.metadataname}

Resolve 元数据则采用:

%{resolve:Resolve Metadata}

这使 Saver 可以根据素材、时间线或用户变量自动建立不同的输出目录和文件名。

例如大型 VFX 工作流程可以利用变量自动组织:

• 项目名称

• 镜头名称

• 版本号

• 输出类型

• 制作者

• 素材元数据

这样可以减少手工修改大量 Saver 路径时产生的错误。

--名称

Name

用于输入新变量的变量名,或者编辑当前可以修改的变量名称。

变量名称将成为表达式、脚本和 Saver 中用于调用该数据的标识,因此建立后最好保持稳定。

如果变量已经被大量表达式或脚本引用,再修改名称时,相应引用也需要同步检查。

--

Value

用于输入变量对应的值或表达式。

简单变量可以直接填写文本或数字;需要动态取得信息时,则可以使用 Fusion 支持的表达式。

变量还可以引用其他变量,因此可以建立从基础变量到派生变量的层级关系。

重置

Reset

用于将可重置的变量映射恢复到其默认定义。

例如 Fusion 自带的 metadata 属于 Defaults 中的内置映射。如果修改了相应默认定义,可以通过 Reset 恢复 Fusion 原有的变量设置。

对于 Fusion 自带的 Defaults,一般建议保持默认;需要扩展变量体系时,更适合通过“新建”在 User 区域建立自己的变量,以免破坏系统已经提供的标准变量映射。

点赞有美意,赞赏是鼓励