骨骼动画技术后于帧动画技术出现 最开始,骨骼动画仅用于非实时渲染的建模领域,如3DMax这类建模软件之中,以方便美工的建模。后来,CPU从渲染中解放后,骨骼动画才用于实时渲染的游戏中。 顶点动画:早期的3D模型动画,就是把每帧的顶点数据输出到文件中,所以3D模型的一个动作就是一系列的模型,这样做的目的主要是硬件资源有限,没有多余的时间去计算顶点。

骨骼动画 随着动画越来越精细,将每帧的顶点数据输出到文件数据量太大。人们想出一种办法,将3D模型抽象为一些关键点的集合,整个模型的运动可以当做是这些关键点的运动,而模型的顶点只是受这些关键点的影响而已。这些关键点就称为骨骼

骨骼动画原理 骨骼动画的想法来源于人体骨骼。 例如说,人的上肢所有肌肉和皮肤都受上肢骨胳的影响,而人的踝关节则分别承受小腿骨胳和脚骨的影响。 根据这个我们可以将骨骼动画理解为两个概念: 骨骼:用以控制蒙皮的一种抽象的概念,如人体骨骼控制皮肤。 蒙皮:被骨骼控制、并显示在外的因素,如人体的皮肤被骨骼所影响。

骨骼动画原理:蒙皮(SKINMESH)

在最终的渲染结果中,蒙皮将完全显示出来,蒙皮实际上就是顶点、法线和纹理坐标等将被渲染的元素。 而其中,最关键的当然是顶点,顶点将直接被骨头牵扯运动,因而使得整个模型呈现骨骼所决定的样子。  

骨骼动画原理:骨骼(SKELETON) o骨骼是一种抽象的概念,在最终的渲染结果中,它不可见。 o类如人体骨骼、骨骼是若干骨头(Bone)成树状的集合体,而每块骨头又分别与若干数量的蒙皮顶点关联。 o当骨头运动的时候,与之关联的所有蒙皮顶点也会受骨骼的影响而运动。

骨骼动画原理:权重 骨头与蒙皮顶点的关联需要考虑到每块骨头对蒙皮顶点的影响。 尽管大部分情况下,一个顶点将仅仅被一个骨头的影响,但是关节处的顶点往往被多根骨头影响,例如踝关节,可能会分别受小腿骨50%和脚骨50%的影响,这种影响叫作权重(Weight)。 在这种情况下,我们称踝关节的这些顶点,受小腿骨影响的权重是50%,受脚骨影响的权重也是50%。

骨骼动画原理:算法 骨头究竟如何对顶点施加影响呢? 现实世界中,每一块骨头都可以位移、旋转,受这些骨头影响的表皮细胞也会跟随骨头同时按权重做位移旋转。 在3D中,这种影响对于蒙皮顶点而言也是一样的。

那么实际上,每根骨头最终将被换算成一个矩阵,这个矩阵记录了旋转,平移信息,我们用这个矩阵来对蒙皮顶点进行影响。 在骨头中,一般使用四元数来获得旋转时的精确性,这样,骨头一般记录表示旋转的四元数和表示位移的一个矢量,最后,将四元数和矢量换算成骨头的矩阵,并用顶点与这个矩阵乘法以进行影响。  

参考文章https://wenku.baidu.com/view/66175c47c4da50e2524de518964bcf84b9d52dcb.html