基于OpenGL的野外地震勘探区场区建模及漫游实现

2012-11-18 02:57云美厚
中国科技信息 2012年21期
关键词:漫游勘探建模

聂 岩 云美厚

河南理工大学资源环境学院,河南 焦作 454000

基于OpenGL的野外地震勘探区场区建模及漫游实现

聂 岩 云美厚

河南理工大学资源环境学院,河南 焦作 454000

结合野外地震勘探虚拟仿真系统开发实例,分析了利用碎片整合思想实现地震勘探区三维场景的建模问题,并深入讨论了模拟行走和仿真飞行两种不同漫游模式下的算法思想及功能实现。经测试,系统仿真效果好,交互性能高,为后期地震勘探作业流程的仿真开发工作起到了很好的铺垫。

地震勘探;OpenGL;天气仿真;虚拟漫游

引言

地震勘探技术由于高分辨率、高精度和高控制性[1]的优点而被广泛地应用于地下矿藏构造形态及储量特征的勘察工作中,全社会对地震勘探的投入及人才方面的培养也日益加大,然而,地震勘探设备由于价格昂贵、体积庞大,加之实验场地位于野外,为此,在专业人才培养方面,国内很多企业和高校都遇到了经费不足、场地难找、安全风险高等一系列问题。因此,开发一个能够模拟野外地震勘探的专业培训系统是一个亟待解决的任务。OpenGL是美国SGI公司开发的一款三维图形编程接口,目前已经成为国际上通用的开源式三维图形标准[2],它可以在多种操作系统平台中运行,用户可通过OpenGL封装的各种接口函数实现三维图形的创建、光照、纹理贴图、刚体运动模拟等功能,从而开发出顺应用户不同需求的交互式仿真程序。本文即结合系统开发实例,探讨在VC++6.0的MFC编程环境下利用OpenGL实现野外地震勘探区场区的构建及场区漫游功能的仿真技术。

1 地震勘探区三维场景建模

开发野外地震勘探仿真系统的一个首要工作就是勘探区场地模型的构建,在勘探区场地的构建环节,为了实现不同勘探地形环境下的地震勘探工作的仿真,本系统采用了平原和起伏丘陵两种不同的地形模式供用户选择。在地形算法的实现方面,本着系统代码低冗余度和高使用率的原则,系采用碎片整合算法[3]思想来同时实现两种不同的地形模式,即采用以50*50为一个地形单位的地形集合算法,首先建立存储顶点坐标的结构体函数TP,分别创建用来表示结构体函数的二维数组L_view[N][M](N=M=(LAND/50)+1)和指向二维数组的结构体类型指针*tp,然后采用遍历算法记录每一次遍历到的三个点(L_view[N][M]、L_view[N][M+1]、L_view[N+1][M+1]),再利用glbegin(GL_TRIANGLE_STRIP)命令将这三个点连成一个三角形,并依照此算法以此遍历完所有的点(供N*N个点)为止,这时,整个勘探区就形成了由(N-1)*(M-1)*2个三角形碎片组成的地形模型。最后采用循环分割算法,依次将地形平均分割成四份,得到并存储连接四份均等子地形的结点,依照此方法继续分割前一次分割后得到的子地形,得到并存储这次分割后连接各个更小的四份均等子地形的结点,依次循环,直到不能再分割为止,这样,通过调整存储的结点y轴坐标,来实现平原和起伏丘陵的地形地貌特征。如图1:

图1 碎片分割算法

关键代码如下:

图2 分割算法结果(平面)

图3 丘陵地形

2 漫游功能

漫游技术是虚拟仿真技术领域的一个重要组成部分,也是仿真技术中交互性和浸没性特征的重要体现[4],它实现了对三维场景的数字化和虚拟化效果,通过与人机交互技术相结合,用户能够自由的观察和体验虚拟环境[5],产生浸没感,从而达到用户与系统的完美统一。考虑到客户的不同需求和虚拟仿真系统的交互性特征,系统开发出了行走模式和飞行器模式两种漫游功能供用户体验。

2.1 行走模式

图4 函数translatef(0.0f,6.0f,0.0f)的理论解析

OpenGL的漫游功能离不开CPU和显卡的实时计算与渲染,当用户按下鼠标或者某个键时,会向系统发送一消息,系统接收到消息后,会执行相应的事件响应,为了实现漫游功能,系统需要在用户发送消息后一直执行某个操作(比如向前行走),并等待用户发送停止前进或者其他动作的消息,而在这个过程中,系统需要将处理这一事件的程序段放入后台运行,一直到接受到下一消息时停止这个后台循环。基于这一点,VC++平台提供了一个Onidle()函数执行后台空闲消息循环的命令,用于处理缺省时的空闲消息循环,即用户的后台空闲处理命令。同时,在系统实时漫游的过程中,为了实现“行走”的效果,采用了OpenGL提供的translatef(x,y,z)接口函数,此函数相当于将当前的模型视图矩阵乘以位移矩阵后得到的新的矩阵,如图4所示。

综合以上的理论分析,只需令系统在空闲消息循环中执行矩阵位移函数translatef()即可实现行走的漫游功能。关键代码如下所示:

2.2 飞行器模式

此模式是综合分析了飞机驾驶员在地平线上飞行的仿真原理基础上开发的,飞行员在操作飞机操纵杆时,飞机会出现航道左右偏移的情况,而在飞行员开来,地平线会随着飞机航道的偏移而出现“倾斜”的情况,在仿真系统中,当操作员偏移手柄或者鼠标时,系统可根据手柄或鼠标的偏移距离按照比例计算出OpenGL模型视图矩阵的偏移角,并结合2.1所述的空闲消息循环原理,对当前偏移矩阵进行实时计算和渲染。与位移矩阵函数一样,OpenGL也提供了rotatef()接口函数对当前矩阵进行偏移处理。其原理如图5所示:

图5 函数rotatef(θ,0.0f,0.0f,1.0f)的理论解析

飞行器模式关键代码如下:

仿真效果如图6所示:

图6 飞行器仿真漫游效果图

3 结语

本文结合地震勘探仿真系统开发实例,在分析了探区地形建模算法的基础上,深入讨论了勘探区不同漫游模式下的仿真算法理论,并结合实际编程实现了各种模式下的功能。经测试,系统真实感强、交互性能好,达到了预期的效果。在接下来的仿真开发工作中,计划采用OpenGL建模和读取3Dsmax模型文件两种方法加载地震勘探设备三维模型,并结合已实现的开发模式,完成后期针对三维模型的仿真渲染和实时交互控制两大功能,从而实现对勘探区域整个地震作业流程的开发。

[1]曹思华.三维地震勘探技术在矿井地质中的应用[J].煤炭工程,2005,10.41-43

[2]陈素丽,任福深.基于OpenGL的弧焊机器人仿真设计[J].科学技术与工程,2011,3(12).543-550

[3]简斌,田竹友.基于MFC编写的OpenGL程序实现公式曲线预显[J].北京机械工业学院学报,2001,3(16).41-47

[4]Richard S.Wright,Michael Sweet,OpenGL 超级宝典[M].人民邮电出版社.2006:337-341

[5]徐敬.虚拟漫游开发技术[J].软件导刊,2007,9:106~108

TP391.9

A

10.3969/j.issn.1001-8972.2012.21.035

猜你喜欢
漫游勘探建模
油气勘探开发三年滚动计划编制的思考
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
勘探石油
基于PSS/E的风电场建模与动态分析
立秋
不对称半桥变换器的建模与仿真
霹雳漫游堂
NASA漫游记
浅析测绘在煤矿勘探中的应用
三元组辐射场的建模与仿真