写点什么

AirBnb 开源动画引擎 Lottie:采用 Core Animation 提高性能

  • 2022-12-29
    北京
  • 本文字数:941 字

    阅读完需:约 3 分钟

AirBnb开源动画引擎Lottie:采用Core Animation提高性能

AirBnb宣布了其开源矢量动画引擎 Lottie 的第四次主要迭代。AirBnb iOS 工程师 Cal Stephens 表示,由于采用了核心动画(Core Animation),Lottie 4.0 提供了显著的性能改进,并降低了 CPU 负载。

 

Lottie 是一个用于 iOS 和 Android 的库,可以实时渲染 After Effects 动画。Lottie 中的动画是通过 JSON 文件描述的,可以使用Bodymovin插件从 After Effects 中导出。Lottie 将对 JSON 进行解码,并访问渲染动画所需的所有资源,就像它只是应用程序中的另一个静态资源一样。

 

在 Lottie 4.0 中,AirBnb 放弃了使用CADisplayLink在主 CPU 线程上制作图形动画的原始方法:

 

每帧一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容。这意味着动画在播放时将消耗 5–20%以上的 CPU,从而减少了用于应用程序其余部分的可用 CPU 周期。

 

根据 Stephens 的说法,这使得 Lottie 在更复杂的情况下无法维持所需的帧速并且开始丢弃帧会变得相对常见。此外,当主线程忙于一些昂贵的任务时,动画可能会出现一些抖动。

 

切换到核心动画(Core Animation)意味着动画被卸载到 GPU 上,这有三个好处:利用硬件加速,减少 CPU 负载,并在 CPU 繁忙时提高帧速。

 

例如,Airbnb 应用程序在首次启动时显示 Lottie 动画。我们在这里进行了一项实验,发现切换到新的渲染引擎可以缩短应用程序的总启动时间,同时还可以提高启动动画的帧速和用户体验。

 

除了新的基于核心动画(Core Animation)的渲染引擎外,Lottie 4.0 还带来了一种新的文件格式,它使用压缩将一个或多个 Lottie JSON 文件及其相关资源聚合到一个文件中。JSON 解码管道已被重写,速度提高了约 2 倍。

 

Lottie 最初是用 Objective-C 编写的,两年前在 Swift 中被完全重写,最终发布了第 3 版。你可以从GitHub repo或使用包管理器(如 CocoaPods、Carthage 或 Swift 包管理器)安装它。

 

作者简介:

Sergio De Simone 是一名软件工程师。Sergio 已经在一系列不同的项目和公司担任软件工程师超过 15 年,其中包括西门子、惠普和小型创业公司等不同的工作环境。在过去的几年里,他一直专注于移动平台和相关技术的开发。他目前就职于 BigML,Inc.,负责 iOS 和 OS X 的开发。

 

原文链接:

https://www.infoq.com/news/2022/12/airbnb-lottie-4/


相关阅读:

React 源码解读之 React Fiber

虚拟角色赛道的新“闯入者”:3D 引擎 Cocos 和它的新故事

2022-12-29 08:002500

评论

发布
暂无评论
发现更多内容

Apache APISIX 2.10.0 正式发布,带来第一个 LTS 版本!

Apache APISIX 中文社区

开源 API网关 APISIX Apache APISIX

现成filecoin算力挖矿软件系统开发公司

越来越被需要的售前工程师·「这就是售前」前言

jiezhao

售前 企业服务

Apache APISIX 社区周报 | 2021 10.1-10.14

Apache APISIX 中文社区

开源社区 API网关 APISIX 社区周报 Apache APISIX

[论文分享]VulDeePecker:基于深度学习的漏洞检测技术

maijun

机器学习 静态代码分析 VulDeePecker 漏洞检测

康威定律

俞凡

架构 认知

IPFS算力挖矿系统开发方案(源码案例)

Java 面试八股文之数据库篇(一)

Dobbykim

filecoin云算力挖矿系统软件开发源码搭建

Java容器学习二

六维

Java 10月月更

Go应用场景与适应项目

hanaper

Large Scale Distributed Deep Networks论文记录

春秋易简

丰收音乐会,去找美丽却隐秘的生机

新闻科技资讯

小红书爆款笔记如何写,掌握3种类型的笔记写法

石头IT视角

北鲲云超算如何让仿真技术、HPC和人工智能之间的深度融合?

北鲲云

【日志技术专题】「logback入门到精通」彻彻底底带你学会logback框架的使用和原理(入门介绍篇)

洛神灬殇

Java logback 日志系统 10月月更

FIL云算力分币软件系统开发内容(源码)

IPFS分币挖矿系统软件开发资料(现成)

站立会(Daily Scrum)我们说些什么

Bruce Talk

Scrum 敏捷 Agile Coach/Facilitate

Golang网络编程

CodeWithBuff

golang 网络编程 Go 语言 web socket

Vue进阶(幺叁玖):textarea文本框根据内容自适应改变高度

No Silver Bullet

Vue 10月月更

微信小程序获取用户授权的思路

Changing Lin

10月月更

手机影像二十载,AI多摄会是终极答案吗?

脑极体

现成IPFS分布式存储矿机软件系统开发案例

网络安全漏洞深度剖析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

这篇博客和你唠唠 python 并发,滚雪球学python第四季,第16篇

梦想橡皮擦

10月月更

应对多样管理需求,新版 EMQ X Cloud 实现多项目部署管理

EMQ映云科技

物联网 mqtt

fil挖矿分币系统开发资料(案例)

filecoin矿机分币系统开发方案(现成)

IPFS云矿机分币软件系统开发简介(源码)

redis--多机

en

redis 高可用

AirBnb开源动画引擎Lottie:采用Core Animation提高性能_语言 & 开发_Sergio De Simone_InfoQ精选文章