现在的位置: 首页 > 综合 > 正文

X模型文件格式简介

2013年03月22日 ⁄ 综合 ⁄ 共 1946字 ⁄ 字号 评论关闭

From: http://hi.baidu.com/xiexianyu/item/f9448e6ec30dd9156895e6da

游戏模型文件格式很多,支持动画的有.X格式(DirectX)、.MD2和.MD3(Quake游戏)、.3DS和.MAX(3DS Max建模软件)等,更多格式可以参考网站http://www.wotsit.org/default.asp

X文件通过模板template定义如何储存一个数据对象,预定义的模板位于rmxfguid.h和rmxftmpl.h。rmxfguid.h定义了各个标准模版的GUDI,rmxftmpl.h以二进制数据形式定义了标准模版数据的缓存和其字节数。一个模板可以是开放的、闭合的或者受限的。开放模板可以包含所有其它数据类型,封闭模板不可以包含任何其它的数据类型,受限模板只可以包含特定的数据类型。

模板格式

1. 首部Header    魔数(xof )、主次版本号(0303)、文件格式(txt、bin、tzip、bzip)、浮点数大小(32、64)。例如:xof 0303txt 0032

2. 网格Mesh         

网格模板定义     

template Mesh

{

    < 3D82AB44-62DA-11cf-AB39-0020AF71E433 >   #全球惟一标识符UUID

      DWORD nVertices;              #顶点数量

      array Vector vertices[nVertices];    #顶点列表,1个顶点包含3个浮点数

      DWORD nFaces;                #面数量

      array MeshFace faces[nFaces];     #面得顶点索引列表,每个面包含3个顶点

      [ … ]   #开放模板,可以包含任何其它数据类型,SDK帮助提供可选部分如下

       }

      // optional:                          #可选部分,表示 […]

      meshFaceWraps template; \             #纹理布局,不再使用

      meshTextureCoordinates template; \      #纹理坐标

      meshNormals template; \               #法向量

      meshVertexColors template; \           #顶点颜色,默认为白色

      meshMaterialList template; \            #材质,不提供的话默认为白色

Mesh模板需要Vector模板和MeshFace模板,会引用到它们。

2.1 Mesh子对象网络材质列表MeshMaterialList

作用:它将每个面与材质相关联

模板变量含义:材质数量、面数量、面索引(面与材质的关联信息)

模板类型:受限模板,只能包含Material模板。

可以在MeshMaterialList中引用Material数据对象。

Material数据对象保存着材质颜色、镜面反射的指数、镜面反射颜色、自发光颜色。Material是开放模板,即还可以包含其它数据对象。

2.2 模板VertexDuplicationIndics保存的信息记录了网格中哪些顶点是其它顶点的副本。该模板的用途是为了允许加载程序可以判断出,哪些呈现出不同参数的顶点其实是模型中相同的顶点。某些应用程序(比如简化网格的程序)会用到这类信息。

即保留副本,用于精简Mesh的操作

2.3 法向量MeshNormals

光照模型计算中需要用到法线,法线分为面法线和顶点法线。

template MeshNormals

{

    <F43-7686-11cf523>

       DWORD nNormals;                       #法向量个数=顶点数

       array Vector normals[nNormals];            #顶点法向量列表

       DWORD nFaceNormals;                    #面个数=面数

       array MeshFace faceNormals[nFaceNormals]; #面对应的法向量

}

2.4 纹理

TextureFilename数据对象用于引用纹理,它可以作为Material对象的子对象。

MeshTextureCoords指定纹理坐标。

变量含义:纹理坐标个数;纹理坐标对(u, v)数组

3. 变换矩阵

Frame

FrameTransformMatrix

4. 动画

AnimationSet

    Animation

        AnimationKey

抱歉!评论已关闭.