3DS文件结构(2)

2019-08-31 09:11

#define TRI_LOCAL 0x4160 #define TRI_VISIBLE 0x4165

//------ 关键帧快的子块

#define KEYF_UNKNWN01 0xB009 #define KEYF_UNKNWN02 0xB00A #define KEYF_FRAMES 0xB008 #define KEYF_OBJDES 0xB002

//------ 下面定义了颜色块 #define COL_RGB 0x0010 #define COL_TRU 0x0011 #define COL_UNK 0x0013

//------ 定义视口块

#define TOP 0x0001 #define BOTTOM 0x0002 #define LEFT 0x0003 #define RIGHT 0x0004 #define FRONT 0x0005 #define BACK 0x0006 #define USER 0x0007

#define CAMERA 0x0008 // 0xFFFF is the actual code read from file #define LIGHT 0x0009 #define DISABLED 0x0010 #define BOGUS 0x0011

3.3D编辑块

到现在为止已经大概都介绍完了,现在开始研究细节信息。

0x4D4D是文件头,他的大小就是整个文件的大小。

另外还有两个主要块,他们是3D编辑块和关键帧块:

0x3D3D:3D编辑块,描述了3D对象的数据。3D对象就在这个地方。 0xB000:关键帧块,描述了关键帧数据。

在某个主要块之后有一些数据块。这些应该是其他一些允许在主要块之内的数据(请参见图表)。

0x3D3D的子块:

ID 描述

0100 配置部分

1100 unknown 1200 背景色

1201 unknown

1300 unknown 1400 unknown 1420 unknown 1450 unknown 1500 unknown 2100 环境色 2200 雾? 2201 雾 ? 2210 雾 ?

2300 unknown 3000 unknown 3D3E 配置编辑块 4000 对象数据块 AFFF 材质列表

子块AFFF,定义了材质。其子块A000定义了材质名称。材质名称是ASCLL字符,以0x00为结束符。

子块3D3E,配置编辑块:

ID 描述 7001 视口指示器

7011 视口定义 ( 类型 2 ) 7012 视口定义( 类型 1 )

7020 视口定义( 类型 3 )

3D3E块中有很多变态的数据,其中只有7020块比较重要,这个块定义了4个活动的视口。假设在编辑程序中使用了4个视口,编辑程序配置中包含5个7020块和5个7011块。但是事实上只有开始的4个7020块对用户的视口外观有影响,其他的里面只包含一些附加信息。该块的第6,7字节表明了视图的类型,合法的ID以及其对应的视图如下所示:

ID 描述 0001 顶 0002 底 0003 左 0004 右 0005 前 0006 后 0007 用户 FFFF 摄象机 0009 光源 0010 无效

子块4000是一个对象描述块。该块的开始是一个由0结尾的字符串,描述了该对象的名称。要记住,对象不仅仅是一个物体,也可能是一个光源或者是一个摄象机:

ID 描述 4010 unknown 4012 阴影? 4100 三角形列表 4600 光源 4700 摄象机

子块4100三角形列表的子块:

ID 描述 4110 顶点列表 4111 顶点选项 4120 面列表

4130 面材质 4140 纹理映射 4150 面平滑组 4160 平移矩阵 4165 物体可见性 4170 标准映射

其中4110顶点列表块的数据: 数据类型 Unsigned short Float Float float 大小 2字节 4字节 4字节 4字节 名称 顶点数目 X坐标 Y坐标 Z坐标 其中X,Y,Z一直重复顶点数目次,这样就得到了所有的顶点。

4111顶点选项块: 该块由一些整数组成,第一个整数表明了顶点的个数,然后对每个顶点用一个整数表示一些位信息。其中0~7,11~12位影响物体的可见性,8~10位是随机信息,13~15位表明该顶点是否在某个选择集中被选中。该块不很重要。即使丢失此块,3DS仍旧能够将文件正确的载入。

4120面列表块: 数据类型 Unsigned short Unsigned short Unsigned short Unsigned short Unsigned short 位数 意义 大小 2字节 2字节 2字节 2字节 2字节 名称 面数量 顶点A的索引 顶点B的索引 顶点C的索引 面信息 其中顶点A,B,C和面信息重复面数量次就得到了所有的面。面信息的各位意义如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 AC边的可见性。若是可见的话为1。 BC边的可见性。若是可见的话为1。 AB边的可见性。若是可见的话为1。 映射 未使用 同上 同上 同上 同上 混乱 混乱 0 0 是否在选择集3被选中 是否在选择集2被选中 是否在选择集1被选中 4130面材质块:

如果一个对象只使用默认材质的话便没有面材质块。事实上,每一个对象使用的材质都有一个面材质块。每一个面材质块都以一个以0结尾的字符串开始,接着由一个数字表示使用该材质的面的数量(2个字节),接着就是面描述。0000表示面列表中的第一个面。

4140纹理映射块:

开始的两个字节表示了顶点的数量,然后为每个顶点定义2个浮点数的纹理坐标。也就是说,如果一个顶点的纹理映射在纹理的中心,那么其坐标就是(0.5,0.5)。

4150面平滑组块(译者:至今本人不知道这个块的用处??):

面的数量乘上4个字节,即每个数据是一个4字节的整数,第N个数字表示该面是否属于第N个平滑组。

4160平移矩阵块:

开始的3个浮点数定义了物体局部坐标在绝对坐标中的位置,最后3个浮点数定义了物体的局部中心。

4170标准映射块(译者:至今本人不知道这个块的用处??):

开始的2个字节表示了映射类型:0表示平面映射或者是指定映射;1:圆柱映射;2:球映射。接着用21个浮点数描述该映射。

4600光源块:

开始用3个浮点数(共12字节)描述了该光源的X,Y,Z坐标位置,接下来是如下数据块:

ID 描述

0010 RGB色 0011 24位色块 4610 该光源是个聚光灯

4620 布尔值,表示该光源的有效性

其中,4610块的数据:

开始的3个浮点数表示了聚光灯指向的方向(X,Y,Z)。接下来的一个浮点数表示了热点。最后一个浮点数表示了发散(译者:好像就是聚光的角度)。

0010 RGB色块:

用3个浮点数表示了物体的R,G,B色。

0011 24位色块:

用3个字节描述了物体的R,G,B色(译者:即每分色一字节)。

4700摄像机块:

开始的3个浮点数表示了摄像机的位置(X,Y,Z),中间的3个浮点数表示了摄像机指向的位置(X,Y,Z),接下来的一个浮点数表示了摄像机的旋转角(译者:不知道什么用??),最后一个浮点数表示了摄像机的镜头角度(译者:就是视角)。

4.关键帧块 关键帧块:

ID 描述 B00A unknown

7001 看该块的第一个描述而定(译者:完全不知道什么用,从来没在.3ds文件中见过这个块)

B008 帧数量 B009 unknown

B002 开始对象描述

其中,B008帧数量块:由8字节组成(unsigned long X 2),开始4个字节描述了开始帧,最后4个字节描述了结束帧。

B002物体信息块:

ID 描述

B010 名称与层次结构

B011* 哑元物体命名(译者:也就是不在场景中显示的对象,一般用来对对象分组) B013 unknown B014* unknown

B015 unknown

B020 物体转轴(中心点)

B021 unknown B022 unknown

B010名称与层次结构块:

该块由一个以0结尾的字符串开始,中间4个字节(unsigned short X 2)未知,最后2


3DS文件结构(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第五章 脂类代谢(试题与答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: