本文主要基于Blender创建一个简单的机器人,并基于此机器人来了解骨骼动画的制作流程。制作骨骼动画主要包含以下步骤:
- 建模
- 构建骨骼
- 蒙皮和权重绘制
- 动画制作
建模
建模就是通过最基础的几何图元点,线,面构建出各种不同形状的模型。构建好的机器人,如下图:
构建骨骼
模型建好后就可以开始构建Skeleton(骨骼)了,在构建Skeleton之前先来了解一下Bone(骨头)和Joint(关节),其实和人体结构一样骨架也是由骨头和关节组成的有关节的地方就可以旋转,由大臂带动小臂也就是说小臂是大臂的一个子骨头,当大臂旋转时小臂也会跟着旋转。
蒙皮与权重绘制
现在骨骼构建好了,但是骨骼的旋转并没有带动模型顶点的改变,接下来要做的就是对骨骼进行蒙皮,蒙皮就是将模型的顶点附着到骨头上,也就是会记录受这个骨头所影响的顶点在这个骨头空间下的坐标位置。像关节这些地方的一个顶点可能会受多个骨骼影响所以每个顶点上还要记录每个顶点在每个骨骼下的权重,如果自动计算的权重不能满足那就需要手动绘制权重。当蒙皮和权重绘制好了,我们就可以通过骨骼的运动(主要是旋转)来带动顶点的运行。 顶点的位置计算过程大致如下:
- 通过父子骨骼之间的变换矩阵,计算出最终在世界坐标下的变换矩阵。
- 再将骨骼空间下顶点的坐标点乘以第一步计算出来的变换矩阵就计算出了顶点的世界坐标。
- 每个顶点的最终位置还得根据影响这个顶点的骨骼进行混合。
创建动画
骨骼和顶点绑定后,就只需要创建动画驱动骨骼进行运动,骨骼的运动又会带动骨骼关联的顶点进行运动,这样便形成了完整的动画。动画文件只需要记录每个关键帧骨骼的位置,旋转和缩放就能通过插值算法计算出平滑的动画。