- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3ds数据结构介绍
3DS 文件格式
1、读取规则 3ds文件的读取规则如下:
字节:直接读取;
字:先读低位字节,后读高位字节,如ed 3c读出后的字为3c ed;
双字:先读低位字,后读高位字,如ed 3c 25 43读出后的双字为43 25 3c ed;
浮点数:直接读取四个字节。
?
2、CHUNK
chunk是3ds文件的基本构成单位。每一个chunk包括一个头和一个主体。chunk是相互嵌套的,这就决定了你必须以递归的方式读取它们。chunk的头又由两部分组成:ID长一个字,chunk的长度(以字节为单位,包括头)长一个双字。ID表示chunk的含义。事实上有上千个chunk,它们构成了一个复杂但灵活的文件系统,你不需要知道所有的就可以顺利的读完整个文件。我基本搞清楚的chunk有:
0x4D4D:根chunk,每一个3ds文件都起自它,它的长度也就是文件的长度。它包含了两个chunk:编辑器,和关键帧。
父chunk:无
子chunk:0x3D3D、0xB000
长度:头长度子chunk长度
内容:无
?
0x3D3D:编辑器主chunk,它包含有:网格信息、灯光信息、摄象机信息和材质信息。
父chunk:0x4D4D
子chunk:0x4000、0xafff
长度:头长度子chunk长度
内容:无
?
0x4000:网格主chunk,它包含了所有的网格。
父chunk:0x3D3D
子chunk:0x4100
长度:头长度子chunk长度内容长度
内容:名称(以空字节结尾的字符串)
?
0x4100:网格信息,包含网格名称、顶点、面、纹理坐标等。
父chunk:0x4000
子chunk:0x4110、0x4120、0x4140、0x4160
长度:头长度子chunk长度
内容:无
?
0x4110:顶点信息。
父chunk:0x4100
子chunk:无
长度:头长度内容长度
内容:顶点个数(一个字)顶点坐标(三个浮点数一个坐标x、y、z,个数*3*浮点数)
?
0x4120:面信息。
父chunk:0x4100
子chunk:0x4130
长度:头长度子chunk长度内容长度
内容:面个数(一个字)顶点索引(三个字一个索引1、2、3,个数*3*字)
?
0x4130:与网格相关的材质信息。
父chunk:0x4120
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)与材质相连的面的个数(一个字)与材质相连的面的索引(个数*字)
?
0x4140:纹理坐标。
父chunk:0x4100
子chunk:无
长度:头长度内容长度
内容:坐标个数(一个字)坐标(两个浮点数一个坐标u、v,个数*2*浮点数)
?
0x4160:转换矩阵。
父chunk:0x4100
子chunk:无
长度:头长度内容长度
内容: x轴的向量(三个浮点数u、v、n) y轴的向量(三个浮点数u、v、n) z轴的向量(三个浮点数u、v、n)源点坐标(三个浮点数x、y、z)
?
0xafff:材质信息。
父chunk:0x4D4D
子chunk:0xa000、0xa020、0xa200
长度:头长度子chunk长度
内容:无
?
0xa000:材质名称。
父chunk:0xafff
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)
?
0xa020:满射色。
父chunk:0xafff
子chunk:0x0011、0x0012
长度:头长度子chunk长度
内容:无
?
0xa200:纹理帖图。
父chunk:0xafff
子chunk:0xa300
长度:头长度子chunk长度
内容:无
?
0xa300:帖图名称。
父chunk:0xa200
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)
?
0xB000:关键帧主chunk,包含所有的关键帧信息。
父chunk:0x4D4D
子chunk:0xB008、0xB002
长度:头长度子chunk长度
内容:无
?
0xB008:关键帧的起点和终点。
父chunk:0xB000
子chunk:无
长度:头长度内容长度
内容:起始帧(一个双字)结尾帧(一个双字)
?
0xB002:网格的关键帧信息。
父chunk:0xB000
子chunk:0xB010、0xB011、0xB013、0xB020、0xB021、0xB022、0xB030
长度:头长度子chunk长度
内容:无
?
0xB010:关键帧的层次信息,包括名称和上一级关键帧的索引,名称与它指向的网格名称一致。
父chunk:0xB002
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)两个未知的字上一级关键帧的索引(一个字)
?
0xB01
文档评论(0)