3ds数据结构介绍

上传人:大米 文档编号:563839187 上传时间:2022-11-24 格式:DOCX 页数:13 大小:23.83KB
返回 下载 相关 举报
3ds数据结构介绍_第1页
第1页 / 共13页
3ds数据结构介绍_第2页
第2页 / 共13页
3ds数据结构介绍_第3页
第3页 / 共13页
3ds数据结构介绍_第4页
第4页 / 共13页
3ds数据结构介绍_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《3ds数据结构介绍》由会员分享,可在线阅读,更多相关《3ds数据结构介绍(13页珍藏版)》请在金锄头文库上搜索。

1、3DS文件格式Ofifeet_engthCarrie2Chunk-IDk2斗Chunk-length = 6+n+m6nData6+nrnBub-chunks1、读取规则3ds文件的读取规则如下:字节:直接读取;字:先读低位字节,后读高位字节,如ed 3c读出后的字为3c ed;双字:先读低位字,后读高位字,如ed 3c 25 43读出后的双字为43 25 3c ed; 浮点数:直接读取四个字节。2、CHUNKchunk是3ds文件的基本构成单位。每一个chunk包括一个头和一个主体。chunk是相互嵌套的,这就决定了你必须以递归的 方式读取它们。chunk的头又由两部分组成:ID长一个字,c

2、hunk的长度(以字节为单位,包括头)长一个双字。ID表示chunk 的含义。事实上有上千个chunk,它们构成了一个复杂但灵活的文件系统,你不需要知道所有的就可以顺利的读完整个文件。 我基本搞清楚的chunk有:0x4D4D:根chunk,每一个3ds文件都起自它,它的长度也就是文件的长度。它包含了两个chunk:编辑器,和关键帧。父 chunk: 无子 chunk: OX3D3D、oxBooo长度:头长度+子chunk长度内容:无0X3D3D :编辑器主chunk,它包含有:网格信息、灯光信息、摄象机信息和材质信息。父 chunk: OX4D4D子 chunk: 0x4000、oxafff

3、长度:头长度+子chunk长度内容:无0x4000:网格主chunk,它包含了所有的网格。父 chunk: OX3D3D子 chunk: 0x4100长度:头长度+子chunk长度+内容长度内容:名称(以空字节结尾的字符串)0x4100:网格信息,包含网格名称、顶点、面、纹理坐标等。父 chunk: 0x4000子 chunk: 0x4110、 0x4120、 0x4140、 0x4160长度:头长度+子chunk长度内容:无0x4110 :顶点信息。父 chunk: 0x4100子chunk:无长度:头长度+内容长度内容:顶点个数(一个字)顶点坐标(三个浮点数一个坐标x、y、z,个数*3*浮

4、点数)0x4120:面信息。父 chunk: 0x4100子 chunk: 0x4130长度:头长度+子chunk长度+内容长度内容:面个数(一个字)顶点索引(三个字一个索引1、2、3,个数*3*字)0x4130:与网格相关的材质信息。父 chunk: 0x4120子 chunk: 无长度:头长度+内容长度内容:名称(以空字节结尾的字符串)与材质相连的面的个数(一个字)与材质相连的面的索引(个数字)0x4140 :纹理坐标。父 chunk: 0x4100子 chunk: 无长度:头长度+内容长度内容:坐标个数(一个字)坐标(两个浮点数一个坐标U、V,个数*2*浮点数)0X4160:转换矩阵。父

5、 chunk: 0x4100子chunk:无长度:头长度+内容长度内容:x轴的向量(三个浮点数u、v、n) y轴的向量(三个浮点数u、v、n) z轴的向量(三个浮点数u、v、n)源点坐标(三个浮点数x、y、z)Oxaf:材质信息。父 chunk: OX4D4D子 chunk: oxaooo、0xa020、0xa200长度:头长度+子chunk长度内容:无oxaooo:材质名称。父 chunk: 0xafff子 chunk: 无长度:头长度+内容长度内容:名称(以空字节结尾的字符串)0xa020:满射色。父 chunk: 0xafff子 chunk: 0x0011、0x0012长度:头长度+子c

6、hunk长度内容:无oxa200:纹理帖图。父 chunk: 0xafff子 chunk: 0xa300长度:头长度+子chunk长度 内容:无 oxa300:帖图名称。父 chunk: oxa2oo子chunk:无长度:头长度+内容长度内容:名称(以空字节结尾的字符串)0xB000:关键帧主chunk,包含所有的关键帧信息。父 chunk: OX4D4D子 chunk: oxBoo8、oxBoo2长度:头长度+子chunk长度内容:无0xBoo8:关键帧的起点和终点。父 chunk: oxBooo子 chunk: 无长度:头长度+内容长度内容:起始帧(一个双字)结尾帧(一个双字)0XBO02

7、:网格的关键帧信息。父 chunk: oxBooo子 chunk: oxBoio、oxBoii、0XB013、0XB020、0XB021、0XB022、0XB030长度:头长度+子chunk长度内容:无OxBolO:关键帧的层次信息,包括名称和上一级关键帧的索引,名称与它指向的网格名称一致。父 chunk: 0XB002子 chunk: 无长度:头长度+内容长度内容:名称(以空字节结尾的字符串)两个未知的字上一级关键帧的索引(一个字)OxBoil:关键帧的dummy名称,我不知道dummy在这里的具体含义,但只要你在上一个chunk中读到的名称是“$DUMMY” 那么你就要到这里来读它真正的名

8、称。因为这说明它指向的不是网格而是虚拟的组。父 chunk: oxBoo2子chunk:无长度:头长度+内容长度内容:名称(以空字节结尾的字符串)0xBoi3 :支点坐标。父 chunk: 0xB002子chunk:无长度:头长度+内容长度内容:三个浮点数x,y,z0xBO20:移动的关键帧信息。父 chunk: 0xB002子 chunk: 无长度:头长度+内容长度内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构帧索引(一个字)一个未知的双字移动的向量(三个浮点 数 x,y,z)0xB021:转动的关键帧信息。父 chunk: 0xB002子 chunk: 无长度:头长度+内容长度

9、内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构帧索引(一个字)一个未知的双字转动角度(一个浮点数) 绕之转动的向量(三个浮点数x,y,z) 0XB022:缩放的关键帧信息。父 chunk: 0xB002子 chunk: 无长度:头长度+内容长度内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构帧索引(一个字)一个未知的双字伸缩的向量(三个浮点 数 x,y,z)0xB030:关键帧的索引。父 chunk: 0xB002子chunk:无 长度:头长度+内容长度内容:关键帧的索引(一个字)以下的chunk可能出现在任何chunk中:0X0010:浮点数格式的颜色。父chunk:任

10、何可能的chunk子 chunk: 无长度:头长度+内容长度内容:颜色(三个浮点数red,green,blue)0X0011 :字节格式的颜色。父chunk:任何可能的chunk子 chunk: 无长度:头长度+内容长度内容:颜色(三个字节red,green,blue)0x0012 :字节格式的gamma矫正。父chunk:任何可能的chunk子 chunk: 无长度:头长度+内容长度内容:颜色(三个字节red,green,blue)0x0013:浮点数格式的gamma矫正。父chunk:任何可能的chunk子 chunk: 无长度:头长度+内容长度内容:颜色(三个浮点数red,green,b

11、lue)0x0030 :字格式的百分比。父chunk:任何可能的chunk子chunk:无 长度:头长度+内容长度内容:百分比(一个字0100)0x0031 :浮点数格式的百分比。父chunk:任何可能的chunk子 chunk: 无长度:头长度+内容长度内容:百分比(一个浮点数0100)3ds文件是基于“块”存储的,这些块描述了诸如场景,每个编辑窗口(Viewport)的状态,材质,网格对象等等数据。1、3DS块的组织方式MAIN3DS(OX4D4D) 基本信息块IIVERSION (0x0002) 版本信息块IIEDIT3DS (0X3D3D) 编辑信息块II| IEDIT_MATERIA

12、L (0xAFFF) /材质III|IIMAT_NAME01 (0XA000) /材质名称IIIMAT_AMBCOL (0xA010) /环境色IIIMAT_DIFCOL (0xA020) /漫射色IIIMAT_SPECOL (0xA030) /反射色IIIMAT_SHININESS (0xA040) /亮度I IIMATMAP (0xA200) /材质的纹理?I IIMATMAPFILE (0xA300) /保存纹理的文件名I II IEDIT_C0NFIG1 (0x0100) /配置信息 1I IEDIT_CONFIG2 (0X3E3D) /配置信息 2I IEDIT_VIEW_P1 (0

13、x7012) /视窗 1IIIIIITOP (0x0001) /顶视图IIIBOTTOM (0x0002) /底视图IIILEFT (0x0003) /左视图|RIGHT (0x0004) /右视图|FRONT (0x0005) /前视图|BACK (0x0006) /后视图|USER (0x0007) 用户自定义|CAMERA(0xFFFF) 相机|LIGHT (0x0009) 灯光|DISABLED (0x0010) 禁用|BOGUS (0x0011) /虚拟| |EDIT_VIEW_P2 (0x7011) /视窗 2|TOP (0x0001) /顶视图|BOTTOM (0x0002) /

14、底视图|LEFT (0x0003) /左视图|RIGHT (0x0004) /右视图|FRONT (0x0005) /前视图|BACK (0x0006) /后视图|USER (0x0007) 用户自定义|CAMERA (0xFFFF) 相机|LIGHT (0x0009) 灯光|DISABLED (0x0010) 禁用|BOGUS (0x0011) /虚拟|EDIT_VIEW_P3 (0x7020) /视窗 3|EDIT_VIEW1 (0x7001) /视图|EDIT_BACKGR (0x1200) 背景|EDIT_AMBIENT (0x2100) /环境|EDIT_OBJECT (0x4000) /对象(包括面、点等信息)|OBJ_TRIMESH (0x4100) 三角形网格对象| | |TRI_VERTEX (0x4110) 顶点|

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号