2024年4月25日发(作者:)

模型的骨骼动画技术讲解

骨骼动画实际上是两部分的过程。第一个由美术执行,第二个由程序员(或者你写的

引擎)执行。第一部分发生在建模软件中,称为建模。这里发生的是术定义了网格下面骨

骼的骨架。网格代表物体(无论是人类,怪物还是其他物体)的皮肤,骨骼用于移动网格

物体,以模拟现实世界中的实际运动,这通过将每个顶点分配给一个或多个骨头来完成。

当顶点被分配给骨骼时,定义了权重,该权重确定骨骼在移动时对顶点的影响量。通常的

做法是使所有权重的总和1(每个顶点)。例如,如果一个顶点位于两个骨骼之间,我们可

能希望将每个骨骼的权重分配为0.5,因为我们希望骨骼在顶点上的影响相等。然而,如果

顶点完全在单个骨骼的影响之内,那么权重将为1(这意味着骨骼自主地控制顶点的运动)。

这是一个在混合器中创建的骨骼结构的例子:

我们上面看到的是动画的重要组成部分, 美术将骨骼结构组合在一起,并为每个动画

类型(“步行”,“跑步”,“死亡”等)定义了一组关键帧。 关键帧包含沿着动画路径的关

键点的所有骨骼的变换。 图形引擎在关键帧的变换之间进行插值,并在它们之间创建平滑

的运动。

用于骨骼动画的骨骼结构通常是继承的, 这意味着骨骼有一个孩子/父母关系,所以

创建了一根骨头。 除了根骨之外,每个骨骼都有一个父母。 例如,在人体的情况下,您

可以将后骨分配为具有诸如手臂和腿部以及手指骨的儿童骨骼的根部。 当父骨骼移动时,

它也移动其所有的孩子,但是当孩子的骨骼移动时,它不会移动它的父母(我们的手指可

以移动而不移动手,但是当手移动它移动所有的手指)。 从实践的角度来看,这意味着当

我们处理骨骼的变换时,我们需要将它与从它引导到根的所有父骨骼的转换结合起来。

我们不会再进一步讨论装备, 它是一个复杂的主题,并且在图形程序员的领域之外。

建模软件有先进的工具来帮助美术做这项工作,你需要成为一个很好的美术来创造一个好

看的网格和骨架。 让我们看看图形引擎需要做什么才能制作骨架动画。

第一阶段是用顶点骨骼信息来提取顶点缓冲区。 有几个选项可用,但我们将要做的很

简单。 对于每个顶点,我们将添加一个插槽阵列,其中每个插槽包含骨骼ID和权重。 为

了使我们的生活更简单,我们将使用具有四个插槽的数组,这意味着没有顶点可以受到四

个以上的骨骼的影响。 如果您要加载更多骨骼的模型,则需要调整阵列大小,但是对于作

为本博文一部分的Doom 3模型,四个骨骼就足够了。 所以我们的新顶点结构将如下所

示: