QuakeIII使用的d3模型格式是MD3的,这里研究下 看了这个清晰的结构定义以后 可以知道 从3d Max导出那些数据, 3D游戏设计的时候 也可以知道这些数据具有什么用 // 下面的结构体保存了从文件的头部信息struct tMd3Header...{ char fileID[4]; // 文件ID,对于MD3格式的文件,必须是IDP3 int version; // MD3格式文件的版本号,必须是15 char strFile[68]; // 文件的名称 int numFrames; // 动画帧的数目 int numTags; // 标签的数目 int numMeshes; // 网格中子对象的数目 int numMaxSkins; // 网格中皮肤的数目 int headerSize; // 文件头部大小 int tagStart; // 标签信息的开始位置 int tagEnd; // 标签信息的结束位置 int fileSize; // 文件大小};// 下面的结构体保存了MD3模型中的网格数据struct tMd3MeshInfo...{ char meshID[4]; // 网格ID char strName[68]; // 网格名称 int numMeshFrames; // 帧的数目 int numSkins; // 皮肤的数目 int numVertices; // 顶点数目 int numTriangles; // 三角形面的数目 int triStart; // 三角形的开始位置 int headerSize; // 网格的头部数据的大小 int uvStart; // UV纹理坐标的开始位置 int vertexStart; // 顶点数据的开始位置 int meshSize; // 整个网格数据的大小};// MD3文件格式的标签结构struct tMd3Tag...{ char strName[64]; // 标签的名称 CVector3 vPosition; // 平移变换 float rotation[3][3]; // 旋转矩阵};// 下面的结构体保存了骨骼信息 struct tMd3Bone...{ float mins[3]; // 最小值(x, y, z) float maxs[3]; // 最大值(x, y, z) float position[3]; // 骨骼位置 float scale; // 骨骼缩放比例 char creator[16]; };// 下面的结构体保存了面的法向量和顶点索引struct tMd3Triangle...{ signed short vertex[3]; // 面的顶点 unsigned char normal[2]; // 法向量};// 下面的结构体保存了顶点和纹理坐标队列的索引号struct tMd3Face...{ int vertexIndices[3]; };// 下面的结构体保存UV纹理坐标struct tMd3TexCoord...{ float textureCoord[2];};// 下面的结构体保存皮肤名称(也就是纹理名称)struct tMd3Skin ...{ char strName[68];};