当前位置: 首页 > 专利查询>武汉大学专利>正文

一种基于GPGPU的天然气泄漏扩散的动态可视化方法技术

技术编号:16081047 阅读:62 留言:0更新日期:2017-08-25 16:03
本发明专利技术提供一种基于GPGPU的天然气泄漏扩散的动态可视化方法,由CPU进行泄露扩散范围的顶点阵列生成处理,当CPU将t时刻泄露扩散范围的顶点阵列载入PBO后,针对下一扩散时刻执行顶点阵列生成处理并载入另一个PBO时,由GPU将顶点阵列从PBO传输到三维纹理对象并绘制处理,将浓度值体数据和顶点光照透射率体数据通过GPGPU计算写入三维纹理,通过采样三维纹理完成屏幕像素点颜色值计算,实现了天然气泄漏扩散条件下扩散浓度数据生成和基于球面的动态可视化一体化。本发明专利技术使用多尺度采样策略优化了纹理映射效率,利用CPU和GPU异步处理的特性提高了动态渲染性能,展示了天然气泄漏扩散过程中浓度分布的全貌和细节。

【技术实现步骤摘要】
一种基于GPGPU的天然气泄漏扩散的动态可视化方法
本专利技术涉及GPGPU和三维地理信息可视化
,特别是涉及一种针对天然气泄漏扩散条件下的扩散浓度数据生成和基于球面的动态可视化一体化的方法。
技术介绍
天然气的泄露扩散事故危及国家能源的运输安全,往往带来不可估量的经济损失和人员伤亡。及时准确地预测天然气泄漏扩散后的浓度分布范围,对于事故后的应急决策十分必要。对于天然气泄露扩散范围的可视化表达,有关文献提出的常用方法是结合GIS和大气扩散模型,张斌才,赵军.大气污染扩散的高斯烟羽模型及其GIS集成研究[J].环境监测管理与技术,2008,05:17-19+55;欧阳坤.基于三维和时态GIS的大气污染扩散模拟系统研究与实现[D].清华大学,2011;郑茂辉,金敏,郭飞.GIS支持下的街区毒气扩散过程建模与模拟[J].武汉大学学报(信息科学版),2013,08:935-939;简洪登,范湘涛,王金鑫.地铁站点有害气体扩散三维可视化研究[J].测绘科学,2013,01:136-138+141。在结合GIS和大气扩散模型来表达天然气泄漏扩散范围时,许多研究侧重于泄漏扩散范围在二维地图上的可视化;泄漏扩散范围在三维空间的扩散模拟主要是基于MarchingCubes算法绘制浓度等值面的三维可视化,存在的问题在于:(1)浓度等值面只能表示数据中部分等值面的结构和空间关系,不能反映天然气泄漏扩散过程中浓度分布的全貌和细节;(2)对于大规模的浓度数据,浓度等值点的确定和浓度等值面的构建影响了渲染效率,因此常常是将浓度等值点数据的生成作为预处理过程,难以实现浓度数据生成和可视化的一体化。体绘制技术是科学可视化技术的一种,能够产生三维体数据的整体图像,包括体内的有用细节。因此,体绘制技术能够解决上述第一个问题。有关文献结合体绘制技术实现了三维数据场的可视化。侯美华,吴志红,陈楷民.基于OSG的实时烟雾模拟的研究与应用[J].计算机工程与设计,2011,06:2088-2091;胡自和,刘坡,龚建华,王群.基于虚拟地球的台风多维动态可视化系统的设计与实现[J].武汉大学学报(信息科学版),2015,10:1299-1305。文献中用于体绘制的三维数据场均为可以直接使用的规则体数据,不涉及体数据的生成过程。目前体绘制技术还没有应用到天然气泄露扩散模拟方面。GPGPU是利用GPU进行的通用计算技术,经典GPGPU技术借助GPU图形流水线的大规模并行计算能力,通过纹理映射功能实现通用算法的并行计算,极大地加速了通用计算过程。GPGPU技术和体绘制技术的结合能够解决上述第二个问题,可以实现扩散浓度数据生成和动态可视化的一体化。卞燕山.三维数字化战场中的核扩散表现技术[D].国防科学技术大学,2010。文献中结合GPGPU技术和体绘制技术实现了三维数字化战场中核素的动态扩散过程。该方法的不足之处在于将GPGPU计算得到核素扩散体数据和基于核素扩散体数据实现体绘制分裂为了两个过程,没有实现体数据生成和动态可视化的一体化。在使用GPGPU计算得到核素扩散体数据时没有考虑三维球面的影响,并且使用固定的三维扩散范围,难以完整地展示动态过程中不同时刻扩散范围的全貌。相关术语:GPGPU通用计算图形处理器GIS地理信息系统GPU图形处理器CPU中央处理器OpenGL开放图形库,是行业领域中最为广泛接纳的2D/3D图形APIPBO像素缓冲区对象FBO帧缓冲区对象
技术实现思路
本专利技术的目的是针对现有的对于天然气泄漏扩散范围的三维动态可视化的不足,提出一种针对天然气泄漏扩散条件下的基于GPGPU和体绘制的扩散浓度数据生成和基于球面的动态可视化一体化的方法。本专利技术的技术方案提供一种基于GPGPU的天然气泄漏扩散的动态可视化方法,包括以下过程,首先,初始化绘制环境,使用OpenGL创建两个PBO和一个FBO,创建三维纹理对象和二维纹理对象用于存储GPGPU的计算结果,定义扩散坐标系和体素坐标系,初始化视点、光源在WGS84坐标系中的位置;设当前的扩散时刻为t,先基于CPU进行以下泄露扩散范围的顶点阵列生成处理,步骤a1,由CPU在扩散坐标系中,计算扩散时刻t时天然气分别在x轴、y轴、z轴的扩散距离Rx、Ry、Rz和扩散范围在x轴的最小值Minx;步骤a2,由CPU在扩散坐标系中,将扩散范围内的采样距离与三维场景的LOD级别相关联,在当前三维场景的LOD级别下以deltaX、deltaY、deltaZ的距离分别在x轴、y轴、z轴方向采样,生成t时刻泄露扩散范围的顶点阵列,并重新调整Rx、Ry、Rz,使得x轴、y轴、z轴方向的采样点个数均为2的整次幂;将扩散坐标系中泄漏扩散范围的体包围盒转换到WGS84坐标系,继而转换到世界坐标系中,得到世界坐标系中泄漏扩散范围的体包围盒;由两个平行平面与世界坐标系中泄漏扩散范围的体包围盒构建扩大之后的新的体包围盒,其中一个平面经过((Rx+Minx)/2,0,Rz)在世界坐标系中的对应点,另一个平面经过世界坐标系中泄漏扩散范围体包围盒底面的四个顶点;步骤a3,由CPU将t时刻泄露扩散范围的顶点阵列载入一个空闲的PBO,令t=t+deltaT,deltaT为时间间隔,针对下一个当前的扩散时刻返回步骤a1,执行步骤a1‐a3,将新的扩散时刻t泄露扩散范围的顶点阵列载入另一个PBO;当CPU将t时刻泄露扩散范围的顶点阵列载入PBO后,针对下一扩散时刻执行步骤a1‐a3时,由GPU将顶点阵列从PBO传输到与顶点阵列大小相同的三维纹理对象,并完成以下绘制处理,绘制两个长方体,将浓度值体数据和顶点光照透射率体数据通过纹理映射的方式在片段着色器中实现GPGPU计算,把计算结果渲染并输出到FBO,则浓度值体数据和顶点光照透射率体数据分别作为三维纹理被写入纹理缓存;绘制一个矩形,将屏幕点颜色值数据通过纹理映射的方式,结合对浓度值体数据三维纹理和顶点光照透射率体数据三维纹理的采样,在片段着色器中实现GPGPU计算,计算结果写入二维纹理并直接渲染到屏幕,实现了扩散浓度数据生成和可视化的一体化。而且,步骤1中,对于扩散坐标系和体素坐标系的定义如下,扩散坐标系定义为以泄漏源p0在地面的投影点为原点,以下风向方向为x轴,以地面上垂直于x轴方向为y轴,以垂直于地面竖直向上方向为z轴;在扩散坐标系中,扩散范围由长方体包围盒(Minx,‐Ry,0)、(Rx,‐Ry,0)、(Rx,Ry,0)、(Minx,Ry,0)、(Minx,‐Ry,Rz)、(Rx,‐Ry,Rz)、(Rx,Ry,Rz)、(Minx,Ry,Rz)确定,Rx、Ry、Rz分别为x轴、y轴、z轴的最大扩散距离,Minx为扩散范围在x轴的最小值;体素坐标系定义为以扩散坐标系中(Minx,‐Ry,0)为原点,x轴、y轴、z轴方向均与扩散坐标系相同;在体素坐标系中,扩散范围由长方体包围盒(0,0,0)、(M‐1,0,0)、(M‐1,N‐1,0)、(0,N‐1,0)、(0,0,L‐1)、(M‐1,0,L‐1)、(M‐1,N‐1,L‐1)、(0,N‐1,L‐1)确定,M‐1、N‐1、L‐1分别为x轴、y轴、z轴的最大扩散距离,M、N、L分别表示x轴、y轴、z轴的采样点个数。而且,步骤a1中,扩散本文档来自技高网
...
一种基于GPGPU的天然气泄漏扩散的动态可视化方法

【技术保护点】
一种基于GPGPU的天然气泄漏扩散的动态可视化方法,其特征在于:包括以下过程,首先,初始化绘制环境,使用OpenGL创建两个PBO和一个FBO,创建三维纹理对象和二维纹理对象用于存储GPGPU的计算结果,定义扩散坐标系和体素坐标系,初始化视点、光源在WGS84坐标系中的位置;设当前的扩散时刻为t,先基于CPU进行以下泄露扩散范围的顶点阵列生成处理,步骤a1,由CPU在扩散坐标系中,计算扩散时刻t时天然气分别在x轴、y轴、z轴的扩散距离Rx、Ry、Rz和扩散范围在x轴的最小值Minx;步骤a2,由CPU在扩散坐标系中,将扩散范围内的采样距离与三维场景的LOD级别相关联,在当前三维场景的LOD级别下以deltaX、deltaY、deltaZ的距离分别在x轴、y轴、z轴方向采样,生成t时刻泄露扩散范围的顶点阵列,并重新调整Rx、Ry、Rz,使得x轴、y轴、z轴方向的采样点个数均为2的整次幂;将扩散坐标系中泄漏扩散范围的体包围盒转换到WGS84坐标系,继而转换到世界坐标系中,得到世界坐标系中泄漏扩散范围的体包围盒;由两个平行平面与世界坐标系中泄漏扩散范围的体包围盒构建扩大之后的新的体包围盒,其中一个平面经过((Rx+Minx)/2,0,Rz)在世界坐标系中的对应点,另一个平面经过世界坐标系中泄漏扩散范围体包围盒底面的四个顶点;步骤a3,由CPU将t时刻泄露扩散范围的顶点阵列载入一个空闲的PBO,令t=t+deltaT,deltaT为时间间隔,针对下一个当前的扩散时刻返回步骤a1,执行步骤a1‑a3,将新的扩散时刻t泄露扩散范围的顶点阵列载入另一个PBO;当CPU将t时刻泄露扩散范围的顶点阵列载入PBO后,针对下一扩散时刻执行步骤a1‑a3时,由GPU将顶点阵列从PBO传输到与顶点阵列大小相同的三维纹理对象,并完成以下绘制处理,绘制两个长方体,将浓度值体数据和顶点光照透射率体数据通过纹理映射的方式在片段着色器中实现GPGPU计算,把计算结果渲染并输出到FBO,则浓度值体数据和顶点光照透射率体数据分别作为三维纹理被写入纹理缓存;绘制一个矩形,将屏幕点颜色值数据通过纹理映射的方式,结合对浓度值体数据三维纹理和顶点光照透射率体数据三维纹理的采样,在片段着色器中实现GPGPU计算,计算结果写入二维纹理并直接渲染到屏幕,实现了扩散浓度数据生成和可视化的一体化。...

【技术特征摘要】
1.一种基于GPGPU的天然气泄漏扩散的动态可视化方法,其特征在于:包括以下过程,首先,初始化绘制环境,使用OpenGL创建两个PBO和一个FBO,创建三维纹理对象和二维纹理对象用于存储GPGPU的计算结果,定义扩散坐标系和体素坐标系,初始化视点、光源在WGS84坐标系中的位置;设当前的扩散时刻为t,先基于CPU进行以下泄露扩散范围的顶点阵列生成处理,步骤a1,由CPU在扩散坐标系中,计算扩散时刻t时天然气分别在x轴、y轴、z轴的扩散距离Rx、Ry、Rz和扩散范围在x轴的最小值Minx;步骤a2,由CPU在扩散坐标系中,将扩散范围内的采样距离与三维场景的LOD级别相关联,在当前三维场景的LOD级别下以deltaX、deltaY、deltaZ的距离分别在x轴、y轴、z轴方向采样,生成t时刻泄露扩散范围的顶点阵列,并重新调整Rx、Ry、Rz,使得x轴、y轴、z轴方向的采样点个数均为2的整次幂;将扩散坐标系中泄漏扩散范围的体包围盒转换到WGS84坐标系,继而转换到世界坐标系中,得到世界坐标系中泄漏扩散范围的体包围盒;由两个平行平面与世界坐标系中泄漏扩散范围的体包围盒构建扩大之后的新的体包围盒,其中一个平面经过((Rx+Minx)/2,0,Rz)在世界坐标系中的对应点,另一个平面经过世界坐标系中泄漏扩散范围体包围盒底面的四个顶点;步骤a3,由CPU将t时刻泄露扩散范围的顶点阵列载入一个空闲的PBO,令t=t+deltaT,deltaT为时间间隔,针对下一个当前的扩散时刻返回步骤a1,执行步骤a1-a3,将新的扩散时刻t泄露扩散范围的顶点阵列载入另一个PBO;当CPU将t时刻泄露扩散范围的顶点阵列载入PBO后,针对下一扩散时刻执行步骤a1-a3时,由GPU将顶点阵列从PBO传输到与顶点阵列大小相同的三维纹理对象,并完成以下绘制处理,绘制两个长方体,将浓度值体数据和顶点光照透射率体数据通过纹理映射的方式在片段着色器中实现GPGPU计算,把计算结果渲染并输出到FBO,则浓度值体数据和顶点光照透射率体数据分别作为三维纹理被写入纹理缓存;绘制一个矩形,将屏幕点颜色值数据通过纹理映射的方式,结合对浓度值体数据三维纹理和顶点光照透射率体数据三维纹理的采样,在片段着色器中实现GPGPU计算,计算结果写入二维纹理并直接渲染到屏幕,实现了扩散浓度数据生成和可视化的一体化。2.如权利要求1所述一种基于GPGPU的天然气泄漏扩散的动态可视化方法,其特征在于:步骤1中,对于扩散坐标系和体素坐标系的定义如下,扩散坐标系定义为以泄漏源p0在地面的投影点为原点,以下风向方向为x轴,以地面上垂直于x轴方向为y轴,以垂直于地面竖直向上方向为z轴;在扩散坐标系中,扩散范围由长方体包围盒(Minx,-Ry,0)、(Rx,-Ry,0)、(Rx,Ry,0)、(Minx,Ry,0)、(Minx,-Ry,Rz)、(Rx,-Ry,Rz)、(Rx,Ry,Rz)、(Minx,Ry,Rz)确定,Rx、Ry、Rz分别为x轴、y轴、z轴的最大扩散距离,Minx为扩散范围在x轴的最小值;体素坐标系定义为以扩散坐标系中(Minx,-Ry,0)为原点,x轴、y轴、z轴方向均与扩散坐标系相同;在体素坐标系中,扩散范围由长方体包围盒(0,0,0)、(M-1,0,0)、(M-1,N-1,0)、(0,N-1,0)、(0,0,L-1)、(M-1,0,L-1)、(M-1,N-1,L-1)、(0,N-1,L-1)确定,M-1、N-1、L-1分别为x轴、y轴、z轴的最大扩散距离,M、N、L分别表示x轴、y轴、z轴的采样点个数。3.如权利要求2所述一种基于GPGPU的天然气泄漏扩散的动态可视化方法,其特征在于:步骤a1中,扩散坐标系中x轴、y轴、z轴的扩散距离Rx、Ry、Rz、Minx的计算方法如下,(1)计算Minx的方法为,当t<T时,令Minx=0,保存Minx值;当t≥T时,①初始化Minx=x0,x0为预设初始值,计算(Minx,0,H)处的浓度值c;②若c<c0,则令Minx=Minx+delta,delta为预设步长,重新计算(Minx,0,H)处的浓度值c,直到c≥c0,进入③;若c≥c0,则直接进入③;③若c≥c0,则令Minx=Minx-1,重新计算(Minx,0,H)处的浓度值c,直到c<c0,保存Minx值;(2)计算Rx的方法为,①初始化Rx=Minx+x0,x0为预设初始值,计算(Rx,0,H)处的浓度值c;②若c≥c0,则令Rx=Rx+delta,delta为预设步长,重新计算(Rx,0,H)处的浓度值c,直到c<c0,进入③;若c<c0,则直接进入③;③若c<c0,则令Rx=Rx-1,重新计算(Rx,0,H)处的浓度值c,直到c≥c0,保存Rx值;(3)计算Ry的方法为,①初始化Ry=0,Temp_x=Rx,center_x=0;Temp_x为临时存储x值的变量,center_x为Ry处对应的x值;②计算...

【专利技术属性】
技术研发人员:程若桢陈静
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1