基于OpenGL的虚拟矿山系统的研究

时间:2022-09-13 12:49:08

基于OpenGL的虚拟矿山系统的研究

摘 要:利用计算机虚拟现实技术实现矿井三维可视化是虚拟矿山系统的重点,分析了基于OpenGL开发虚拟矿山系统的基本原理和关键技术,通过改进的OpenGL选择算法,实现了选择三维图形对象,获取属性信息和进行空间查询分析,使用OpenGL纹理映射技术,使巷道的显示更有真实感,对矿山设备分类建立了三维模型,基于此技术研究,构建了一个小型的虚拟矿山系统。

关键词:OpenGL;虚拟矿山;纹理映射;选择

中图分类号:TP311.1

虚拟现实技术是指利用人工智能、计算机图形学、人机接口、多媒体、计算机网络及电子、机械、视听等高新技术,模拟人在特定环境中的视、听、动等行为的高级人机交互技术[1]。

OpenGL是由SGI公司推出的独立于操作系统和硬件环境的开放式三维图形库,作为一种用于实时3D图形的工业标准,已经得到广泛的认可和接受。OpenGL具有强大的图形功能和良好的跨平台移植能力,目前已被广泛应用于可视化技术、实体造型、模拟仿真等诸多领域[2]。

利用计算机虚拟现实技术实现矿井三维可视化是虚拟矿山系统的重点,本文研究分析了基于OpenGL开发虚拟矿山系统的基本原理和关键技术。

1 三维图形对象的选择

在基于OpenGL矿山三维可视化的基础上,实现通过选择三维图形对象,获取图形对应的属性信息,进行空间查询和分析。

根据虚拟矿山系统的需求分析,需要完成以下功能:在三维显示图形上,煤层或地表上任一点的三维坐标的获取,应力云图上任一点的应力值的获取,使用鼠标点击巷道、工作面、设备等三维模型,可以获得其对应的属性信息。关键是解决在已经渲染至窗口的三维场景中,使用鼠标选择三维对象的问题。

OpenGL提供了选择与反馈机制来满足用户使用鼠标交互操作三维图形的需要。选择与反馈机制有许多缺陷,难以满足虚拟矿山系统中选择三维对象的要求,因此采用改进的OpenGl选择算法,其主要思想如下:

在OpenGL中,视野的边界所围成的几何体是一个标准的平截头体(Frustum),视锥的锥顶就是视点,如图1所示,远裁剪面ABCD和近裁剪面A1B1C1D1构成了平截头体,加上虚线部分就是视锥,顶点O就是摄像机所在的视点。我们点击屏幕上的某一点,也就确定了屏幕上从O点出发的射线OP,点P在远裁剪面ABCD,我们称OP选择射线,反映到视锥中,就是选中了所有的从点P到点P1的点,点P1在近裁剪面A1B1C1D1上。

因此根据窗口的XY坐标,只能获得一条出发自O点的选择射线,并不能得到用户想要的点在这条射线上的确切位置。只有通过Z坐标,才能确定选择的点在射线上的位置。假如用户点击了屏幕上的点(200,200),通过OpenGL相关的方法可求得P、P1点,即可得到射线OP,然后遍历场景中的所有三维对象(场景中三维对象的管理采用了八叉树数据结构,提高了遍历速度),与射线OP求交点,如果找到一个相交的三维对象,就表示此三维对象是要选中的对象,选中点为交点,如果找到多个相交的三维对象,比较交点的z坐标,即可确定与视点的远近,选择符合条件的作为选择的对象,例如,选离视点最近的三维对象作为选择的对象。

2 巷道三维渲染

2.1 巷道属性表达

在构建了巷道的三维模型之后,为了使巷道的漫游更真实,还需考虑煤矿巷道的具有多种空间形态和功能,即有不同的属性。常见的巷道断面形状主要有直壁拱形、梯形、矩形等。采用统一的数据结构和算法对直壁拱形、梯形、矩形断面进行建模,这三种断面都统一看作是多边形,这样就简化了断面的建模。巷道具有多种功能,例如采煤巷道、运输巷道、储水巷道(水仓)等,有时一条巷道有多种用途,也就具有多重功能[3]。使用OpenGL三维可视化技术,可以使用纹理、颜色、光照等可视化表达属性来显示巷道,将可视化表达属性与巷道的功能、支护方式等巷道属性关联起来。例如,可使用纹理来表达锚网支护和U型钢支护的不同外观。

2.2 巷道纹理映射

在巷道的三维显示中,使用纹理映射技术,使巷道的显示更有真实感,并能表示出巷道的属性,例如要模拟巷道的混凝土内壁表面,首先,做好混凝土位图,然后通过纹理映射覆盖到巷道的内壁表面,这样巷道内壁就变成了混凝土材质;例如要模拟巷道的锚网支护,可以将锚网照片做成位图,使用纹理映射就可以将其覆盖到巷道的内壁表面,这样就可以比较真实地模拟锚网支护的场景。

概括地说,使用纹理映射的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式,定义纹理坐标等。下面以使用纹理映射实现巷道内壁混凝土材质为例,说明定义纹理坐标的过程:

使用glTexCoord2f设置纹理坐标,glTexCoord2f的第一个参数是X坐标,0.0f是纹理的左侧,0.5f是纹理的中点,1.0f是纹理的右侧。glTexCoord2f的第二个参数是Y坐标,0.0f是纹理的底部。0.5f是纹理的中点,1.0f是纹理的顶部。一段巷道的三维模型,是由多个四边形组成,由于巷道长度较长,纹理要沿巷道重复多次才能覆盖组成巷道的四边形,纹理坐标必须根据巷道长度计算,设拱形巷道长度length,巷道侧壁高度height,巷道宽度为width,设yy=1。

巷道顶面纹理坐标计算:巷道顶面有8个四边形组成,假设巷道的长度为设置第i(i从0到7)个四边形4个顶点的纹理坐标如下:

3 矿山设备三维建模

巷道内部包含各种设备,要实现巷道内漫游,必须对这些设备进行三维建模。巷道内设包备括轨道、传送带、电缆、管道、机车、采煤机等。根据巷道内设备的位置确定和形状,可以分为两类:一种是线状物,如轨道、管道、电缆等,另一类是点状物,如机车、采煤机等。对于点状物设备,可以先使用专门的三维建模工具软件构建模型,然后加载到漫游软件中,放置到指定位置,并进行适当旋转,调整方位,对于线状设备,可以类比绘制巷道体的算法进行建模,直接使用OpenGL技术进行绘制、渲染。如图2所示,巷道中的管道、电缆都是线状物,使用OpenGL直接建立三维模型。

使用OpenGL技术,可以绘制、渲染任何一个三维模型。但对应巷道内的点状物设备,绘制十分复杂,对于这样的情况,使用OpenGL代码来创建模型显得即复杂又不直观,难以调试。因此,先使用专门的建模工具Maya创建模型,再将模型导出为特定的格式,然后在系统中载入这个模型。过程如下:

(1)使用建模工具Maya创建模型;(2)将模型输出为OBJ格式;(3)载入OBJ模型,在程序中放置到指定位置,并进行适当旋转,调整方位,渲染模型,确定模型的位置与方向是关键。

4 结束语

探讨了基于OpenGL基于开发虚拟矿山系统的基本原理和一些关键技术,如OpenGL选择算法的改进,纹理映射技术,载入Maya模型等,并基于这些技术研究,构建了一个小型的虚拟矿山系统,证明基于OpenGL开发虚拟矿山系统是可行的。

参考文献:

[1]吴立新.3维地学模拟与虚拟矿山系统[J].测绘学报,2002(31).

[2]汤彬.基于OpenGl的交互技术研究[J].上海工程技术大学学报,2006(20).

[3]王宝山,魏占营.煤矿虚拟环境的巷道3维建模研究[J].测绘学院学报,2005(22).

作者简介:董林(1971-),男,讲师,研究方向:计算机应用技术。

作者单位:山东水利职业学院,山东日照 276826

上一篇:高压变频技术在200MW机组给水泵中的应用 下一篇:企业经营管控系统建设