使用数据驱动的动画
数据驱动的动画是使用从各种数据源收集的实时数据创建的,这些数据源驱动着合成中的动画。您可以使用来自多个数据源的数据。数据可以为静态或随时间变化。您可以将数据导入 After Effects 项目并将其用作输入,用于对图形、字符、控件视觉效果、电影字幕以及其他动态图形进行动画制作。
数据驱动的动画示例数据源
您可以使用几乎所有可能的来源的数据,例如:
- 设备生成的数据文件 – 来自通过传感器记录活动并以不同文件格式对其进行存储的设备(例如健身跟踪器)的数据。这是随时间变化的数据,包括速度、高度、距离、心率以及用户活动的各种其他参数。
- 用户生成的静态数据 – 可以更改以驱动图形的全局静态数据,例如调查结果。用户创建的数据文件可以为全局数据提供工作流程。
- URL – 来自网站的实时数据,例如用户浏览网页的登入和退出路径。
- 元数据 – 嵌入在视频文件元数据中的数据。
输入格式
您可以导入下列格式的数据文件:
- JSON
- MGJSON
- CSV
- TSV
如果您的数据文件采用其他格式,请将其转换为任何受支持的导入文件格式,然后将其导入 After Effects 项目。有多种转换工具可用于将数据文件转换为 After Effects 支持的格式。
数据驱动的动画
数据驱动的动画支持标准 JSON (.json)
您可以将标准 JSON 文件作为素材导入到 After Effects 中,数据文件会在后台运行。After Effects 会直接引用这些数据文件中的数据来驱动项目中的动画。在“时间轴”面板中,JSON 素材不会表现为数据流。您可以使用表达式作为计算的 JSON 对象来引用数据。
您可以修改表达式以更改数据的引用方式。您可以在文本编辑器中编写数据,After Effects 将引用这些数据来驱动动画。JSON 支持基于 JSON 架构,该架构指定和定义应用程序如何使用和修改 JSON 数据。
JSON 的基本数据类型为:
- 数字:带符号的十进制数字。
- 字符串:零个或多个 Unicode 字符的序列。
- 布尔值:值 true 或 false。
- 数组:零个或多个值的有序列表。
- 对象:名称或值对的无序集合,其中名称(键)是字符串。
- Null:一个空值,使用单词“null”。
在 After Effects 中使用 JSON 文件
要处理标准 JSON 文件,请使用以下步骤:
- 选择“文件”>“导入”。
- 要导入,请选择一个.JSON 文件并单击“打开”。
- 该文件将添加到项目窗口。使用素材创建合成。
- 向该合成中添加纯色。要添加纯色,请选择“图层”>“纯色”。
- 在“时间轴”面板中,旋转打开纯色图层的属性,然后按住 Alt 键并单击“不透明度”参数。
- 在表达式中更改数据以修改动画。您可以控制 JSON 数据,并从存储所有信息的数据文件引用数据。
- 您也可以将 JSON 文件替换为另一个 JSON 文件,以更改引用的数据。要进行替换,请选择“替换素材”>“文件”,然后从计算机打开新文件。
要使用数据,您可以对想要数据驱动的属性应用表达式,然后执行以下操作:
- 使用 sourceData 属性读取 .JSON 文件中的数据。例如:
var sampleData = footage("sample.json").sourceData;
- 要返回其值,请引用 JSON 数据内的特定属性。例如:
myData.engineData.RPM or myData.latitude.value.
支持动态图形 JSON (.mgJSON)
您可以导入 MGJSON 数据文件作为项目中的素材。将数据素材添加到合成中时,数据属性流将分组到顶层组“数据”中。数据组将素材数据显示为属性。数据组中的每个属性都通过表达式链接回使用表达式 footage("foo.mgjson").dataValue(N) 访问数据文件值的素材文件。此处,N 指文件中数据流的路径。MGJSON 基于一个架构,它旨在简化 After Effects 中的引用和导入数据流。
每个数据属性都会应用一个表达式,将该属性链接到 MGJSON 文件中的数据。如果源 MGJSON 文件发生变化,数据属性值会自动更新。
在“时间轴”面板中,您可以旋转打开“数据”图层,并使用关联器将参数链接到其他参数。这些更改将自动填充。
在 After Effects 中使用 MGJSON 素材
要处理 MGJSON 文件,请使用以下步骤:
- 选择“文件”>“导入”。
- 要导入,请选择一个要导入的 MGJSON文件并单击“打开”。
- 该文件将添加到项目窗口。使用素材创建合成。
- 将资源导入项目并将其添加到合成。
- 在“时间轴”面板中,旋转打开素材的属性。
- 将资源的属性之一(例如,“旋转”)用“关联器”关联到数据图层中的一个数据流。资源属性现在引用数据图层中的数据。每个反映的数据流都有一个从素材文件中提取其值的表达式。
- 当您预览素材时,资源将基于数据图层的数据流进行动画制作。
您还可以将数据文件中的数据示例转换为关键帧。要转换为关键帧,请按照下列步骤操作:
- 将 MGJSON 文件导入到项目中并拖动到“时间轴”面板中。
- 右键单击数据图层,然后从“图层和关键帧辅助”菜单中选择“关键帧辅助”>“从数据创建关键帧”。
- 要查看关键帧,请旋转打开数据图层。
注意:关键帧转换之后,数据不再是实时数据,且不再从数据文件引用。
您还可以在“图表编辑器”中以图表形式查看实时数据。要进行查看,请在“时间轴”面板中单击“图表编辑器”图标。
数据驱动的动画使用表达式引用。有关更多信息,请参阅数据驱动的动画(表达式引用)。
将视频按时间与 mgJSON 数据对齐
“图层”>“时间”>“将视频对齐到数据”命令会使视频图层偏移 mgJSON 文件中指定的不同帧。您可以使用此命令将视频按时间对齐到匹配的 mgJSON 文件中存储的数据示例。例如,如果您捕获比赛期间的数据,但视频开始时间与所捕获数据的开始时间不匹配,则您可以指定偏移,以使数据自动对齐。
要将视频按时间对齐到 mgJSON 数据,请使用以下步骤:
- 将 .mgJSON 文件添加到也包含目标图层的合成。
- 选择 .mgJSON 图层和目标图层。
- 选择“图层”>“时间”>“将视频对齐到数据”。
为了使此命令生效,mgJSON 文件必须包含 videoSyncTimeList 组,其包含:
- 一个或多个目标图层的名称 (fileName)
- 图层要从数据图层开头偏移的帧数量 (frameNumber)。
例如:
"videoSyncTimeList": [
{
"fileName": "sample1.mp4",
"frameNumber": 1000
},
{
"fileName": "sample2.mp4",
"frameNumber": -1000
}
fileName 值必须为所选图层的图层名称,而不是图层的源名称。如果将图层名称更改为合成中的源,例如,将图层“sample1.mp4”重命名为“Race Camera 1”,则您还需要更改 mgJSON 文件中的 fileName 值进行匹配。fileName 引用的图层无需是具有源文件的素材项,也可以是纯色图层、嵌套合成或其他图层类型。
正 frameNumber 值会使目标图层向左偏移(在数据图层之前)。负 frameNumber 值会使目标图层向右偏移(在数据图层之后)。frameNumber 值等于 0 时,将目标图层的起点与数据图层的起点对齐。
支持 CSV (.csv) 和 TSV(.tsv 或 .txt)
您可以将逗号分隔值 (.csv) 和制表符分隔值(.tsv 或 .txt)文件作为素材导入 After Effects 并将其用作数据源。CSV 和 TSV 文件存储表格数据,采用纯文本格式,且值按逗号字符或制表符字符分隔。CSV 和 TSV 数据文件的工作方式与 JSON 文件类似。
要在 After Effects 中使用 CSV 或 TSV 数据文件,请按照以下步骤操作:
- 将 CSV 或 TSV 文件作为素材导入项目中,像您导入视频、音频或其他文件一样。使用以下任一方法将文件作为素材导入:
- 选择“文件”>“导入”。
- 右键单击“项目”面板,然后选择“导入”>“文件类型”。
- 双击“项目”面板。
- 该文件将添加到项目窗口。使用文件创建合成。
- 在“时间轴”面板中,旋转打开素材的属性。使用“表达式”关联器或“属性链接”关联器将合成中图层的数据属性链接到另一个图层。要打开表达式文本字段,请按住 Shift 键并单击与图层名称相对的计时器图标。您还可以通过“编辑”>“带属性链接复制”命令链接数据属性。
要了解时间轴中的图层数据属性,请参阅数据属性基础知识。
- 要引用数据素材文件,请对数据要驱动的属性使用表达式。使用 dataValue() 素材属性从指定行和列读取数据。行和列为零索引。例如,footage("sample.tsv").dataValue([15,1]) 返回第 2 列第 16 行的值。
数据属性基础知识
当您向合成添加 JSON、CSV 或 TSV 文件并打开属性时,属性仅包含“数据”属性组,而不是“变换”属性组。“数据”属性组包含文件中定义的数据层次结构。
“时间轴”面板中的 JSON 数据属性组“时间轴”面板中的 CSV 和 TSV 数据属性组此数据组类似于 After Effects 处理动态图形 JSON (.mgJSON) 文件的方式。区别是 JSON、CSV 和 TSV 仅可包含静态数据值,而 mgJSON 可以包含动态数据(随时间变化的数据)。
每个数据属性都会应用一个表达式,将该属性链接到 JSON、CSV 或 TSV 文件中的数据。如果更改源数据文件,数据属性值将反映所做的更改。
使用“属性链接”关联器链接属性
如果您不想编写复杂表达式,可以使用“属性链接”关联器或“编辑”>“带属性链接复制”命令将数据属性链接到其他图层的属性。链接图层时,“属性链接”关联器将自动编写表达式。
自定义表达式函数库 - JSX
在 After Effects 15.0 中,可以导入定义自定义 JavaScript 函数的 JSON 文件,该文件可用作自定义表达式函数的库。在 After Effects 15.1 中,JavaScrpt 对象不是 JSON 的合法语法。After Effects 15.1 使用另外一种严格的 JSON 解析器,其不允许导入包含非法语法的 JSON 文件。
如果您尝试在 After Effects 15.1 中导入定义了 JavaScript 函数的 JSON 文件,或打开包含此类文件的项目,After Effects 将显示错误。
为了避免此问题,您可以将 JavaScript 语法扩展文件 (.jsx) 导入到 After Effects 15.1 中。JSX 文件的内容可以与导入到 After Effects 15.0 中的 JSON 文件相同,您仅需将文件名扩展更改为 .jsx。如果打开包含无效 JSON 文件的现有项目,请使用“文件”>“替换素材”将 JSON 文件替换为 JSX 文件。对 JSON 文件的表达式引用将替换为对 JSX 文件的引用。
数据驱动的动画的已知问题
在 After Effects 中使用数据驱动的动画时,可能会遇到几个问题。有关完整列表,请参阅数据驱动的动画的已知问题。