APP下载

微震监测区域的实时仿真建模方法

2015-07-19李怀良庹先国刘瑶蒋鑫

中国测试 2015年8期
关键词:面元微震顶点

李怀良,庹先国,,刘瑶,蒋鑫

(1.西南科技大学核废物与环境安全国防重点学科实验室,四川绵阳621010;2.成都理工大学地质灾害防治与地质环境保护国家重点实验室,四川成都610059)

微震监测区域的实时仿真建模方法

李怀良1,庹先国1,2,刘瑶1,蒋鑫2

(1.西南科技大学核废物与环境安全国防重点学科实验室,四川绵阳621010;2.成都理工大学地质灾害防治与地质环境保护国家重点实验室,四川成都610059)

针对因建模的三维数据量巨大导致传统OpenGL固定管线对三维地形渲染难以满足实时性需求这一问题,提出利用GPU可编程图形管线来进行渲染,实现区域的可视化实时显示。建模过程中首先使用基于分形理论的随机中点位移法产生地形高程数据,然后利用三角面元连接地形高程散点生成三维曲面,最后通过GLSL着色语言对GPU进行编程实现对地形的渲染。该方法建模过程与OpenGL固定管线渲染效率进行对比,结果表明:利用GPU可编程图形管线对400万的三维地形网格数据进行渲染仅用时82.92ms,效率远高于OpenGL固定管线的渲染,能够满足实时渲染的需要。

GPU;GLSL;三维地形;微震;实时渲染

0 引言

微地震监测是近几十年发展起来的对煤层顶板岩石破裂情况进行监测的新技术。它可量测长壁开采过程中应力变化所导致的围岩破裂的空间展布形态与动态变化特征。对监测区域建立高准确度的三维地质模型,并运用此模型进行微震监测,快速定位发生的微震事件,是评价监测区域稳定性的一个重要指标。如何快速地生成具有高度真实感的三维地形便成为一个富有挑战性的研究课题[1],而三维地形的生成和渲染技术作为其核心技术更是研究中的重点。

目前,国内外对于三维地形生成算法的研究取得了不俗的成果,总结起来,大体有如下3种方法:1)基于真实地形数据(如数字地面模型DTM和数字高程模型DEM)来生成地形[2];2)基于曲面拟合来生成地形[3];3)基于分形理论使用中点位移等方法进行迭代插值来生成地形[4-5]。相对而言,对于三维地形渲染方面的研究则较少,大多是采用传统的固定渲染管线对地形数据进行渲染,这种方法只能依赖于图形函数库所提供的特性,无法更改机器内部的操作顺序,当显示数据量过大时往往会在CPU与GPU间传递数据而耗费大量时间,导致迟滞、卡屏等现象。

由此,本文提出采用着色器语言GLSL对GPU进行编程,实现对地形的渲染,将大量的计算过程由CPU转向GPU,能够快速完成对微震监测区域三维地形的渲染,并取得较好的视觉效果。本文首先使用基于分形理论的随机中点位移法来生成地形高程数据,然后采用着色器语言GLSL对GPU进行编程,最后以四川地区近水平薄煤层中具有代表性的某测试研究试点煤矿进行围岩监测,并比较CPU和GPU两者对三维地形的渲染效率。

1 三维地形生成及建模方法

1.1 地形生成算法

基于分形理论的三维地形生成算法可以很好的解决一般地形仿真中模型细节不充分,画面真实感不够等问题,时间复杂度低,代码简单,实现相对容易,本文采用随机中点位移法中的菱形-方形法生成三维地形数据,下面阐述其算法过程[6]。

1)菱形阶段。如图1(a)所示,初始地形表面为一个正方形,然后连接正方形对角线,得到正方形中点,如图1(b)所示。O点的高度值由4个顶点高度值的平均值再加上一个随机变量得到,即:

其中,顶点hA、hB、hC、hD分别表示顶点A、B、C、D的高度值,ro为随机变量,本文选取高斯分布随机数,计算公式如下:

图1 菱形-方形法示意图

式中:scale——比例系数;

i——递归次数;

H——地形特征参数;

gauss——服从正态分布的随机数。

2)方形阶段。分别计算初始正方形4边中点的高度值,每边中点的高度值由此边上两顶点高度值的平均值加上一个随机变量(与菱形阶段的随机变量满足同分布)得到,即:

式中:W——AB中点;

X——BC中点;

Y——CD中点;

Z——AD中点;

rW、rX、rY、rZ——随机变量。

至此,已经生成了9个点的高度值,如图1(c)所示,初始正方形被细分成了4个小正方形。然后,再对每个小正方形执行上述步骤,则每个小正方形又可细分成4个更小的正方形,依次类推,便可得到迭代次数与生成的网格之间的数量关系式为

其中,n为生成的网格数,i为迭代次数,取值为大于1的正整数,迭代次数的确定取决于期望得到地形细节复杂程度,迭代次数越大,生成的地形细节越丰富,计算量也相应增加。

1.2 地形建模方法

按照上述算法生成的三维地形数据为包含x,y,z信息的一系列散点,OpenGL提供了一种高效的三角形组织形式可以将这些散点连接成为面元,最终生成的三维地形曲面即由这些面元构成。三角形面元的连接方法[7-8]描述如下:

设Vi(i=0,1,2,…,n)表示第i个顶点,n为顶点总数,第1个三角形面元由V0→V1→V23个顶点依次连接,当i≥3的顶点,每1个顶点数据则与其前两个数据构成第i-1个三角形面元,当i为奇数时,构建三角形面元的连接顺序为Vi-1→Vi-2→Vi;当i为偶数时,构建三角形面元的连接顺序为Vi-2→Vi-1→Vi,通过如此连接,可以保证每个三角形面元的法线向量保持一致(向外或者向里),这样,当进行某些操作(如剔除掉背面不绘制)时则十分容易,可极大地提高渲染效率。下面举例说明三角形面元的连接方法,如图2所示。

图2 三角形面元连接示意图

图中共有6个顶点进行连接,第1步依次连接前3个顶点V0→V1→V2,构建第1个三角形面元,当连接V3顶点时,利用其之前的两个顶点V1和V2构建第2个三角形面元,连接顺序为V2→V1→V3,从图中可以看出,构建的4个三角面元的法线方向都向外,绘制时可以据此剔除背面不进行绘制,节省绘制时间。

2 三维地形渲染

2.1 OpenGL固定渲染管线

可以把OpenGL操作看成是两台机器,其中一台对顶点进行处理,另一台对片断进行处理。机器的前面具有拔号盘和开关,可以通过切换开关和拔号来控制机器的操作,但是机器的内部操作是“固定”的,也就是说,无法更改机器内部的操作顺序,并且只能利用机器提供的特性,OpenGL的这种操作模式常常又称为“固定功能的管线”[9],其操作顺序如图3所示。

几何数据(顶点、线段和多边形)沿着一条路径,先进行求值即根据几何形状建模,建立起物体的数学描述,然后根据物体在三维空间中的放置位置以及观察的位置和方向对每个顶点数据进行操作;同时,像素数据(像素、图像、位图)沿着另一条路径进行处理,然后在光栅化阶段,将物体的几何描述和它们相关的信息(主要是颜色、纹理等)转换为片断,而每个片断方块对应于帧缓冲区中的一个像素,最后将帧缓冲区中的图形显示到屏幕上。

图3 OpenGL固定渲染管线

2.2 GPU可编程图形管线

GPU可编程图形管线的出现和高级着色语言的不断发展,使得人们可以通过着色器对GPU进行编程,着色器包含顶点着色器与像素着色器两种,图4和图5分别展示了OpenGL固定管线中的顶点处理过程和像素处理过程,其中方框阴影部分的功能可以分别由顶点着色器和片断着色器来代替,从而可使CPU从固定管线中的大量向量计算中解放出来,交由GPU完成,这不仅提高了渲染的速度,同时渲染图像的质量也显著提高。

2.3 GLSL着色器创建流程

图4 顶点处理管线

目前,对GPU编程的着色器语言主要有3种:1)微软公司的基于Direct3D的HLSL语言;2)NVIDIA公司推出的Cg(C for Graphic)着色器语言;3)基于OpenGL的GLSL。本文采用GLSL对GPU进行编程,图6显示了创建GLSL着色器对象并把它们链接起来创建可执行着色器程序所需要的步骤[10]。

图5 片断处理管线

图6 着色器创建流程

在应用程序中使用顶点或片断着色器,需要按照顺序执行下面的步骤:

1)创建一个着色器对象;

2)把着色器源代参与编译为目标代码;

3)验证这个着色器已成功通过编译;

然后,为了把多个着色器对象链接到一个着色器程序中,需要执行下面的步骤:

4)创建一个着色器程序;

5)把适当的着色器对象链接到这个着色器程序中;

6)链接着色器程序;

7)验证着色器链接阶段已经成功完成;

8)使用着色器进行顶点或片断处理。

3 实验结果

为了测试采用GPU可编程图形管线对微震监测区域的渲染效率,本文以四川地区近水平薄煤层中具有代表性的某测试研究试点煤矿进行围岩监测。首先从谷歌地图中导出监测区域的三维地形数据,包括坐标和20×20的高程数据,如图7所示。

图7 监测区域示意图

3.1 仿真测试

使用随机中点位移法对谷歌地图的高程数据进行建模,生成大数据量的地形数据,监测区域高程地形的仿真结果如图8所示。

图8 区域等高线及微震事件监测图

图8中,不同颜色的球体代表微震事件的震级大小,范围从里氏震级-3.0~1.5,四面体代表检波器。微震事件的聚集区域发生了塌方事件,是由于岩体多次、长时间的破坏累积导致。通过GPU渲染的实际三维地形图和网格图如图9所示。

图9 监测区域地形仿真图

图10 监测区域地形网格图

3.2 对比测试

本文在不同网格数情况下对监测区域图像的渲染时间与OpenGL传统渲染管线所耗时间进行了对比。进行实验的硬件环境为:处理器为Intel(R)Core(TM)i5-3470 CPU@3.2GHz,内存为3.47GB,显卡为NVIDIA GeForce GT 620;软件环境为:QT/C++,GLSL,OpenGL。

表1为不同网格数量时两者所费时间的统计表,从表中数据不难发现,在相同网格数量情况下,使用GPU可编程图形管线(GLSL)渲染效率高于OpenGL传统渲染管线,特别当所需渲染的网格数量超过百万时,差异更加明显。

根据表1中数据作出二者的渲染时间对比图如图11所示,可以发现传统渲染管线的渲染时间随着网格数量级的增加近似于几何增长,而可编程图形管线的渲染时间随网格数量级增加则近似于线性增长,由此可见,后者耗时随地形网格数量级的增长速度同样小于前者耗时的增长速度,因此,GPU可编程图形管线的渲染效率较高。

图11 帧渲染时间对比图

4 结束语

本文首先使用Google Earth获取监测区域的高程数据,再基于分形理论的随机中点位移法扩展地形数据,利用连接三角形面元的方法进行建模生成三维地形曲面,最后提出采用着色器语言GLSL对GPU进行编程实现对三维地形的渲染。实践表明,对于三维地形的渲染,相比于OpenGL固定渲染管线,GPU可编程图形管线的渲染效率更高,能够满足实时渲染的需要,这对于微震数据或其他大量数据的可视化研究具有一定的参考意义。

[1]韩飞.面向虚拟环境的三维地形生成方法[J].计算机工程,2010,36(19):261-265.

[2]刘欢,朱红秀,李宏远,等.管道漏磁检测数据三维显示方法研究[J].中国测试,2015,41(2):84-87.

[3]刘海洋.三维地形生成的关键技术研究[D].哈尔滨:哈尔滨工程大学,2012.

[4]芮小平,张彦敏,杨崇俊.基于Perlin噪声函数的三维地形可视化研究[J].测绘通报,2003(7):16-18.

[5]周炜,董福安,吉楠.基于分形和高度图控制的三维地形生成技术研究[J].电光与控制,2007,14(4):66-69.

[6]刘操,汪俊,吴章文,等.基于图形处理器的射线追踪数字重建影像方法[J].中国测试,2012,38(2):81-84.

[7]孙鹤.基于分形理论的海底三维地形生成技术研究[D].哈尔滨:哈尔滨工程大学,2011.

[8]Chaturvedi A K,Piegl L A.Procedural method for terrain surface interpolation[J].Computers&Graphics,1996,20(4):541-566.

[9]李广鑫,吴自力,丁振国,等.一种面向虚拟环境的真实感地形生成算法[J].西安电子科技大学学报,2004,31(5):728-731.

[10]Shreiner D.OpenGL programming guide seventh edition[M]. Boston:Addison-Wesley,1999:668-674.

A method for realtime simulation modeling in m icroseism ic monitoring area

LI Huailiang1,TUO Xianguo1,2,LIU Yao1,JIANG Xin2
(1.Key Subject Lab of National Defense for Nuclear Waste and Environmental Safety,Southwest University of Science and Technology,Mianyang 621010,China;2.State Key Laboratory of Geohazard Prevention and Geoenvironment Protection,Chengdu University of Technology,Chengdu 610059,China)

Simulation modeling in micro-seismic monitoring areas is crucial for evaluating microseismic events.Because of the huge amount of 3D data for modeling,the traditional OpenGL fixed pipeline can not be applied to render 3D terrains in real time.A GPU programmable graphics pipeline capable of displaying visual areas in real time was proposed in this paper accordingly. First,the random midpoint displacement method was applied on the basis of fractal theory to produce terrain elevation data.Second,a 3D surface was formed by connecting triangle face-units with the scattered terrain elevation points.Next,the terrain was rendered by the GPU with a GLSL shading language.Compared with the rendering efficiency of the traditional OpenGL fixed pipeline,the new method is more efficient,for it takes only 82.92 ms to render 4-million terrain meshes.

GPU;GLSL;3D Terrain;microseismic;real-time rendering

A文章编号:1674-5124(2015)08-0083-05

10.11857/j.issn.1674-5124.2015.08.020

2015-03-02;

2015-04-27

国家重大科研仪器设备研制专项(41227802);四川省科技支撑计划项目(2014GZ0184);西南科技大学科研基金项目(13zx7135,15yyhk14)

李怀良(1985-),男,讲师,主要从事信号检测与数字信号处理方面的研究。

猜你喜欢

面元微震顶点
基于微震监测的煤岩破坏与瓦斯涌出关系研究
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
浅谈KJ768煤矿微震监测系统的应用
长平煤业5302 综放工作面顶板岩层移动规律研究
超电大尺寸海面电磁散射计算的混合面元法研究
基于波形特征的露天钼矿微震事件的识别分析——以卓资山钼矿为例
一种精确计算破片对空中目标命中点参数的算法*
基于改进Gordon方程的RCS快速算法
与黑体有关的三个术语