不靠插件:为什么 Keyframe 把能力做进编辑器

设计札记

AE 的很多能力来自第三方插件;Keyframe 把它们做进编辑器,工程在哪台电脑上打开都一样。

在 After Effects 里,很多能力靠插件补

粒子、骨骼绑定、自写着色器,常见做法都要装第三方插件或脚本。

After Effects

  • Trapcode Particular粒子,第三方插件
  • Duik骨骼绑定,第三方脚本
  • PixelsWorld自写着色器,第三方插件
  • 换一台没装插件的电脑效果成了“缺失”的占位,图层不带它渲染

Keyframe

  • 粒子与模拟编辑器自带,在显卡上计算
  • 骨架与网格蒙皮一种图层
  • 着色器与画面程序项目数据,跟着工程走
  • 换一台电脑有支持 WebGPU 的浏览器就能打开

AE 打开用到了未安装插件的工程时,会提示缺少哪些效果,把它们保留为带原参数的“缺失”占位,渲染时跳过。工程能打开,但画面已经不是原来的样子。

为什么会这样

闭源的核心把扩展交给了插件生态,这也是 AE 的长处。

外部开发者改不了 AE 的核心,于是新能力以插件和脚本的形式出现,很多后来成了行业标准。庞大的插件生态让 AE 几乎什么都能做,这是它真正的长处。

代价是能力分散在许多家手里:每个插件各自安装、各自更新,一个工程能不能原样打开,取决于这台电脑装了哪些。

在 Keyframe 里:能力做进编辑器

粒子、跟踪、抠像、绑定和程序效果都是编辑器自己的功能。

一段小卡片向右上方漂移的视频已被跟踪:跟踪点落在卡片上,身后画出了它的路径,一个圆形跟着它移动。右侧打开着跟踪器面板。
  1. 给选中的视频图层添加跟踪器。
  2. 跟踪器跟住什么、怎样应用。
  3. 向后或向前,分析一帧或一直分析到头。
  4. 由跟踪结果带动的图层。
  5. 把跟踪结果写成目标上的关键帧。
  6. 跟踪点及其路径:特性区域、搜索区域与附加点。
  • 跟踪。点跟踪与平面跟踪、蒙版跟踪(含面部)、变形稳定器、内容识别填充和 3D 摄像机跟踪器。
  • 抠像与 Roto。抠像效果、Roto 笔刷与调整边缘。
  • 粒子与模拟。粒子世界在显卡的计算通道上运行。
  • 骨骼与程序。骨架、网格蒙皮,以及着色器、模拟和画面程序。

不是从零造轮子

难的算法用成熟的开源库,放在 Keyframe 自己的适配层后面。

  • 用成熟的库。跟踪和分析用 OpenCV.js 与 MediaPipe,补背景用 LaMa;这些文件放在 Keyframe 自己的服务器上,带完整性校验,在你的设备上运行,补背景的模型只在你用到时才下载。
  • 换库不改工程。每个库都在适配层后面,换掉它不影响已经保存的工程。
  • 结果存成数据。跟踪结果写成关键帧或带素材校验的分析记录;模拟的结果只取决于参数和帧号,从哪一帧跳过来都一样。

这样做放弃了什么

没有插件接口,也就装不了第三方插件;效果数量也还少于 AE。

不做插件 SDK 和脚本接口,是有意的选择:Agent⁠ (在新标签页打开) 和界面共用同一套注册操作,能力缺了就由我们自己补。AE 现有的效果多得多,这是差距,我们会一项项补;编辑器也只能在支持 WebGPU 的浏览器里运行。

仍落后于 After Effects 的地方

接着看