Lottie Edit Idea

交互·渲染|动画|字数 3,902|阅读时长 ≈ 10 分钟

背景

一年前,我用 Bézier 曲线创造了一个机器人博客中,介绍使用 Bézier 曲线在 Android Canvas 上绘制用于语音交互虚拟人形象的技术方案,若想把这个方案转化为产品,类似 蔚来 NOMI 趣玩表情那样,不得不解决几个问题:

  1. 使用参数去绘制动画的过程(四段三次贝塞尔曲线→形状组合→表情设计→动作设计→动作串联)太过繁琐。
  2. 虚拟人的形象被严格限制,扩展性、可玩性大打折扣。
  3. 这种类似连续摆 POSE 的机制实现的动画不够流畅自然。
  4. 只是我个人的自娱自乐。
gif-2025-11-26 at 23.27.16.gif
gif-2025-11-26 at 23.27.16.gif

解决上面几个问题,自然想到使用 svg 图片去代替表情设计,便可使用 figma 或 svg 编辑器进行表情设计,很容易扩展出一系列表情。

截屏2025-11-26 22.50.41.png
截屏2025-11-26 22.50.41.png

为一个表情动画设计一组 svg 图片,再把一个个 svg 图片串联起来,通过代码解析出来控制播放,做成一个表情动画。

截屏2025-11-26 22.52.30.png
截屏2025-11-26 22.52.30.png

这种方式比我博客里面介绍便捷、高效了很多,但也相当繁琐,转念一想,这不就是 lottie 动画吗?

但是当我尝试使用 lottie 去做一系列动画效果时,新的问题接踵而至。

面向开发者的 Lottie 编辑器

当我满怀信心地转向 Lottie 方案,准备用它来“降维打击”那些繁琐的代码绘制工作时,现实总要给我制造一点小麻烦。

我几乎试遍了市面上主流的 Lottie 工具链(除了 Rive 和 AE 这类“重型方案”,因其学习成本较高),它们看似美好,实则各有各的掣肘。在逐一对比了各类编辑器、插件和轻量化平台后,LottieLab 或许是最适合我的选择,但它与我的“理想型”仍相去甚远。

主要制作工具对比

表格将在进入视口后显示6 columns / 9 rows

插件、平台与轻量化工具对比

特性BodymovinLottieFiles (Platform/Creator)LottieFiles for FigmaCreattie
简介AE 的开源插件,是 Lottie 诞生的基石,负责将 AE 工程转译为 JSON。Lottie 官方平台,包含在线简单的编辑器(Lottie Creator)和资源库。Figma 插件,用于将 Figma 的设计直接转换为 Lottie 动画。一个高质量的 Lottie 资源库,提供简单的在线自定义功能。
国家开源 (原作者 Hernan Torrisi)美国 (San Francisco)美国欧洲 (推测)
核心功能以前是唯一选择,支持将 AE 的形状层、表达式转为数据。托管、预览、测试、简单的颜色修改和图层编辑。一键将 Figma 原型流转为 Lottie,支持简单的智能动画转换。资源下载,仅支持修改颜色、描边粗细等基本属性,不能从零创作。
上手难度高 (依赖 AE 技能)极低低 (依赖 Figma 技能)极低 (傻瓜式)
收费模式免费 / 捐赠免费基础版 / 企业付费免费 / 部分高级功能付费订阅制 (下载素材)
导出格式JSON, Rottie (很少用)Lottie (JSON/dotLottie), GIFLottie (JSON)JSON, GIF, MP4
编辑器风格AE 内的一个浮动面板窗口简单的 Web 画布Figma 插件弹窗网页侧边栏配置器
易用性中 (经常遇到"不支持该效果"的报错)高 (适合微调)高 (适合设计师)极高 (仅限修改)
文件大小需人工优化 (容易导出冗余数据)良 (平台带压缩功能)中 (Figma 的矢量结构有时很乱,导致文件偏大)优 (素材经过人工审核优化)

我心目中的 Lottie 编辑器,应该是这样的:

  1. 交互与布局对标 Figma:例如右侧属性面板的布局应更紧凑合理,而不是像 LottieLab 那样,明明可以一行展示的属性,硬生生拆成两行;
  2. 精准的编辑体验:放大画布后,移动元素时应支持像 Figma 那样以 0.5 像素为单位微调,吸附对齐功能也要足够智能,能轻松实现如两个眼睛元素的精准对齐;
  3. 编辑贝塞尔曲线能力出众,可以不需要文字编辑能力、弱化图片编辑能力;
  4. 输出轻量化:现在导出的 JSON 文件过于臃肿,一个简单的圆形往往被包裹在七八层无意义的 Group 和 Transform 中。理想情况下,应像 LottieFiles 那样提供多个压缩等级的导出选项;
  5. 支持 SVG 图片导入:允许在特定时间点插入 SVG 作为关键帧内容,扩展动画元素的多样性;支持 SVG 文件从Figma 拷贝过来,并且支持新添加 SVG 文件作为关键帧;
  6. 多平台兼容性标注:由于 Lottie 在不同平台(Web、Android、iOS、React Native、Windows)的支持程度有差异(参见 lottie 官方支持说明),编辑器最好能预设目标平台,并警示显示不兼容的图层或属性,避免开发者反复调试;
  7. 清晰可读的结构:目前自动生成的 JSON 中类名与 ID 毫无规律,调试时如同大海捞针,亟需更结构化的输出。
  8. 简明的使用教程:清晰规范的使用文档或视频教程。

既然市面上没有一把称手的兵器,何不自己动手铸造一把。

我并不需要再造一个绘图工具,而是希望构建一个 “面向开发者的 Lottie 优化与交付工作台”——LottieOps。

它的核心逻辑不再是“绘制”,而是“编译”——某种程度上可以借鉴 manim 的思路。就像前端领域的 PostCSS 或 Webpack,它应专注于将设计师提供的“原始素材”,转化为机器友好、性能优异的“纯净代码”。它不替代 AE 或 Figma,而是接管从设计稿导出到代码上线前这最后一公里的泥泞路段。

O-Bot 趣玩表情

光有工具的构想是不够的,我需要一个能够测试工具极限的“超级案例”。于是,O-Bot 诞生了。

这个机器人形象(我们暂且叫它 "O-Bot")非常棒!它极简的色彩风格、圆润的橄榄状头部和单纯的圆点眼睛,完全具备成为“超级符号”的潜力。

正如 蔚来 NOMI 的那样,越简单的几何图形,可塑性(Morphing Potential)越强,越适合做 Lottie 矢量动画,且不会过时。

这套动画表情的核心逻辑是“眼部形变”与“头部姿态”的配合。

  • 基础情感类 (Basic Emotions) - 用于建立人格
  • 开心 (Happy): 眼睛变成倒弯钩 ^ ^,头部轻微上扬晃动。
  • 悲伤 (Sad): 眼睛变成下垂的八字 / \,头部低垂,头顶出现一朵小乌云下雨。
  • 生气 (Angry): 眼睛变成锐利的直角 > <,头顶冒出漫画符号的烟气,身体泛红(如果是彩屏)。
  • 疑惑 (Confused): 一只眼变大,一只眼变小 o O,头歪向一边(类似 GIF 里的动作)。
  • 爱意 (Love): 眼睛直接变成两颗跳动的心 ♥ ♥,或者双手比心。
  • 困倦 (Sleepy): 眼睛慢慢闭合成一条线 -,出现 Zzz 气泡,鼻涕泡忽大忽小。
  • 系统交互/工具类 (System Utilities) - 最实用的部分
  • 唤醒/聆听 (Listening): 头部前倾,眼睛变成声波纹路,随声音频率跳动。
  • 思考/加载 (Loading): 两只眼睛开始绕圈互换位置,或者眼睛变成旋转的圆圈。
  • 成功 (Success): 眼睛变成对钩 √ √,或者头部转一圈,撒花。
  • 失败/警告 (Error): 眼睛变成 × ×,头部剧烈左右摇晃。
  • 低电量 (Low Battery): 眼睛变得暗淡半睁,头顶出现电池图标闪烁,甚至做出“晕倒”的动作。
  • 场景趣玩类 (Scenario Fun) - 类似 NOMI 的核心卖点
  • 音乐模式: 戴上耳机,头部随节奏点头,眼睛变成音符 ♪ ♫。
  • 导航模式: 眼睛变成方向箭头 ↑ 或 ←,或者头戴飞行员护目镜。
  • 天气模式:
  • 雨天: 头顶打伞,或者变成雨刮器动作。
  • 雪天: 戴上圣诞帽或围巾,眼睛呼出白气。
  • 节日彩蛋:
  • 春节: 眼睛变成铜钱,或者手持红灯笼。
  • 万圣节: 变成南瓜头或者幽灵飘动。

适用场景

由于 O-Bot 的较少色彩高对比度风格,并且是矢量图形,它对屏幕素质要求极低,甚至可以在单色 OLED 屏上运行。

  1. 智能硬件 (AIoT) - 最大的存量市场
  • 带屏智能音箱: 类似天猫精灵、小度。
  • 桌面电子宠物/时钟: 类似 LaMetric 或“稚晖君”开发的桌面小机器人。
  • 智能家电: 咖啡机、空气净化器、洗衣机上的圆形小旋钮屏(这是高端家电的趋势)。
  1. 车载系统 (HMI) - 最高端的市场
  • 后装 HUD (抬头显示): 淘宝上卖的那种外接仪表盘。
  • 电动两轮车/摩托车仪表盘: 小牛、九号电动车的中控屏。
  • 入门级新能源车: 那些没有预算自己养 50 人设计团队的车企。
  1. App 与 网站
  • AI 客服头像: 网站右下角的智能助手。
  • 加载/空状态: App 断网时的卖萌动画。

并协测试

O-Bot 是一个极简机器人形象。我希望它只有简单的几何线条,简单配色,却能通过流畅自然地形变传达出开心、愤怒、疑惑等丰富的情感。

把 O-Bot 跑在不同平台渲染引擎上的,需要针对不同平台设计各自的动画调度的 SDK 程序,比如在低端设备上控制内存的使用量(极限情况下可效仿 freetype 文字渲染实现方式),在制作 O-Bot 过程中,反向完善 LottieOps 的核心功能。

  • 低端设备跑不动
  • 现象: 设计师为了图层管理方便,给 O-Bot 的眼睛套了 5 层 Group,导致我在低端测试机上掉帧严重。
  • LottieOps 迭代: 我开发了 “结构扁平化 (Structure Flattening)” 算法。一键把那些没有独立变换属性的嵌套组“拍扁”,让渲染引擎少做矩阵乘法。O-Bot 的 JSON 体积瞬间减少了 60%。
  • 状态切换写死人
  • 现象: 为了实现“听音乐”时点头的循环,我在代码里写了一堆 playSegments([30, 90], true),过两天自己都忘了这数字啥意思。
  • LottieOps 迭代: 增加了 “可视化状态机” 面板。我在时间轴上直接拖拽出 Intro、Loop、Outro 区间并命名。工具导出时自动生成元数据,现在我只需要写 obot.playState('listen_loop'),优雅且直观。
  • 无法换肤
  • 现象: 我想做个“暗黑模式”的 O-Bot,却发现要在代码里硬编码颜色值很蠢。
  • LottieOps 迭代: 实现了 “DOM 级属性注入”。在编辑器里点一下眼睛,给它打上 #eye_color 的标签。配合 SDK,我不仅能一键换肤,还能把音量数据实时绑定到 #mouth_scale 上,让 O-Bot 真的“张嘴说话”。

O-Bot 不仅仅是 LottieOps 的测试用例,它本身就是一款很好的产品。这套包含 30+ 种表情、经过极致优化、甚至自带 SDK 的表情包,也很适合在各个平台做体验调研。

LottieOps 旨在为开发者提供一个矢量动画编辑软件,甚至只偏向于语音交互的动画形象设计。O-Bot 的案例则像是皮克斯的《小台灯》,加上各个平台的 sdk,可以应用到各种设备上,一个灵动活泼、又有故事感的小机器人在屏幕上跳动,肯定很有趣。

参考资料

假设你是一个资深的创业顾问,做为个开发者,有两个创业想法,一是做 lottie 编辑器,一个是做流程图绘制工具,从市场竞争、商业前景、技术难度、发展潜力方面,分析这两个想法那个更好,你有没有更好的想法?
内容将在展开或进入视口后显示
决定做 Lottie 编辑器,列出推荐的技术栈?
内容将在展开或进入视口后显示
如何设计编辑器的状态数据结构?
内容将在展开或进入视口后显示
开发第一个版本,一个人需要多久?
内容将在展开或进入视口后显示
更倾向于挑战全功能编辑器(3个月+)
内容将在展开或进入视口后显示
如果使用 qt qml 技术做客户端,对比现在这个技术栈有那些优缺点,长远考虑用那个市场接受度更高?
内容将在展开或进入视口后显示
可以聊聊 Pixi.js vs CanvasKit (Skia WASM)
内容将在展开或进入视口后显示
再聊聊 Lottie 编辑器的几个竞品吧?
内容将在展开或进入视口后显示
面向开发者的 Lottie 优化与交付工具,这个切入点,展开讲一讲
内容将在展开或进入视口后显示
如果这个工具只面向中国的开发者和设计师,用户群体大概有多少,主要面向哪些公司的程序员和设计师,前期怎么做用户导流?
内容将在展开或进入视口后显示
按照上述使用的技术栈,我的商业化产品,有没有版权相关的问题?
内容将在展开或进入视口后显示
lottielab , rive 的收费标准是怎么样的,结合前面的对话,我这款产品在中国市场怎么定价?
内容将在展开或进入视口后显示
如果我的项目体验和 lottielab 一样好,但我不想去运营它,可能被那些公司买断这个工具,他们将向我支付多少钱合适?
内容将在展开或进入视口后显示
蔚来的趣玩表情,分析这个视频,只关注其表情部分,推测它丰富的表情和表情自然切换的技术实现方式?
内容将在展开或进入视口后显示
unnamed.gif
unnamed.gif
471ef6daaee11580cd2cba5b8a05d473.gif
471ef6daaee11580cd2cba5b8a05d473.gif
使用附件中的机器人形象做一套类似蔚来趣玩表情的动画表情,可以使用到那些场景,如果把这套机器人动画表情打包出售,可能出售给那些公司或团队,他们将向我支付多少钱合适?
内容将在展开或进入视口后显示
Lottie 优化工具(开发者友好的编辑器),优先解决 O-Bot 智能交互表情包,需要深度优化那几个方面的功能?
内容将在展开或进入视口后显示
0