AE导出JSON:格式规范与实用指南
在After Effects(AE)中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,常用于动态链接、数据驱动动画或与其他工具(如网页、前端框架、数据库)的交互,但AE本身并未提供直接的“导出JSON”功能,JSON的生成通常依赖于第三方插件(如Bodymovin、LottieFiles插件)或通过AE的脚本(ExtendScript)自定义实现,本文将围绕AE相关场景下JSON的格式要求,从核心结构、数据类型、字段规范到实际应用场景展开说明,帮助开发者正确理解和处理AE导出的JSON数据。
AE中JSON的常见应用场景
在AE生态中,JSON并非原生导出格式,但通过以下方式会涉及JSON格式:
- Lottie动画导出:通过Bodymovin插件将AE动画导出为Lottie格式(本质是JSON),用于网页、App等跨平台动态渲染。
- 数据驱动动画:使用脚本项目(如“Data-driven动画”)将图层属性、关键帧数据导出为JSON,实现外部数据控制动画效果。
- 交互式项目集成:将AE动画的时间轴、事件触发点等数据导出为JSON,供前端或交互工具调用(如H5页面、小程序)。
核心格式规范:通用JSON结构要求
无论通过哪种方式导出,JSON需遵循通用语法规范,同时结合AE动画的特性补充特定字段,以下是核心格式要求:
基础语法规范
JSON是一种键值对(Key-Value)结构的数据格式,要求如下:
- 数据类型:支持字符串(
"value")、数字(123、14)、布尔值(true/false)、数组([])、对象()、null。 - 编码格式:必须使用UTF-8编码,避免中文或特殊字符乱码(需转义,如
"图层名称")。 - 层级结构:通过嵌套对象和数组表示复杂关系,例如一个动画可能包含多个图层,每个图层包含多个属性关键帧。
AE动画相关字段结构
以Lottie格式(最典型的AE导出JSON)为例,其结构需符合Lottie官方规范(https://github.com/airbnb/lottie-web),核心字段包括:
| 字段名 | 类型 | 说明 |
|---|---|---|
v |
字符串 | 版本号,如"5.5.2"(Lottie格式版本) |
fr |
数字 | 帧率(fps),如60(AE项目帧率需与此一致) |
w/h |
数字 | 画布宽度/高度(像素),如1920/1080 |
ip/op |
数字 | 起始帧(in point)/结束帧(out point),如0/120(动画总帧数) |
assets |
数组 | 资源列表(如图像、预合成),每个元素为对象,包含id、layers等字段 |
layers |
数组 | 图层列表,每个元素为对象,描述图层的类型、属性、关键帧等 |
markers |
数组 | 标记点(如动画分段、事件触发),每个元素包含time、duration、name |
图层与关键帧数据格式
以layers字段为例,单个图层的JSON结构需包含AE图层的关键属性:
{
"ddd": 0, // 3D图层开关(0=2D,1=3D)
"ind": 1, // 图层索引(从1开始)
"ty": 0, // 图层类型(0=预合成,1=形状,2=图像,3=Null等)
"nm": "形状图层 1", // 图层名称
"ks": { // 核心属性(Keyframes,关键帧)
"a": { // Anchor(锚点)
"k": [ // 关键帧数组
{
"t": 0, // 时间(帧)
"s": [0, 0] // 值(x, y坐标)
},
{
"t": 60,
"s": [100, 100]
}
]
}
},
"ao": 0, // 混合模式
"ip": 0, // 图层起始帧
"op": 120 // 图层结束帧
}
- 关键帧(
k字段):t表示时间(帧),s表示静态值,e表示结束值(用于缓动),i和o表示输入/输出缓动曲线(贝塞尔控制点)。 - 属性类型:不同图层属性对应不同数据类型,如位置(
"p")是[x, y]数组,旋转("r")是数字,不透明度("o")是0-100的数字。
资源引用格式
若动画包含外部资源(如图像、视频),assets字段需定义资源路径和引用方式:
{
"assets": [
{
"id": "image_1",
"w": 500,
"h": 300,
"p": "images/logo.png", // 资源相对路径
"u": "assets/", // 资源基础路径
"e": 0 // 资源类型(0=图像,1=预合成等)
}
]
}
不同导出工具的格式差异
由于AE本身不直接支持JSON导出,实际格式会因工具而异:
Bodymovin(Lottie导出)
- 严格遵循Lottie规范:字段名称、数据类型需与Lottie官方文档一致,否则无法在前端(如LottieWeb、Lottie-iOS)正确渲染。
- 支持AE核心属性:位置、缩放、旋转、不透明度、蒙版、形状路径等属性均可导出为JSON关键帧。
- 限制:不支持AE特效(如模糊、发光)的完整导出,部分复杂效果需简化或替代。
自定义ExtendScript脚本
若通过AE脚本(如“导出关键帧数据”)生成JSON,格式可自定义,但需注意:
- 字段命名清晰:避免使用AE内部保留字(如
layer、property),改用ae_layer、ae_property以避免冲突。 - 数据完整性:需包含图层名称、属性类型、关键帧时间/值、缓动信息等,否则外部工具无法解析。
- 示例简化结构:
{ "project_name": "动画项目", "layers": [ { "name": "文字图层", "properties": [ { "property": "位置", "keyframes": [ {"time": 0, "value": [0, 0]}, {"time": 30, "value": [500, 300]} ] } ] } ] }
第三方工具(如AE脚本插件)
部分插件(如“JSON Exporter”)可能提供自定义导出选项,需参考插件文档确认字段格式,例如是否包含图层父子关系、表达式数据等。
常见问题与注意事项
- 帧率一致性:JSON中的
fr(帧率)必须与AE项目帧率一致,否则动画播放速度会出错。 - 路径引用:外部资源路径需为相对路径(如
"images/bg.png"),并确保目标环境路径结构一致,避免404错误。 - 数据简化:AE复杂表达式、3D摄像机运动等可能无法完整导出,需提前测试或简化效果。
- 版本兼容:不同版本的Bodymovin插件导出的JSON格式可能略有差异,需与目标渲染工具(如LottieWeb版本)匹配。
AE导出JSON的格式核心取决于使用场景:若通过Bodymovin导出Lottie动画,需严格遵循Lottie规范;若通过自定义脚本,则需根据需求设计清晰、可解析的结构,无论是哪种方式,都需确保JSON语法正确、数据类型匹配、字段含义明确,才能实现AE与其他工具的顺畅数据交互,开发者在实际操作中,建议



还没有评论,来说两句吧...