Posted on 2008-11-30 15:45 
Herbert 阅读(2426) 
评论(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]; //顶点索引列表
}
下面是一个立方体的模型文件:
运行效果: