位置: 编程技术 - 正文
推荐整理分享3DS 文件格式(3ds怎么用3ds格式),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:3ds文件格式用什么软件打开,3ds文件格式用什么软件打开,3ds怎么用3ds格式,3ds格式文件用什么打开,3ds文件格式用什么软件打开,3ds格式文件用什么打开,3ds格式文件用什么打开,3DS文件格式适用领域,内容如对您有帮助,希望把文章链接给更多的朋友!
3DS 文件式
1、读取规则 3ds文件的读取规则如下:
字节:直接读取;
字:先读低位字节,后读高位字节,如ed 3c读出后的字为3c ed;
双字:先读低位字,后读高位字,如ed 3c 读出后的双字为 3c ed;
浮点数:直接读取四个字节。
2、CHUNK
chunk是3ds文件的基本构成单位。每一个chunk包括一个头和一个主体。chunk是相互嵌套的,这就决定了你必须以递归的方式读取它们。chunk的头又由两部分组成:ID长一个字,chunk的长度(以字节为单位,包括头)长一个双字。ID表示chunk的含义。事实上有上千个chunk,它们构成了一个复杂但灵活的文件系统,你不需要知道所有的就可以顺利的读完整个文件。我基本搞清楚的chunk有:
0x4D4D:根chunk,每一个3ds文件都起自它,它的长度也就是文件的长度。它包含了两个chunk:编辑器,和关键帧。
父chunk:无
子chunk:0x3D3D、0xB
长度:头长度子chunk长度
内容:无
0x3D3D:编辑器主chunk,它包含有:网信息、灯光信息、摄象机信息和材质信息。
父chunk:0x4D4D
子chunk:0x、0xafff
长度:头长度子chunk长度
内容:无
0x:网主chunk,它包含了所有的网。
父chunk:0x3D3D
子chunk:0x
长度:头长度子chunk长度内容长度
内容:名称(以空字节结尾的字符串)
0x:网信息,包含网名称、顶点、面、纹理坐标等。
父chunk:0x
子chunk:0x、0x、0x、0x
长度:头长度子chunk长度
内容:无
0x:顶点信息。
父chunk:0x
子chunk:无
长度:头长度内容长度
内容:顶点个数(一个字)顶点坐标(三个浮点数一个坐标x、y、z,个数*3*浮点数)
0x:面信息。
父chunk:0x
子chunk:0x
长度:头长度子chunk长度内容长度
内容:面个数(一个字)顶点索引(三个字一个索引1、2、3,个数*3*字)
0x:与网相关的材质信息。
父chunk:0x
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)与材质相连的面的个数(一个字)与材质相连的面的索引(个数*字)
0x:纹理坐标。
父chunk:0x
子chunk:无
长度:头长度内容长度
内容:坐标个数(一个字)坐标(两个浮点数一个坐标u、v,个数*2*浮点数)
0x:转换矩阵。
父chunk:0x
子chunk:无
长度:头长度内容长度
内容: x轴的向量(三个浮点数u、v、n) y轴的向量(三个浮点数u、v、n) z轴的向量(三个浮点数u、v、n)源点坐标(三个浮点数x、y、z)
0xafff:材质信息。
父chunk:0x4D4D
子chunk:0xa、0xa、0xa
长度:头长度子chunk长度
内容:无
0xa:材质名称。
父chunk:0xafff
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)
0xa:满射色。
父chunk:0xafff
子chunk:0x、0x
长度:头长度子chunk长度
内容:无
0xa:纹理帖图。
父chunk:0xafff
子chunk:0xa
长度:头长度子chunk长度
内容:无
0xa:帖图名称。
父chunk:0xa
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)
0xB:关键帧主chunk,包含所有的关键帧信息。
父chunk:0x4D4D
子chunk:0xB、0xB
长度:头长度子chunk长度
内容:无
0xB:关键帧的起点和终点。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:起始帧(一个双字)结尾帧(一个双字)
0xB:网的关键帧信息。
父chunk:0xB
子chunk:0xB、0xB、0xB、0xB、0xB、0xB、0xB
长度:头长度子chunk长度
内容:无
0xB:关键帧的层次信息,包括名称和上一级关键帧的索引,名称与它指向的网名称一致。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)两个未知的字上一级关键帧的索引(一个字)
0xB:关键帧的dummy名称,我不知道dummy在这里的具体含义,但只要你在上一个chunk中读到的名称是“$$$DUMMY”那么你就要到这里来读它真正的名称。因为这说明它指向的不是网而是虚拟的组。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:名称(以空字节结尾的字符串)
0xB:支点坐标。
父chunk:0xB
子chunk:无长度:头长度内容长度
内容:三个浮点数x,y,z
0xB:移动的关键帧信息。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构{ 帧索引(一个字)一个未知的双字移动的向量(三个浮点数x,y,z) }
0xB:转动的关键帧信息。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构{ 帧索引(一个字)一个未知的双字转动角度(一个浮点数)绕之转动的向量(三个浮点数x,y,z) }
0xB:缩放的关键帧信息。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:五个未知的字帧个数(一个字)一个个数那么多的循环结构{ 帧索引(一个字)一个未知的双字伸缩的向量(三个浮点数x,y,z) }
0xB:关键帧的索引。
父chunk:0xB
子chunk:无
长度:头长度内容长度
内容:关键帧的索引(一个字)
以下的chunk可能出现在任何chunk中:
0x:浮点数式的颜色。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:颜色(三个浮点数red,green,blue)
0x:字节式的颜色。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:颜色(三个字节red,green,blue)
0x:字节式的gamma矫正。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:颜色(三个字节red,green,blue)
0x:浮点数式的gamma矫正。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:颜色(三个浮点数red,green,blue)
0x:字式的百分比。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:百分比(一个字0~)
0x:浮点数式的百分比。
父chunk:任何可能的chunk
子chunk:无
长度:头长度内容长度
内容:百分比(一个浮点数0~)
Cocos2dx 3.2 + vs + win7 改变面黑色背景的大小 打开AppDeleGate.cpp找到函数applicationDidFinishLaunching,先是通过director=Director::getInstance();获得一个导演实例,然后通过autoglview=director-getOpenGLView();获得一个Ope
opengl 绘制实心圆柱体 glu中提供了一个绘制圆柱体的函数:voidgluCylinder(GLUquadric*quad,GLdoublebase,GLdoubletop,GLdoubleheight,GLintslices,GLintstacks)使用方法是:GLUquadric*pObj;pObj=gluNewQuadric();
Opengl 添加纹理 #includestdio.h#includewindows.h//HeaderFileForWindows#includeglgl.h//HeaderFileForTheOpenGLLibrary#includeglglu.h//HeaderFileForTheGLuLibrary#includeglglut.h//HeaderFileForTheGlauxLibrary#incl
标签: 3ds怎么用3ds格式
本文链接地址:https://www.jiuchutong.com/biancheng/369465.html 转载请保留说明!友情链接: 武汉网站建设