欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于OpenGL的虚拟现实技术在工业产品设计中的应用研究

时间:2011-04-23  作者:秩名

论文导读:OpenGL即开放性图形库(OpenGraphicLibrary)是一个三维的计算机图形和模型库,也似该领域的工业标准。OpenGL灵活方便的实现了二维和三维的高级图形技术,在性能上表现得异常优越,它具有建模、变换、光线处理、色彩处理以及动画等能力,在图形效果处理上增加了纹理映射、物体运动模糊效果和雾化效果等等。
关键词:OpenGL,三维物体,建模
 

0 引言

随着计算机技术的飞速发展,三维立体图象技术也得到了快速的发展,为虚拟现实技术提供了越来越好的软硬件环境,这为设计界广泛采用虚拟现实技术提供了有力的支持。

1 OpenGl简介

OpenGL即开放性图形库(Open Graphic Library)是一个三维的计算机图形和模型库,也似该领域的工业标准。它是一种高性能的开放式且功能强大的3D图像库,具有几百个指令和函数。OpenGL灵活方便的实现了二维和三维的高级图形技术,在性能上表现得异常优越,它具有建模、变换、光线处理、色彩处理以及动画等能力,在图形效果处理上增加了纹理映射、物体运动模糊效果和雾化效果等等。

2使用专业建模软件建模并向OpenGL转化

工业产品设计中的三维模型均是由3DS MAX等专业建模软件构造而成。但是由于3DS MAX交互性较差,而且3DS MAX模型的默认存储格式max,不易被交互性灵活的OpenGL所读取。因此,我们采用3DS MAX模型的另一种易于OpenGL读取的文件格式3ds作为三维模型的存储格式,然后将模型通过OpenGL导入三维场景并实现交互性操作。图2.1和图2.2所示的模型为在专业建模软件3D MAX中创建的两个模型。下面,具体介绍一下将3ds文件导入OpenGL的实现过程。

图2.1 变压器 图2.2 安全器材

2.13ds模型的数据结构

3DS格式文件是一种二进制数据文件,它由块(chunk)组成(见图2.3)。每个块包括块的索引(ID:Indentification)、块所包含的内容、块的组成以及下一个块的位置。论文大全。

图2.3 块结构图

在3DS文件中,判断1个块所存储的内容是由通过这个块的索引(ID)来实现的。不同类型的块具有不同的ID。3DS文件本身有1个主块(MainChunk),这个主块的ID为4D4D。主块始终出现在文件的开始处,通过对文件开始的两个字节内容进行判断,便可知道当前操作的文件是否为3DS文件,这样就可以避免打开不正确类型的文件。

为保证文件结构的完整性以及可操作性,不同的块在文件中是按一定的体系来存储的。在这个体系中,主块(Main Chunk)在最顶端,在主块之下嵌套了各个子块,并且子块之间也是相互嵌套的。这样,块与块之间的关系得到了体现,方便了读取。比如作为整个场景的环境设置(包括视点、光源、材质等)放在其他实体块的前面,对这些实体产生作用。图2.4简单描述了在3DS文件中块与块之间的相互关系。

图2.4 3ds文件结构

由图2.4可以看出,该体系结构和真实环境中的场景构造类似。在该体系结构中,EDIT-OBJECT块(ID为4000)特别重要。论文大全。因为它记录了所需要的各种三维实体的坐标、纹理等数据,正确地对它们进行操作是生成具有真实感图形的保证。

在3DS文件中,每个实体都是由三角形面片组成的。这样,一个三维模型(3DModel)包括一个或多个三维实体(3DObject),一个三维实体又由一个或多个面片(CFace)组成。在记录数据的时候,三维实体的块当中记录了一系列的三维空间坐标和二维纹理坐标,而每个面片块中则通过对这些坐标的索引来表示面片在空间中的位置以及对应的纹理。

材质块中记录了用于检索该材质的名称,如果材质是由文件来创建的,则包括文件名,否则记录材质的颜色。在三维模型当中记录了一个或多个材质(CMaterialInfo),在实体当中则通过对材质的索引来决定当前实体引用了哪个材质。

2.23ds数据模型的读取

根据以上对3DS数据模型结构的分析,能够应用面向对象的方法设计一种能方便、快速、准确对3DS文件进行读取的方法。图2.5是针对3DS文件中三维实体的组成情况而设计的类结构,由此解决3DS模型中数据的存储。

其中的CVector2类和CVector3类存储二维和三维数据,用于记录空间坐标以及纹理坐标。C3DModel类包含了整个三维模型,它由若干个三维实体(用C3Dobject存储)和若干个材质信息(用CmaterialInfo存储)组成。论文大全。C3Dobject中记录了组成这个实体的顶点数量、顶点坐标列表、面数量、纹理坐标列表以及这个实体的材质信息。CFace类记录了组成某个面的纹理坐标索引和地理坐标索引。

图2.5 类关系图

根据3DS文件中各个块之间的嵌套关系,设计了一种递归读取的方法。函数ReadChunk用于读取每个块的开头所记录的块索引(ID)和块的长度。在读取文件的第1个块时,通过索引来判断当前打开的是否为合法3DS文件(索引为4D4D),如果是,则通过调用ReadNextChunk函数将程序带入递归过程。

在ReadNextChunk函数中,同样首先需要调用ReadChunk来读取块索引和块的长度,由块索引来判断块的类型,由块的类型来决定如何读取接下来的数据。在这个过程当中,ReadChunk和ReadNextChunk将会被反复调用。

在读取一个块的时候,始终记录了当前块的大小以及已经读取的数据大小,这样通过比较这两个数值可以知道当前的嵌套块是否读取完成。例如,对于主块(Main Chunk),它贯穿文件的始终,因此,它的大小即代表整个文件的大小,它的结束也代表了这个三维模型的结束。前面说过,块与块之间是相互嵌套的,因此在主块(MainChunk)中就包括了其他的子块,而这些子块又可能包含其自已的子块。通过分别记录每个块的长度和已经读取的数据长度便可以正确控制块的读取顺序。图2.6是读取过程的流程图。

图2.6读取3DS文件的流程图

配合着OpenGL在计算机中生成的虚拟环境,程序将3ds文件读入虚拟环境的运行结果如图2.7所示。这样我们就可以很方便地将3D模型移植到其他的计算机平台当中,从而更好地对产品进行设计和分析。

clip_image004

图2.7 运行效果图

3 结束语

本文分析了基于OpenGL三维建模的实现方法, 使用专业软件建模,再转化为OpenGL程序的方法可以避免直接使用OpenGL建模的复杂工作,又可以通过OpenGL程序进行控制,且模型的外观也更精细,是一种很实用的建模方法。

目前,三维图像技术在军事、医药、商业和娱乐各个领域应用都非常广泛,研究三维建模技术对工业产品的进一步发展具有十分重大的意义。


参考文献
[1]向世明. OpenGL编程与实例[M]. 北京:电子工业出版社,1999
[2]Hearn D,Baker M P. 计算机图形学(第三版)[M]. 蔡士杰等译. 北京:电子工业出版社,2005
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于OpenGL的三维物体纹理贴图研究初苗(图文)
下一篇论文:基于P2P的虚拟校园的研究(图文)
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文