从3ds文件中导入网格数据

从3ds文件中导入网格数据

ID:14199133

大小:69.50 KB

页数:12页

时间:2018-07-26

从3ds文件中导入网格数据_第1页
从3ds文件中导入网格数据_第2页
从3ds文件中导入网格数据_第3页
从3ds文件中导入网格数据_第4页
从3ds文件中导入网格数据_第5页
资源描述:

《从3ds文件中导入网格数据》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、从3DS文件中导入网格数据写这份文档的起因是因为网上流传的MartinvanVelsen和另外一个人合写的那份文档是英文文档,而且那份文档的源程序风格不太好(其实相对于我手头上的另外一份程序,还算过得去)。这里参考RobinFercoq编写的Mli(3DS的材质文件,3DS文件中材质块的存储方法跟他是一样的)文档重新翻译整理MartinvanVelsen的那份文档(大部分是关于MESH的部分和材质部分,其他部分就偷懒了,虽然说是翻译,但文章里面啰哩叭嗦的那些话并不是原文有的,改写率在80%以上哦)并附上我写的一份源代码。注意:按照原文的说明,Autodesk公司并没有发

2、布官方的3ds文件的文档,所以你无法获得任何的官方支持。而且,本文针对的文件格式是3.0及以上版本的。Acknowledgement这里首先要感谢两位原作者(虽然他们也是rewrite,我没向原原作者致谢的原因是我不知道还有没有原原原作者,:P),他们的工作让我们能够了解到这个文件的基本结构。其次要感谢我的同学周涛,他不辞辛劳地帮我找到了无数3DS和mli文件格式的文档,虽然那时候我已经基本完工了(:P)。版权是的,这很烦人,是的,我知道你很烦,但考虑一下我作为一个第一次写这种文档的作者的虚荣心。你还是满足我一下吧。关于本文档的版权,只要你不做威胁国家、人类安全和我个人

3、安全的事情,随便你怎么修改,拷贝,分发都无所谓。如果你把他出成书的话,记得寄一本给我看看。扫兴的是没有官方的文件格式文档,所以我也不知道这会不会给我们这些使用者带来麻烦。另外我本人是很愿意把英文的原文一起放在一起的,不过为了表示对原作者的尊重,没有这样做。如果你想看英文文档的话,请自己下载。想象一下,在搜索引擎上那几百页的搜索结果中找到一个有用的连接的喜悦,在成百上千个ftp中终于找到一个可以匿名连接的ftp服务器的狂喜……强烈建议你感受一下——前提是你的心脏够好。啰嗦完了,OK,Let’sgo。3DS文件格式1.介绍对于任何东西来说,介绍都是必不可少的。当然如果你跟他

4、很熟,可以跳过去不看这段。3ds文件是基于“块”存储的,这些块描述了诸如场景数据,每个编辑窗口(Viewport)的状态,材质,网格数据(我们最关心的就是这个)等等数据。每个块都包含一个ID和块长度的块头(这里原文写的是下一个块的偏移量,我认为不精确),如果你对该块的信息不感兴趣的话,可以直接跳过该块读取下一个块。跟许多文件格式类似,为了读取的方便,3ds文件中数据的存储方式是Intel式的,也就是说是高位放在后面,低位放在前面。比如:网格块的块头ID,0x4000在文件里是以0040存放的,对于windows程序员来说,无需做任何转换。(这里要多啰嗦一句,我在国内出版

5、的两本书上看到过这个文件格式的说明,跟英文原文很相似,最有趣就是在这边了,原文中举的例子是5C4A,那两本书也不约而同地举了5C4A的例子。当然,巧合是人类历史的促进剂,这可能是“英雄所见略同”的一个绝好的注脚)每个块都以这样的块头开始:开始结束长度作用012块的ID254该块的长度6……………………块数据3ds文件是严格按照块来划分、分层的,通常一个块会包含下级子块作为自己的数据,而子块又有孙块,孙块亦有子块,子子孙孙,无穷尽也……如果你从一个一级块开始,按照跳过每块长度找寻下一块的做法,无疑是无法访问到二级子块的;相反的,从二级子块开始,却有可能回到一个一级块。所以

6、,保证你对所有要读取的块的层次都有清楚地了解,否则很有可能当你轻巧地从一个块上跳过去,却发现无论如何也找不到你想要的东西了,这时八成你要开始后悔为什么学的是旱地拔葱这样的轻功而不是千斤坠了。按3ds文件的划分方式,有一个块是其它所有的块共同的祖宗,也就是其他所有块的根块,我们称之为主块(就是下图的MAIN3DS块)。主块说白了就是整个文件。所有的3ds文件都是以他开始的,他总是位于整个文件的最开始(你可以把它的块ID当作识别3ds文件的标志),延伸到整个文件结束(多么庞大的东西啊)。他的作用………………也就是存在而已。你只要知道有这么个块存在,并了解他的逻辑结构就可以了

7、。以下是一个描述块组织方式的图表。如果你觉得太难看了,不是我的错,我也是copy别人的。什么?你觉得上头的注释太难看了?……MAIN3DS(0x4D4D)

8、(注意,此处并不是紧接着EDIT块的,还有一些描述文件版本信息的块)+--EDIT3DS(0x3D3D)

9、

10、

11、+--EDIT_MATERIAL(0xAFFF)

12、

13、

14、

15、

16、+--MAT_NAME01(0xA000)(SeemliDoc)

17、

18、

19、+--EDIT_CONFIG1(0x0100)

20、+--EDIT_CONFIG2(0x3E3D)

21、+--EDIT_VIEW_P1(0x7012)

22、

23、

24、

25、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。