不用表达式的骨骼:Keyframe 怎样绑定角色
设计札记
AE 里的骨骼是用图层和表达式拼出来的;Keyframe 的骨架是一种图层,由编辑器直接求解。
先拖一拖
这只狐狸用的就是 Keyframe 的骨架、IK 和网格蒙皮。
拖动尾巴或爪子:每个控制点都用 IK 带动一串骨骼。
在 After Effects 里,骨骼是拼出来的
AE 没有骨骼对象,角色绑定来自 Duik 这类第三方脚本。
After Effects
- 控制器 · 爪子ƒ IK
- 骨骼 · 小腿ƒ 表达式
- 骨骼 · 大腿ƒ 表达式
- Pin · 膝盖ƒ 表达式
- 画面 · 后腿人偶 · 控制点
以开源的 Duik Ángela (外部网站,在新标签页打开) 为例:每根骨骼是一个普通的形状层,画面图层用父子关系挂在骨骼上。IK 由控制器图层加表达式算出来。
身体的弯曲靠 人偶工具 (外部网站,在新标签页打开)的控制点,控制点再通过表达式连接的 Pin 图层跟着骨骼走。人偶工具没有逐顶点的权重,弯曲的软硬只能靠控制点的位置和数量来调。
为什么只能这样做
表达式是 AE 里把一个属性逐帧绑到另一个属性上的唯一通用办法。
// 表达式没有上一帧的记忆,只能从头重算
const stiffness = 0.2, damping = 0.8;
let x = thisComp.layer("爪子").transform.position.valueAtTime(0)[0];
let v = 0;
for (let f = 1; f <= timeToFrames(time); f++) {
const goal = thisComp.layer("爪子").transform.position.valueAtTime(framesToTime(f))[0];
v = (v + (goal - x) * stiffness) * damping;
x += v;
}
[x, value[1]];- 只有这个口子。AE 的核心是闭源的:效果插件只能画自己那一层的像素,脚本只在运行的那一刻改工程。要让骨骼每一帧都跟着控制器动,除了父子关系,只能写表达式。
- 一段只管一个属性。一个表达式的结果就是它所在属性的值。整条腿的 IK 要在每根骨骼的旋转上各写一段,同样的计算做好几遍。
- 帧与帧之间不记事。表达式每一帧从零开始算,读不到上一帧的结果。弹簧、拖尾这类依赖历史的运动,只能像上面这样把之前的帧重算一遍,越往后越慢。
代价
慢,结构藏在文本里,换个角色就得重来。
- 越绑越慢。Duik 的性能说明 (外部网站,在新标签页打开)自己也提醒,IK 和跟随这类表达式很复杂,会明显拖慢预览。
- 结构藏在文本里。骨骼之间的关系写在一段段表达式里,AE 不知道哪几个图层组成了一条腿,也就做不了“保持姿势换父级”“把一套动作套到另一个角色上”这类骨骼级的操作。
- AI 读到的也只是文本。AE 新出的 AI 助手 (外部网站,在新标签页打开)能读写表达式,但它面对的仍是一段段文本,而不是一副有结构的骨架。
在 Keyframe 里,骨架是一种图层
骨骼是骨架图层里的数据,整条链由编辑器一次解出来。
Keyframe
- 骨架一个图层
- 大腿
- 小腿IK
- 爪子
- 画面 · 后腿网格 → 骨架,带权重
在 Keyframe 里,骨架是和图片、文字并列的一种图层。骨骼存在骨架里,可以有好几条链;FK 和 IK 由编辑器自己的代码求解,不写表达式。
部件可以直接挂到骨骼上,也可以把网格蒙皮到骨骼。画骨骼、换父级、绑定的手势参照 Spine、Moho 这类专门做骨骼动画的软件。

- 骨骼工具:从关节到关节画骨骼。
- 选中的骨骼,小腿,已开 IK。
- 骨骼选项:IK 与保持角度。
- IK 目标:拖动它,腿就跟着弯。
网格蒙皮与权重
身体在关节处平滑地弯,弯的范围用画笔刷出来。

- 这个网格蒙皮到的骨架。
- 一条链的根骨骼。
- 一条链上的骨骼;勾选带动这个部件的那几根。
- 不带动这个部件的骨骼。
网格蒙皮到它要跟随的骨骼上,骨骼可以来自不同的链;每根骨骼影响哪里、影响多少,用权重画笔刷。这是人偶控制点做不到的。
因此能做到的
编辑器知道骨架的结构,就能做骨骼级的操作。
- 你画骨骼
- 你加 IK
- 你网格蒙皮刷权重
- 编辑器次级运动弹簧是一种行为
- 编辑器存成预设套到另一个角色
- 换父级,姿势不动。给骨骼换父级时,编辑器改写它的基础值和全部关键帧,画面不跳。
- 弹簧是一种行为。次级运动加在骨骼链上,按固定步长积分,结果只取决于项目和帧,不用回头重算。
- 动作能复用。骨骼动画存成预设,按链的结构套到另一个角色上;对不上的地方交给你确认,不靠猜。
- Agent 能看懂。搭骨架、蒙皮、刷权重、加 IK 都是编辑器的注册操作,Agent (在新标签页打开) 用的和你是同一套。每一步怎么操作,见使用文档的骨骼绑定 (在新标签页打开)。