人物模型是由三角面 mesh 组成的。为了让人物动起来,一个最简单的想法是直接修改 mesh 的各个顶点的坐标,这带来了几个问题:

  1. 逐顶点操作很容易带来非常不自然的结果
  2. 随着模型越来越精细,顶点越来越多,操作空间十分巨大

这加大了动画制作的难度。

仿照自然界的生物体,一个自然的想法是,可以在 mesh 中放置若干骨骼,骨骼的运动带动 mesh 的运动。这样,动画师只需要操作骨骼,就可以带动 mesh 完成动画的编辑。

Untitled

与骨骼对应的,mesh 被称为皮肤(skin)。一段段骨骼之间相互连接,连接处称之为关节(joint)。骨骼可以绕着关节进行转动。关节之间通过线段相连,可以形成一个树状结构,我们称之为关节模型。

工业界骨骼动画的制作流程

  1. 骨骼与标准姿势(T-pose)的绑定与蒙皮(binding, skinning) 绑定与蒙皮:对于标准姿势,创建一套骨骼用来对应 mesh 上的顶点。
  2. 动画师操作骨骼,制作关键帧(keyframe)
  3. 关键帧之间的插值形成整个动画

绑定

首先需要指定骨骼与皮肤的对应关系。

通常,绑定是针对一个标准姿势(静止姿势,rest pose)进行,也称之为 T-pose,因为人物的形态像个 T 字

选择这种姿势是因为大部分姿势不会偏离它太大。

我们需要对 T-pose 找到皮肤顶点与骨骼之间的对应,显然可以让一个顶点找到距离他最近的骨骼。大部分情况下,一个顶点只会被一个骨骼所控制,但是在关节的边界情况则可能会出现问题,因为不知道这个顶点究竟属于关节两侧的哪一个骨骼。所以一个方法是采用线性混合的方法,这个技术称之为顶点混合(Vertex blending)或者线性混合蒙皮(linear blend skinning)。这也是工业界中使用的技术。

Untitled

参考资料