前端页面自动渲染AE动画方案

xerduo 2024-08-22 14:03:01 阅读 81

登录页面设计师做了很酷炫的动画效果,想到的三种实现方式:

1、导出GIF图给前端渲染

2、导出视频给前端渲染

3、导出动画的每一帧图片给前端序列合成动画

后来这三种方式因显示效果不好,体积大或者实现复杂等原因被否定了。

调研

经调研发现 Lottie是可应用于Android, iOS, Web和Windows的库,通过Bodymovin解析AE动画,并导出可在移动端和web端渲染动画的json文件。换言之,设计师用AE把动画效果做出来,再用Bodymovin导出相应地json文件给到前端,前端使用Lottie库就可以实现动画效果,如下图:

设计师安装与使用Bodymovin

1、关闭AE

2、下载并安装ZXP installer https://aescripts.com/learn/zxp-installer/

3、下载最新版bodymovin插件 lottie-web/build/extension/bodymovin.zxp at master · airbnb/lottie-web · GitHub

4、把下载好的bodymovin.zxp拖到ZXP installer

5、打开AE,在菜单首选项->常规中勾选☑️允许脚本写入文件和访问网络(否则输出JSON文件时会失败)

6、在AE中制作动画,打开菜单窗口->拓展->Bodymovin,勾选要输出的动画,并设置输出文件目录,点击render

打开输出目录会看到生成的JSON文件,若动画里导入了外部图片,则会在images中存放JSON中引用的图片

前端安装与使用lottie

1、安装依赖 npm install lottie-web

2、调用 lottie

<code>// 引入lottie

import lottie from 'lottie-web';

/*

*/

// 使用

this.animation = lottie.loadAnimation({

container: this.$refs.loginContent,

renderer: 'svg',

loop: true,

autoplay: true,

animationData: loginJson,

assetsPath: '/static/animation/login/',

});

loadAnimation参数

参数 释义
container 用于渲染动画的HTML元素,需确保在调用loadAnimation时该元素已存在
renderer 渲染器,可选值为’svg’(默认值)/‘canvas’/‘html’。
loop 默认值为true。可传递需要循环的特定次数
autoplay 自动播放
path JSON文件路径
animationData JSON数据,与path互斥
name 传递该参数后,可在之后通过lottie命令引用该动画实例
rendererSettings 可传递给renderer实例的特定设置,具体可看

(renderer html的性能更好且支持3d图层)

调试

由于创建Lottie动画和平常制作AE动画有所不同,设计师和前端之间有个动画效果联调的过程,为了提高联调效率,设计师可先进行初步的效果预览,再把文件交付给前端。

预览方法

1、渲染前设置所要渲染的文件

2、勾选☑️Demo选项

在输出的文件目录中就可找到可预览的html文件

设计师注意事项

对设计师而言,创建Lottie动画和往常制作AE动画有所不同,此文档 (Lottie Docs) 记录了Bodymovin支持输出的AE功能列表,动画制作前需跟设计师沟通好,根据动画加载平台来确认可使用的AE功能。

除此之外,尽量遵循官方文档里对设计过程的指导和建议:

1、动画简单化。

创建动画时需时刻记着保持JSON文件的精简,比如尽可能地绑定父子关系,在相似的图层上复制相同的关键帧会增加额外的代码,尽量不使用占用空间最多的路径关键帧动画。诸如自动跟踪描绘、颤动之类的技术会使得JSON文件变得非常大且耗性能。

2、建立形状图层。

将AI、EPS、SVG和PDF等资源转换成形状图层否则无法在Lottie中正常使用,转换好后注意删除该资源以防被导出到JSON文件。

3、设置尺寸。

在AE中可设置合成尺寸为任意大小,但需确保导出时合成尺寸和资源尺寸大小保持一致。

4、不使用表达式和特效。

Lottie暂不支持。

5、注意遮罩尺寸。

若使用alpha遮罩,遮照的大小会对性能产生很大的影响。尽可能地把遮罩尺寸维持到最小。

6、动画调试。

若输出动画破损,通过每次导出特定图层来调试出哪些图层出了问题。然后在github中附上该图层文件提交问题,选择用其他方式重构该图层。

7、不使用混合模式和亮度蒙版。

8、不添加图层样式。

9、全屏动画。

设置比想要支持的最宽屏幕更宽的导出尺寸。

10、设置空白对象。

若使用空白对象,需确保勾选可见并设置透明度为0%否则不会被导出到JSON文件。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。