微软.x文件解析

文件 的整体由3部分组成
1 文件头
文件头的格式:xof 0303txt 0032
Xof表示x文件,0303表示主版本号和次版本号,txt表示是文本文件,0032表示是32位的浮点数。
2 模板
模板的格式:
template ColorRGB {
 <d3e16e81-7835-11cf-8f52-0040333594a3>
 FLOAT red;
 FLOAT green;
 FLOAT blue;
[约束]

}

可以看到模板的结构由3部分组成,模板ID,模板类型,模板约束条件。
(1)模板ID <d3e16e81-7835-11cf-8f52-0040333594a3>
它是个全局唯一标示符,用于标示这个模板
(2)模板类型
声明各种类型,组成模板的结构
(3)模板约束条件
模板约束条件有3种形式,开放模板,样式为[…],表示可以包含其它模板类型;
受限模板,样式为[xxx],其中xxx为某一指定的类型,表面此类模板只能插入xxx
类型的模板;封闭模板,最后没用[],就是不能插入任何类型的模板了。
3 模板实例
X文件的所有内容都存储在模板实例中,对x文件进行解析,就是读取模板实例中
的东西,下面就是lxq.x文件的实例。

Material Material__26 {
 1.000000;1.000000;1.000000;1.000000;;//ColorRGBA faceColor;
 3.200000; 			//FLOAT power;
 0.000000;0.000000;0.000000;;	//ColorRGB specularColor;
 0.000000;0.000000;0.000000;;	//ColorRGB emissiveColor
 TextureFilename {			//纹理路径
  "bd378f0.bmp";
 }
}


…总共四种材质,每种材质对应一张纹理。

材质实例罗列出来后,就是x文件的核心层次框架结构。在x文件中,一般都是一个层次结构,但也有两个或更多的的层次结构。例如lxq.x中就是两个结构,tiny.x
中就是一个层次结构。这种层次结构如下面所示:

Frame Element_C0 { 	//框架名
 FrameTransformMatrix {	//该框架相对于父框架的转移矩阵
  	8.811612,0.000000,0.000000,0.000000,0.000000,-0.113476,
	8.810882,0.000000,0.000000,8.810882,0.113476,0.000000,
	40.591251,15.394788,-25.943836,1.000000;;
 }

 Mesh  { //该框架对应的网格结构
  943;  //顶点数目
  0.169798;0.055004;0.729962;, //顶点坐标
   ...				     //中间省去941个点
   0.092184;-0.988528;0.119642
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值