欢迎来到天天文库
浏览记录
ID:10157952
大小:28.50 KB
页数:6页
时间:2018-06-11
《基于opengl的虚拟矿山系统的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于OpenGL的虚拟矿山系统的研究摘要:利用计算机虚拟现实技术实现矿井三维可视化是虚拟矿山系统的重点,分析了基于OpenGL开发虚拟矿山系统的基本原理和关键技术,通过改进的OpenGL选择算法,实现了选择三维图形对象,获取属性信息和进行空间查询分析,使用OpenGL纹理映射技术,使巷道的显示更有真实感,对矿山设备分类建立了三维模型,基于此技术研究,构建了一个小型的虚拟矿山系统。关键词:OpenGL;虚拟矿山;纹理映射;选择中图分类号:TP311.1虚拟现实技术是指利用人工智能、计算机图形学、人机接口、多媒体、计算机网
2、络及电子、机械、视听等高新技术,模拟人在特定环境中的视、听、动等行为的高级人机交互技术[1]。OpenGL是由SGI公司推出的独立于操作系统和硬件环境的开放式三维图形库,作为一种用于实时3D图形的工业标准,已经得到广泛的认可和接受。OpenGL具有强大的图形功能和良好的跨平台移植能力,目前已被广泛应用于可视化技术、实体造型、模拟仿真等诸多领域[2]。6利用计算机虚拟现实技术实现矿井三维可视化是虚拟矿山系统的重点,本文研究分析了基于OpenGL开发虚拟矿山系统的基本原理和关键技术。1三维图形对象的选择在基于OpenGL矿
3、山三维可视化的基础上,实现通过选择三维图形对象,获取图形对应的属性信息,进行空间查询和分析。根据虚拟矿山系统的需求分析,需要完成以下功能:在三维显示图形上,煤层或地表上任一点的三维坐标的获取,应力云图上任一点的应力值的获取,使用鼠标点击巷道、工作面、设备等三维模型,可以获得其对应的属性信息。关键是解决在已经渲染至窗口的三维场景中,使用鼠标选择三维对象的问题。OpenGL提供了选择与反馈机制来满足用户使用鼠标交互操作三维图形的需要。选择与反馈机制有许多缺陷,难以满足虚拟矿山系统中选择三维对象的要求,因此采用改进的Open
4、Gl选择算法,其主要思想如下:6在OpenGL中,视野的边界所围成的几何体是一个标准的平截头体(Frustum),视锥的锥顶就是视点,如图1所示,远裁剪面ABCD和近裁剪面A1B1C1D1构成了平截头体,加上虚线部分就是视锥,顶点O就是摄像机所在的视点。我们点击屏幕上的某一点,也就确定了屏幕上从O点出发的射线OP,点P在远裁剪面ABCD,我们称OP选择射线,反映到视锥中,就是选中了所有的从点P到点P1的点,点P1在近裁剪面A1B1C1D1上。因此根据窗口的XY坐标,只能获得一条出发自O点的选择射线,并不能得到用户想要的
5、点在这条射线上的确切位置。只有通过Z坐标,才能确定选择的点在射线上的位置。假如用户点击了屏幕上的点(200,200),通过OpenGL相关的方法可求得P、P1点,即可得到射线OP,然后遍历场景中的所有三维对象(场景中三维对象的管理采用了八叉树数据结构,提高了遍历速度),与射线OP求交点,如果找到一个相交的三维对象,就表示此三维对象是要选中的对象,选中点为交点,如果找到多个相交的三维对象,比较交点的z坐标,即可确定与视点的远近,选择符合条件的作为选择的对象,例如,选离视点最近的三维对象作为选择的对象。2巷道三维渲染2.1
6、巷道属性表达6在构建了巷道的三维模型之后,为了使巷道的漫游更真实,还需考虑煤矿巷道的具有多种空间形态和功能,即有不同的属性。常见的巷道断面形状主要有直壁拱形、梯形、矩形等。采用统一的数据结构和算法对直壁拱形、梯形、矩形断面进行建模,这三种断面都统一看作是多边形,这样就简化了断面的建模。巷道具有多种功能,例如采煤巷道、运输巷道、储水巷道(水仓)等,有时一条巷道有多种用途,也就具有多重功能[3]。使用OpenGL三维可视化技术,可以使用纹理、颜色、光照等可视化表达属性来显示巷道,将可视化表达属性与巷道的功能、支护方式等巷道
7、属性关联起来。例如,可使用纹理来表达锚网支护和U型钢支护的不同外观。2.2巷道纹理映射在巷道的三维显示中,使用纹理映射技术,使巷道的显示更有真实感,并能表示出巷道的属性,例如要模拟巷道的混凝土内壁表面,首先,做好混凝土位图,然后通过纹理映射覆盖到巷道的内壁表面,这样巷道内壁就变成了混凝土材质;例如要模拟巷道的锚网支护,可以将锚网照片做成位图,使用纹理映射就可以将其覆盖到巷道的内壁表面,这样就可以比较真实地模拟锚网支护的场景。概括地说,使用纹理映射的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式,定义纹理坐标等。下
8、面以使用纹理映射实现巷道内壁混凝土材质为例,说明定义纹理坐标的过程:6使用glTexCoord2f设置纹理坐标,glTexCoord2f的第一个参数是X坐标,0.0f是纹理的左侧,0.5f是纹理的中点,1.0f是纹理的右侧。glTexCoord2f的第二个参数是Y坐标,0.0f是纹理的底部。0.5f是纹理的中点,1.0f是纹理的顶
此文档下载收益归作者所有