限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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:0010931

评论

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

HTML04 - 表单

Mr.Cactus

html

NSE交易所系统软件开发|NSE交易所APP开发

系统开发

IPFS挖矿APP系统开发|IPFS挖矿软件开发

系统开发

13周作业

走走,停停……

三十未立

阿萌

人生修炼

让你的react代码跑在svelte引擎上

闲鱼技术

园区能耗监测平台搭建,能源管控系统管理

t13823115967

能源管控

揭开KPI异常检测顶级AI模型面纱

华为云开发者联盟

华为 AI 数据 决策树

数据中心大二层网络技术大揭秘

华为云开发者联盟

服务器 数据中心 虚拟化 大二层网络 VLAN

十三周作业

solike

HTML01 - 标签

Mr.Cactus

html

大作业二--知识点整理

Nick~毓

浅谈机器学习模型推理性能优化

张凯峰

人工智能 机器学习

甲方日常 80

句子

工作 随笔杂谈

SRE灵魂之SLI和SLO

勇往直前的胖子

SRE SLO

HTML03 - 表格

Mr.Cactus

html

从 RxJS 到 Flink:如何处理数据流?

Apache Flink

flink 流计算

Spark 3.0 关键新特性回顾

hanke

大数据 spark 开源

HTML02 - 列表

Mr.Cactus

html

Socket粘包问题的3种解决方案,最后一种最完美!

王磊

Java socket websocket

智慧警务大数据平台开发,数据可视化分析平台搭建

t13823115967

大数据

Vue 3 组件开发:搭建基于 Vite 的在线表格编辑系统(组件集成)

葡萄城技术团队

vue.js Vue SpreadJS vite

为什么计算机经典大头书老是看不进去?

yes

学习 技术书籍 阅读

第五周 技术选型(一) 学习总结

胡云飞

Go语言分布式系统配置管理实践--go archaius

华为云开发者联盟

分布式 Go 语言

mybatis使用及SQL语句优化小结

华为云开发者联盟

数据库 mybatis 索引 实用SQl语句

冰河开始对Dubbo下手了!

冰河

微服务 dubbo 源码解析 服务治理 RPC调用

创业公司用 Serverless,到底香不香?

Serverless Devs

Java Serverless 运维 云原生 大前端

AWS x 德勤 | “三步走”策略,赋能企业打造洞察驱动型组织

亚马逊云科技 (Amazon Web Services)

云计算 AWS

12周作业

走走,停停……

规避单点故障,MySQL 8.0 MGR软负载怎么选?

dbaplus社群

数据库

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