用AE + bodymovin制作动画

我的博客地址:www.viggoz.com
这篇文章简单总结了一下网页和移动App中动画的实现方法,bodymovin无疑是一个很好的解决方案,也可以说是最好的解决方案。

1. 关于

关于网页端动画实现

web端做动画有多种形式,可以用CSS的animation,也可以用Canvas,或者是用JS控制CSS的属性形成动画。我们经常使用CSS做一些比较简单的动画,像过度、加载的动画,对于一些比较复杂的,可能会做成gif,或者是用Canvas,使用Canvas的控制粒度可以很细,同时工作量相对也比较大。做动画还有其它的方式,那就是使用After Effect(AE)/Flash/Premiere(Pr)/会声会影等视频软件,这种可视化的制作方式相对于直接写代码来说,会更容易简单自然。做动画本身应该使用工具进行制作,但是这种视频软件做出来的动画最后都是生成视频文件,并且通常体积还很大,没有办法直接移植到网页上去。然而好消息是,现在我们可以使用AE做动画,然后使用bodymovin插件导出成html文件进行播放。

关于移动应用动画实现

  • 使用 Gif,这种方式当然可行,但是使用 Gif 占用空间较大,而且需要为各种屏幕尺寸、分辨率做适配,因为 Android 没有提供原生 Gif 的 api 支持,所以这种方案还会遇到兼容性问题;

  • 使用帧动画,这种方式还不如使用 Gif,一般来说使用帧动画占用空间比 Gif 还要大的多,而且一样要做多屏幕分辨率的适配,不过不会遇到兼容性问题;

  • 使用视频,这种方式当然可以,但是一般来说宣传片才用的上视频,一般的动画远不需要用视频才能实现的,未免有些大材小用了,而且占用空间依然很大。

  • Android 5.x 之后提供了对 SVG 的支持,通过 VectorDrawable、AnimatedVectorDrawable 的结合可以实现一些稍微复杂的动画,兼容性是一个问题,不过整个实现流程非常麻烦,每次全新实现一个动画都得重头来过,最最关键的是,如果一个公司下的 App,iOS 也要实现一套一样的动画,资源的占用就显得过大了。

  • Facebook 开源了一个类似的库叫做 Keyframes,Keyframes是将AE动画转换为允许在Android和iOS设备上呈现的数据格式的库。也是跨平台的,但是本文介绍的 Littie 比 Keyframes 支持的特性更多。这里不做研究。这个库的开源地址在这里:https://facebookincubator.github.io/Keyframes/有兴趣的同学可以去看下。

2. bodymovin

Bodymovin实现动画

用Adobe公司的after effect软件做出来动画,用Bodymovin的AE插件可以将动画导出为json文件,bodymovin就是这个动画json文件的前端播放器,支持渲染为svg\canvas\html三种格式。它不仅可以播放动画,可以完全控制动画的播放、暂停、速率、播放对应帧等等。更可以做到更改帧对象的位置。

如何使用Bodymovin

Lottie官方网址:http://airbnb.design/lottie/#get-started
Bodymovin AE Extension下载地址:https://github.com/airbnb/lottie-web/tree/master/build/extension

官方教程:点我
翻译教程:点我

Android:https://github.com/airbnb/lottie-android
iOS:https://github.com/airbnb/lottie-ios
ReactNative:https://github.com/airbnb/lottie-react-native

栗子

这是我做的一个栗子,Github地址: https://github.com/ViggoZ/notification_guide_motion/tree/gh-pages
网页实现效果:http://viggoz.com/notification_guide_motion/

主要代码:

<body>
    <div id="bm"> </div>
    <script src="scripts/bodymovin.js"></script>
    <script>
    var animation = bodymovin.loadAnimation({
        container: document.getElementById('bm'),
        renderer: 'svg',
        loop: true,
        autoplay: true,
        path: 'data.json'
    })
    </script>
</body>

可以直接下载项目,自己用AE做好动画,生成data.json和image文件之后替换项目相应位置即可运行。

注意:这里有一点要说明一下,bodymovin的json文件在chrome中浏览是要有服务器环境才可以运行的,不然会报错,本地预览使用safari没问题,估计是浏览器协议的问题。

bodymovin官方下载:https://github.com/airbnb/lottie-web/blob/master/build/player/lottie.js

3. 总结

使用bodymovin实现动画是现在非常方便的一种方法,尤其是在做一些复杂动画的时候可以做到设计与实现完全分开。设计师专注动画制作,对于开发者而言只需要调用即可。不过缺点也是有的,设计师需要先通过AI设计矢量动画素材,然后在AE中导入的ai图层上右键 > 从矢量图层创建形状。但也是有很多种情况需要用AE去重新画矢量图形,个人觉得AE画图实在是累(毕竟不是专业的画图软件)所以我比较喜欢直接用sketch或者ps设计,然后直接输出切图再在AE中制作动画。这个缺点也是明显的,图片素材太大。

还有就是我看过现在很多第三方制作动画的应用可以直接生成代码,而且可以和sketch无缝对接,直接导入sketch设计文件,但是缺点也是很明显的,不适合多种平台开发,动画制作功能明显没有Adobe家的AE强大。但是用来做交互动画还是很好用的。比如principle🌚。

注:本文转载请注明原文地址:http://viggoz.com/2017/08/09/2017-08-09-Bodymovin/

参考:

https://facebookincubator.github.io/Keyframes/
https://github.com/panacena/LottieTest/
https://juejin.im/post/58948f1b0ce4630056f3a629
http://www.mq2014.com/after-effect-zhuan-svg-dong-hua-shen-qi-de-bodymovin-cha-jian.html
http://www.renfed.com/2017/08/06/ae-bodymovin/
https://codepen.io/airnan/project/editor/ZeNONO/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容