最近在为引擎升级64位的过程中GPU蒙皮也出现了异常,平常骨骼动画和网格蒙皮用的还是非常多的,但是底层的原理并没有深究过,想着还是有必要好好整理下这部分内容。
骨骼蒙皮动画
一般我们称为骨骼动画(Skeletal Animation),是模型动画的一种(模型动画有2种,顶点动画和骨骼动画),包含了骨骼(Bone)和蒙皮(Skinned Mesh)两部分数据。互相连接的骨骼组成骨架结构,通过改变骨骼的朝向和位置来生成动画。而蒙皮则是这个技术的关键点,这里有个误区,字面意义上新手可能会觉得蒙皮的“皮”指的是贴图,但实际上这里的皮指的是Mesh本身,蒙皮是指把Mesh的顶点附着(绑定)在骨骼上,并且每个顶点可以被多个骨骼控制,这样在关节处的顶点由于同时受到父子骨骼的拉扯而改变位置从而消除了缝隙。

顶点的蒙皮信息包含了顶点受哪些骨骼影响以及这些骨骼影响该顶点的权重。有了蒙皮信息,只要我们的骨骼正常运动,蒙皮便会跟着骨骼一起动起来。为了让骨骼动起来,我们需要动画数据。在Unity中,我们通过读取动画文件中的关键帧信息来获取动画数据。