Posted on 2008-11-30 15:45
Herbert 阅读(2382)
评论(2) 编辑 收藏 引用 所属分类:
DirectX
要掌握3D动画编程,有必要了解动画文件的格式。X文件的txt格式比较容易理解,是初学者学习3D文件格式的一个不错的选择。一个3D文件中可能包含的信息有网格信息、材质信息、动画信息等。下面我们来试着创建一个有网格信息的X文件。
先来看一下X文件头的写法:
xof 0302txt 0064
// xof :固定
// 0302 :表示使用的是DirectX 3.2版本的模板
// txt : txt 格式 (X文件分为 txt格式和二进制格式两种)
// 0064 :表示浮点型的位数是64位
模板header的定义如下:
template Header {
<3D82AB43-62DA-11cf-AB39-0020AF71E433>
//是GUID(Global Unique Identifier,全局唯一标识符)
WORD major; //x文件的最大版本
WORD minor; //x文件的最小版本
DWORD flags; //定义方式
}
模板 Mesh 的定义如下:
template Mesh
{
<3D82AB44-62DA-11CF-AB39-0020AF71E433>
DWORD nVertices; //顶点个数
array Vector vertices[nVertices]; //顶点数组
DWORD nFaces; //面个数
array MeshFace faces[nFaces]; //面数组
[...] //表示该模板是开放的模板, 即还可以添加其它信息
}
模板 Vector 定义如下:
template Vector
{
< 3D82AB5E-62DA-11cf-AB39-0020AF71E433 >
float x;
float y;
float z;
}
模板 MeshFace 定义如下:
template MeshFace
{
< 3D82AB5F-62DA-11cf-AB39-0020AF71E433 >
DWORD nFaceVertexIndices; //索引个数(如三角形有3个顶点,则索引个数为3)
array DWORD faceVertexIndices[nFaceVertexIndices]; //顶点索引列表
}
下面是一个立方体的模型文件:
运行效果: