我用的VS2005进行开发。
对应 3ds max 2008sdk,3ds max 2009 sdk。
下图为3ds max 2009中刺蛇的skin骨骼动画模型及导出文件在查看器中的演示。
整个工作分为两个部分:
1。3ds max 导出插件。
这部分网上有可参考的代码。关键的难题是矩阵。
骨骼的矩阵在3ds max 中是存于4*3矩阵中,要先搞清楚如何计算每一块骨骼的相对矩阵,逆矩阵算法。
我在导出矩阵时直接导出了骨骼的世界矩阵变化。去掉了骨骼父子关系。
导出的信息包括:
1。 顶点信息 2。面索引 3。纹理坐标,3。材质信息。4。每一帧的每个骨骼矩阵(我还没有找到关键帧信息)。
5。 每个顶点受哪个骨骼影响及权重。
2。导出查看器
3ds max 导出插件部分相对好做,但查看器的开发需要对骨骼动画的原理进行掌握。
我的实现还是基于固定管线的。
1。读入数据创建D3DFVF_XYZB4模型。
2。设置顶点混合
m_pd3dDevice->SetRenderState( D3DRS_VERTEXBLEND,D3DVBF_3WEIGHTS );
m_pd3dDevice->SetRenderState( D3DRS_INDEXEDVERTEXBLENDENABLE, TRUE );
3。每一帧设置骨骼的矩阵到对应的MATRIX
4。渲染
3ds max 导出插件的完成,让我对自已的D3D能力有了更大的信心。
下一步,我将继续努力。