.X文件格式

X文件格式
AVS图像格式
以X为文件扩展名的文件是微软定义的文件格式.用来存放3D模型.   
X文件有文本和二进制两种存储形式.   
  
X文件内部结构如下:   
  
·Frame   
定义框架容器,用来装Mesh对象。可以包含多个Mesh对象,也可以包含子框架。在骨骼动画中可以装载一块骨骼,和一系列骨骼(如手臂),可以没有Mesh对象(表示骨骼时)。   
包括两部分:   
1、Mesh对象。   
2、转换矩阵,本地转换矩阵,初始化最初动作状态。   
  
FrameTransformMatrix   
定义框架的本地转换矩阵,是一个4X4矩阵(Matrix4x4类型),共16个浮点数据   
(注意这里的4X4矩阵是行主的)   
  
AnimationKey   
动画键,定义具体的动作数据,包括一系列旋转、移动、放缩、矩阵变换。   
包括三部分:   
1、动作键类型,包括旋转、移动、放缩、矩阵   
2、指示有几个键数值   
3、具体的键值列表(FloatKeys类型,包含时间值)   
  
AnimationSet   
动作组合,包括一个或多个动作(Animation)。每一个动作组合表示一个完整的动作   
  
FloatKeys   
定义浮点数组,它用来定义动作键数值。   
包括两部分:   
1、浮点值个数   
2、浮点值列表   
  
Coords2d   
定义纹理坐标向量,包括两个Float值,分别是 u、v 。   
  
ColorRGBA   
定义RGBA对象。包括四个Float值,分别是R、G、B、alpha   
  
ColorRGB   
定义RGB对象。包括三个Float值,分别是R、G、B   
  
Boolean2d   
二维Boolean类型,用来定义faceWrapvalues键值   
  
Boolean   
定义Boolean类型,0或1。   
  
IndexedColor   
索引颜色定义,包含两部分:1、索引号 2、RGB值   
  
·Material   
定义材质信息,可以被应用到一个完整的Mesh对象,也可以应用到其中的一个面。   
包含五部分:   
1、FaceColor,环境光,包括四个浮点值,其中有Alpha值   
2、Power,镜面反射的光泽度,控制亮点大小,一个浮点值   
3、specularcolor,镜面反射   
4、发射光   
  
·Matrix4x4   
定义四乘四矩阵,共16个值。   
  
Mesh   
定义一个Mesh对象。   
共有9个部分组成:   
1、包含的顶点数   
2、顶点列表,一个顶点包含三个浮点值   
3、面数   
4、面的顶点索引列表,每个面包含三个顶点   
5、MeshFaceWraps 结构,暂时无用   
6、MeshTextureCoords 纹理坐标,可选   
7、MeshNormals 法向,可选   
8、MeshVertexColors 顶点颜色,默认为白色   
9、MeshMaterialList 材质,不提供的话默认为白色   
  
MeshFace   
面索引,在Mesh结构中用于定义面索引   
包括两部分,1、面数 2、顶点索引构成的面数组   
  
·MeshFaceWraps   
暂时不用   
·MeshTextureCoords   
定义纹理坐标   
1、纹理坐标的个数   
2、纹理坐标,每个纹理坐标有两个浮点值   
  
·MeshMaterialList   
定义材质应用   
1、定义多少个材质被使用   
2、材质影响面的个数   
3、面索引   
  
·MeshNormals   
定义Mesh的法向量,包括四部分   
1、nNormals,法向量的个数=顶点数   
2、Normals,顶点法向量列表   
3、nFaceNormals,面的个数=面数   
4、FaceNormals,面对应的法向量   
  
·MeshVertexColors   
指定顶点的颜色代替原来的材质   
1、顶点数目   
2、颜色索引   
  
·Patch   
定义一个Bezier曲线控制面片   
· PatchMesh   
定义一个Bezier Patch定义的Mesh   
  
·Quaternion   
定义四元数   
  
·SkinWeights   
定义骨骼影响权重。   
包括以下几个部分:   
1、骨骼的名字   
2、有多少个权重值   
3、顶点的索引列表   
4、相对应的影响顶点索引列表   
5、本地转换矩阵,转换到骨骼空间   
  
·TextureFilename   
纹理的名称,字符串类型,加双引号如:“C:\\demo.dds”   
  
·TimedFloatKeys   
时间值,用于Animaterkey中定义时间间隔   
  
·Vector   
三维向量,三个浮点值   
  
·VertexDuplicationIndices   
保留副本,用于精简Mesh的操作   
1、顶点数   
2、原始顶点数,实际顶点数   
  
·XSkinMeshHeader   
描述被导出的SkinMesh相关信息   
1、影响一个顶点的最多变换数目   
2、影响每个面三个顶点的最大变换数目   
3、影响一个顶点的骨骼数 

posted @ 2010-07-08 13:32  阿飞同学  阅读(1282)  评论(0编辑  收藏  举报