- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenGL的邦宝模型积木分析系统设计与实现.doc
基于OpenGL的邦宝模型积木分析系统设计与实现
摘 要:由于传统单凭经验使用插座式积木搭建大型场景模型时会出现费时费力,无法提前统计成本等难题,所以急需开发出一个积木智能搭建系统。邦宝模型积木分析系统正是应企业需求开发,涉及到智能选择不同形状的积木来完成每一层的铺设、上下层交叉铺设、模型不同位置不同染色、减少零碎颗粒等要求,针对这种情况,提出了基于OpenGL技术,设计出相应的算法。本文从工程应用的角度出发,简要介绍了3DS文件格式,系统用到的开发平台及OpenGL技术,整个系统的结构总框架及功能,基于扫描法的栅格化算法、单层积木铺设算法及上下层粘连性检验算法。在此基础上实现了从3D模型文件导入、模型调整、切片分层、颗粒化到输出积木搭建方案的全自动化。
关键词:积木;3D模型;OpenGL
0 引言
随着当今时代计算机技术的突飞猛进,三维图形技术在建筑虚拟、场景漫游、虚拟教育、3D游戏等各方面的应用越来越广泛。同时各种3D模拟积木软件也得到迅猛的发展,目前国内外应用较多的软件有Lego Digital Designer、MLCad、LDView、LPub等,虽然这些都是非常优秀的3D模拟积木软件,但它们并没有一个软件能彻底解决从三维模型导入、模型调整、切片分层、颗粒化到输出积木搭建方案的全自动化。
OpenGL是一个功能强大的三维图形开发接口,由于它方便而强大的三维图形的绘制功能,并具有可靠性高、可扩展性、可伸缩性、容易使用、灵活性和可移植性等优点,因此应用OpenGL开发技术能够极大地提高开发效率。尽管很多文献[1-4]介绍了利用OpenGL技术对3DS模型数据进行读取、显示和控制的方法,但大多数只涉及到基本的静态3DS模型数据的使用,并没有对动态数据进行处理。本文基于OpenGL技术对邦宝模型积木分析系统进行了研究,通过这个系统,我们可以读取出3DS模型文件并对其进行显示控制,然后通过切片、颗粒化等一系列操作计算出在使用邦宝基本部件搭建一个模型时所需要的部件种类、个数及每层的积木搭建排列,进一步计算出整个模型所用积木的总重量及总价格。
1 3DS文件格式简介
3DS是Autodesk公司存储3D模型数据的一种文件格式。
3DS文件结构由许多块组成,每个块由信息类别和下一个块的相对位置两部分组成,其中块的信息类别用ID来标识。由于每个块指出了下一个块的相对于该块起始位置的偏移字节数,这样即使你不明白这个块的含义,也可以很容易地忽略它。与许多文件格式一样,3DS二进制文件中的数据也是按低位在前、高位在后的方式组织的。例如,两个十六进制字节0x4A5C组成的整型数,表明5C是高位字节,4A是低位字节[5]。
3DS文件中块的前两项信息分别是块的ID和块的长度,其中块的ID是一个整型数,而块的长度是一个块相对于该块的字节偏移量,是一个长整型数。3DS文件中每个块是一个层次结构,不同类型的块具有不同的层次结构。每一个3DS文件的开头都是由一个根块构成,它包含了整个文件,其ID是0x4D4D。根块内的块称为主块,主块有3D编辑程序块和关键帧块两种类型。主块后面是该主块所包括的子块,而3D编辑程序块是物体的形体数据定义的开始。3D编辑程序块的子块包括材质列表块、物体块等,而物体块又包含了网格块、亮度信息块、相机参数块等。其中网格块包括位置信息块、顶点列表块、面信息块等;关键帧块定义关键帧的信息。3DS文件这种复杂的块层次结构的优势在于即使我们并不知道每一个块的具体含义,在程序中读取3DS文件类型的模型时,完全可以忽略掉那些不感兴趣或不需要的块信息,仅读取所需要的块。
2 开发平台和技术
2.1 使用C#编程语言
C#是一种完全建立在Microsoft.NET框架平台上的高级编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果,如面向对象、类型安全等。C#充分利用了.NET框架的优点,是开发.NET框架应用程序最好的语言之一。与VC++相比,C#的程序调试更加容易,语法更加简洁,且可以更加快速地开发应用程序。把C#和OpenGL结合起来开发3D图形程序和软件,将显著提高开发效率[6]。
2.2 使用OpenGL技术
OpenGL的英文全称是“Open Graphics Library”,即“开放性图形库”,它是计算机工业标准3D应用程序接口,是一个功能强大,调用方便的底层3D图形库。作为图形硬件的软件接口,OpenGL由几百个指令或函数组成,这些指令允许用户说明二维几何对象或三维几何对象,允许用户对对象实施操作以便把这些对象着色到帧存上。OpenGL作为一个性能优越的图形应用程序设计界面(API),适用于广泛的计算机环境。OpenGL是
原创力文档


文档评论(0)