Direct9学习之--------------------------动画<骨骼动画>

来源:互联网 发布:免费的算账软件 编辑:程序博客网 时间:2024/05/17 08:05

一. 骨骼动画基本原理:


骨骼动画,是游戏中使用最多的动画表现形式,游戏中玩家怪物的动作表现基本都是基于骨骼动画。 

模拟现实中动画运动模式,大多数动物的运动是由骨骼的运动连带附着在骨骼上的皮肉一起运动。而三维中的模型是由顶点和面组成的,为其附加一套骨骼,同时指定哪些顶点附着于哪些骨骼(也就是受哪些骨骼影响)。这样当骨骼运动时附着于骨骼的顶点也会发生相应的运动从而形成动画,这就是骨骼动画的基本原理。



二. 骨骼动画基本流程:


a.首先要了解几个名词:

1.关键帧: 在帧动画中用不连续的几帧近似描述动作过程,用于标记在动作过程中某帧的具体表现。

2.蒙皮信息: 所谓的蒙皮信息则是记录了每根骨骼对应网格中顶点的信息,如骨骼bone1影响的顶点列表以及对其影响的权重信息等内容。


b.骨骼动画基本过程:


1.事先在3DMax等软件中编辑好一套骨骼动画。 

2.将骨骼动画绑定到网格模型。

3.有程序中控制加载网格MESH和骨骼动画并生成蒙皮信息。 

4.每帧根据关键帧信息用线性差值(或者其他方式如B样条)更新所有骨骼位置信息。 

5.根据蒙皮信息更新网格数据,从而形成动画效果。


注: 一般骨骼的逻辑结构是树形结构,也就是从根骨骼出发,可以包含多个子节点,每个子节点又可以有多个子节点,父节点子节点之间的相对位置关系是用过相对父节点变化矩阵来来接的。子骨骼相对射界的变换矩阵

CombineSubBoneMat = SubBoneMat(相对父节点的变化矩阵) * ParentBoneMat(父节点变化矩阵);

每帧确定骨骼变化矩阵的方式(线性插值):CombineMat = t*MatFirst + (1-t)*MatSecond; t为处于当前两关键帧之间的时间比例,MatFirst为上一关键帧矩阵MatSecond为下一关键帧矩阵。


原创粉丝点击