骨骼动画网格模型学习

13.7.1 骨骼动画基本原理

骨骼动画模型的骨骼是以树状层次结构组织起来的,整个骨骼结构中有一块根骨骼,其他的骨骼都直接或间接连接到跟骨骼上,形成角色模型的整个骨骼框架。一般每块骨骼带有两个矩阵,一个是初始变换矩阵(localtransformmatrix),表示骨骼的初始位置,另一个是组合变换矩阵(combinetransformmatrix),用于对骨骼进行变换,从而实现角色动画。

(子骨骼)combinetransformmatrix= (子骨骼)localtransformmatrix * (父骨骼)combinetransformmatrix.

网格模型一般只是保存关键帧的变换矩阵,然后任意时刻用两个关键帧的矩阵差值求出。

Mat = (1 - w)*Mat1 + w *Mat2; 其中w一般用最简单的线性插值 = (s-s1)/(s2-s1).

13.7.2 骨骼动画类的设计与实现

D3DXMESHCONTAINER结构用于保存模型的网格数据(肉),D3DCFRAME用于保存模型的骨骼框架(骨头)。

CAllocateHierarchy类的设计与实现:

为了方便加载.X文件中的框架和网格模型数据,D3D提供了一个ID3DXAllocate Hierarchy接口,该接口中有四个纯虚函数:CreateFrame(), CreateMeshContainer(), DestoryFrame(), DestoryMeshContainer().

 

 

 

 

 

 

 

posted @ 2013-06-11 00:18  mengmee  阅读(607)  评论(4编辑  收藏  举报