基于OpenGL的邦宝模型积木分析系统设计与实现
本文共计6733个字,预计阅读时长23分钟。【 字体:大 中 小 】
基于OpenGL的邦宝模型积木分析系统设计与实现
摘 要:由于传统单凭经验使用插座式积木搭建大型场景模型时会出现费时费力,无法提前统计成本等难题,所以急需开发出一个积木智能搭建系统。邦宝模型积木分析系统正是应企业需求开发,涉及到智能选择不同形状的积木来完成每一层的铺设、上下层交叉铺设、模型不同位置不同染色、减少零碎颗粒等要求,针对这种情况,提出了基于OpenGL技术,设计出相应的算法。本文从工程应用的角度出发,简要介绍了3DS文件格式,系统用到的开发平台及OpenGL技术,整个系统的结构总框架及功能,基于扫描法的栅格化算法、单层积木铺设算法及上下层粘连性检验算法。在此基础上实现了从3D模型文件导入、模型调整、切片分层、颗粒化到输出积木搭建方案的全自动化。
关键词:积木;OpenGL;3D模型
引言
随着当今时代计算机技术的突飞猛进,三维图形技术在建筑虚拟、场景漫游、虚拟教育、3D游戏等各方面的应用越来越广泛。同时各种3D模拟积木软件也得到迅猛的发展,目前国内外应用较多的软件有Lego Digital Designer、MLCad、LDView、LPub等,虽然这些都是非常优秀的3D模拟积木软件,但它们并没有一个软件能彻底解决从三维模型导入、模型调整、切片分层、颗粒化到输出积木搭建方案的全自动化。
OpenGL是一个功能强大的三维图形开发接口,由于它方便而强大的三维图形的绘制功能,并具有可靠性高、可扩展性、可伸缩性、容易使用、灵活性和可移植性等优点,因此应用OpenGL开发技术能够极大地提高开发效率。尽管很多文献[1-4]介绍了利用OpenGL技术对3DS模型数据进行读取、显示和控制的方法,但大多数只涉及到基本的静态3DS模型数据的使用,并没有对动态数据进行处理。本文基于OpenGL技术对邦宝模型积木分析系统进行了研究,通过这个系统,我们可以读取出3DS模型文件并对其进行显示控制,然后通过切片、颗粒化等一系列操作计算出在使用邦宝基本部件搭建一个模型时所需要的部件种类、个数及每层的积木搭建排列,进一步计算出整个模型所用积木的总重量及总价格。
一、3DS文件格式简介
3DS是Autodesk公司存储3D模型数据的一种文件格式。
3DS文件结构由许多块组成,每个块由信息类别和下一个块的相对位置两部分组成,其中块的信息类别用ID来标识。由于每个块指出了下一个块的相对于该块起始位置的偏移字节数,这样即使你不明白这个块的含义,也可以很容易地忽略它。与许多文件格式一样,3DS二进制文件中的数据也是按低位在前、高位在后的方式组织的。例如,两个十六进制字节0x4A5C组成的整型数,表明5C是高位字节,4A是低位字节[5]。
3DS文件中块的前两项信息分别是块的ID和块的长度,其中块的ID是一个整型数,而块的长度是一个块相对于该块的字节偏移量,是一个长整型数。3DS文件中每个块是一个层次结构,不同类型的块具有不同的层次结构。每一个3DS文件的开头都是由一个根块构成,它包含了整个文件,其ID是0x4D4D。根块内的块称为主块,主块有3D编辑程序块和关键帧块两种类型。主块后面是该主块所包括的子块,而3D编辑程序块是物体的形体数据定义的开始。3D编辑程序块的子块包括材质列表块、物体块等,而物体块又包含了网格块、亮度信息块、相机参数块等。其中网格块包括位置信息块、顶点列表块、面信息块等;关键帧块定义关键帧的信息。3DS文件这种复杂的块层次结构的优势在于即使我们并不知道每一个块的具体含义,在程序中读取3DS文件类型的模型时,完全可以忽略掉那些不感兴趣或不需要的块信息,仅读取所需要的块。
二、开发平台和技术
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是一套底层三维图形API,之所以称之为底层API,是因为它没有提供几何实体图元,不能直接用以描述场景。但通过一些转换程序,可以很方便的将AutoCAD、3DS等图形设计软件制作的3DS模型文件转换成OpenGL的顶点数据。由于OpenGL提供了清晰明了的图形函数,所以不要求开发者把三维物体模型的数据写成固定的数据格式,开发者不但可以直接使用自己的数据,而且可以利用其它不同格式的数据源,这种灵活性极大地节省了开发时间,提高了开发效率。因此我们选择使用OpenGL技术进行开发。


护理工作中如何做好人文关怀论文
人文护理教育价值分析论文
手术室护理中人文关怀的应用论文
护理管理中人文关怀与应用论文
会计职业技能竞赛体系的构建策略论文
高职院校会计电算化问题的思考分析论文
浅谈会计在公司治理中的应用毕业论文
上市商业银行会计信息对股价影响分析论文
会计学校企联合教课形式的价值论文
谈加强管理会计体系建设措施论文
财务会计在公司的地位和作用
造价工程师作用及地位
造价工程师的作用及地位
仓储管理在物流中的地位和作用
财务会计在企业管理中的运用论文
电影音乐的发展特点及作用地位论文
发展低碳经济中林业的作用及地位论文
简述物理实验在物理教学中的地位及作用论文
成本管理在企业管理地位及作用
读书的作用优美句子(精选100句)