用AE + bodymovin制作動(dòng)畫

我的博客地址:www.viggoz.com
這篇文章簡單總結(jié)了一下網(wǎng)頁和移動(dòng)App中動(dòng)畫的實(shí)現(xiàn)方法捞稿,bodymovin無疑是一個(gè)很好的解決方案累盗,也可以說是最好的解決方案亲族。

1. 關(guān)于

關(guān)于網(wǎng)頁端動(dòng)畫實(shí)現(xiàn)

web端做動(dòng)畫有多種形式国裳,可以用CSS的animation鬓照,也可以用Canvas,或者是用JS控制CSS的屬性形成動(dòng)畫秽之。我們經(jīng)常使用CSS做一些比較簡單的動(dòng)畫当娱,像過度、加載的動(dòng)畫考榨,對于一些比較復(fù)雜的跨细,可能會(huì)做成gif,或者是用Canvas河质,使用Canvas的控制粒度可以很細(xì)冀惭,同時(shí)工作量相對也比較大。做動(dòng)畫還有其它的方式掀鹅,那就是使用After Effect(AE)/Flash/Premiere(Pr)/會(huì)聲會(huì)影等視頻軟件散休,這種可視化的制作方式相對于直接寫代碼來說,會(huì)更容易簡單自然淫半。做動(dòng)畫本身應(yīng)該使用工具進(jìn)行制作溃槐,但是這種視頻軟件做出來的動(dòng)畫最后都是生成視頻文件,并且通常體積還很大科吭,沒有辦法直接移植到網(wǎng)頁上去昏滴。然而好消息是猴鲫,現(xiàn)在我們可以使用AE做動(dòng)畫,然后使用bodymovin插件導(dǎo)出成html文件進(jìn)行播放谣殊。

關(guān)于移動(dòng)應(yīng)用動(dòng)畫實(shí)現(xiàn)

  • 使用 Gif拂共,這種方式當(dāng)然可行,但是使用 Gif 占用空間較大姻几,而且需要為各種屏幕尺寸宜狐、分辨率做適配,因?yàn)?Android 沒有提供原生 Gif 的 api 支持蛇捌,所以這種方案還會(huì)遇到兼容性問題抚恒;

  • 使用幀動(dòng)畫内斯,這種方式還不如使用 Gif畅蹂,一般來說使用幀動(dòng)畫占用空間比 Gif 還要大的多,而且一樣要做多屏幕分辨率的適配悦荒,不過不會(huì)遇到兼容性問題春贸;

  • 使用視頻混萝,這種方式當(dāng)然可以,但是一般來說宣傳片才用的上視頻萍恕,一般的動(dòng)畫遠(yuǎn)不需要用視頻才能實(shí)現(xiàn)的逸嘀,未免有些大材小用了,而且占用空間依然很大允粤。

  • Android 5.x 之后提供了對 SVG 的支持崭倘,通過 VectorDrawable、AnimatedVectorDrawable 的結(jié)合可以實(shí)現(xiàn)一些稍微復(fù)雜的動(dòng)畫维哈,兼容性是一個(gè)問題绳姨,不過整個(gè)實(shí)現(xiàn)流程非常麻煩,每次全新實(shí)現(xiàn)一個(gè)動(dòng)畫都得重頭來過阔挠,最最關(guān)鍵的是,如果一個(gè)公司下的 App脑蠕,iOS 也要實(shí)現(xiàn)一套一樣的動(dòng)畫购撼,資源的占用就顯得過大了。

  • Facebook 開源了一個(gè)類似的庫叫做 Keyframes谴仙,Keyframes是將AE動(dòng)畫轉(zhuǎn)換為允許在Android和iOS設(shè)備上呈現(xiàn)的數(shù)據(jù)格式的庫迂求。也是跨平臺的,但是本文介紹的 Littie 比 Keyframes 支持的特性更多晃跺。這里不做研究揩局。這個(gè)庫的開源地址在這里:https://facebookincubator.github.io/Keyframes/有興趣的同學(xué)可以去看下。

2. bodymovin

Bodymovin實(shí)現(xiàn)動(dòng)畫

用Adobe公司的after effect軟件做出來動(dòng)畫掀虎,用Bodymovin的AE插件可以將動(dòng)畫導(dǎo)出為json文件凌盯,bodymovin就是這個(gè)動(dòng)畫json文件的前端播放器付枫,支持渲染為svg\canvas\html三種格式。它不僅可以播放動(dòng)畫驰怎,可以完全控制動(dòng)畫的播放阐滩、暫停、速率县忌、播放對應(yīng)幀等等掂榔。更可以做到更改幀對象的位置。

如何使用Bodymovin

Lottie官方網(wǎng)址:http://airbnb.design/lottie/#get-started
Bodymovin AE Extension下載地址:https://github.com/airbnb/lottie-web/tree/master/build/extension

官方教程:點(diǎn)我
翻譯教程:點(diǎn)我

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

栗子

這是我做的一個(gè)栗子症杏,Github地址: https://github.com/ViggoZ/notification_guide_motion/tree/gh-pages
網(wǎng)頁實(shí)現(xiàn)效果: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>

可以直接下載項(xiàng)目装获,自己用AE做好動(dòng)畫,生成data.json和image文件之后替換項(xiàng)目相應(yīng)位置即可運(yùn)行厉颤。

注意:這里有一點(diǎn)要說明一下穴豫,bodymovin的json文件在chrome中瀏覽是要有服務(wù)器環(huán)境才可以運(yùn)行的,不然會(huì)報(bào)錯(cuò)走芋,本地預(yù)覽使用safari沒問題绩郎,估計(jì)是瀏覽器協(xié)議的問題。

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

3. 總結(jié)

使用bodymovin實(shí)現(xiàn)動(dòng)畫是現(xiàn)在非常方便的一種方法翁逞,尤其是在做一些復(fù)雜動(dòng)畫的時(shí)候可以做到設(shè)計(jì)與實(shí)現(xiàn)完全分開肋杖。設(shè)計(jì)師專注動(dòng)畫制作,對于開發(fā)者而言只需要調(diào)用即可挖函。不過缺點(diǎn)也是有的状植,設(shè)計(jì)師需要先通過AI設(shè)計(jì)矢量動(dòng)畫素材,然后在AE中導(dǎo)入的ai圖層上右鍵 > 從矢量圖層創(chuàng)建形狀怨喘。但也是有很多種情況需要用AE去重新畫矢量圖形津畸,個(gè)人覺得AE畫圖實(shí)在是累(畢竟不是專業(yè)的畫圖軟件)所以我比較喜歡直接用sketch或者ps設(shè)計(jì),然后直接輸出切圖再在AE中制作動(dòng)畫必怜。這個(gè)缺點(diǎn)也是明顯的肉拓,圖片素材太大。

還有就是我看過現(xiàn)在很多第三方制作動(dòng)畫的應(yīng)用可以直接生成代碼梳庆,而且可以和sketch無縫對接暖途,直接導(dǎo)入sketch設(shè)計(jì)文件,但是缺點(diǎn)也是很明顯的膏执,不適合多種平臺開發(fā)驻售,動(dòng)畫制作功能明顯沒有Adobe家的AE強(qiáng)大。但是用來做交互動(dòng)畫還是很好用的更米。比如principle??欺栗。

注:本文轉(zhuǎn)載請注明原文地址: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/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迟几,更是在濱河造成了極大的恐慌消请,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤旨,死亡現(xiàn)場離奇詭異梯啤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)存哲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門因宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祟偷,你說我怎么就攤上這事察滑。” “怎么了修肠?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵贺辰,是天一觀的道長。 經(jīng)常有香客問我嵌施,道長饲化,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任吗伤,我火速辦了婚禮吃靠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘足淆。我一直安慰自己巢块,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布巧号。 她就那樣靜靜地躺著族奢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丹鸿。 梳的紋絲不亂的頭發(fā)上越走,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音靠欢,去河邊找鬼弥姻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掺涛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疼进,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼薪缆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拣帽,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤疼电,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后减拭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔽豺,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年拧粪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了修陡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡可霎,死狀恐怖魄鸦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情癣朗,我是刑警寧澤拾因,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站旷余,受9級特大地震影響绢记,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜正卧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一蠢熄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穗酥,春花似錦护赊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抽高,卻和暖如春判耕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘骂。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工壁熄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碳竟。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓草丧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親莹桅。 傳聞我的和親對象是個(gè)殘疾皇子昌执,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容