国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于GPGPU的天然氣泄漏擴(kuò)散的動(dòng)態(tài)可視化方法與流程

      文檔序號(hào):11459202閱讀:734來(lái)源:國(guó)知局
      一種基于GPGPU的天然氣泄漏擴(kuò)散的動(dòng)態(tài)可視化方法與流程

      本發(fā)明涉及gpgpu和三維地理信息可視化技術(shù)領(lǐng)域,特別是涉及一種針對(duì)天然氣泄漏擴(kuò)散條件下的擴(kuò)散濃度數(shù)據(jù)生成和基于球面的動(dòng)態(tài)可視化一體化的方法。



      背景技術(shù):

      天然氣的泄露擴(kuò)散事故危及國(guó)家能源的運(yùn)輸安全,往往帶來(lái)不可估量的經(jīng)濟(jì)損失和人員傷亡。及時(shí)準(zhǔn)確地預(yù)測(cè)天然氣泄漏擴(kuò)散后的濃度分布范圍,對(duì)于事故后的應(yīng)急決策十分必要。

      對(duì)于天然氣泄露擴(kuò)散范圍的可視化表達(dá),有關(guān)文獻(xiàn)提出的常用方法是結(jié)合gis和大氣擴(kuò)散模型,張斌才,趙軍.大氣污染擴(kuò)散的高斯煙羽模型及其gis集成研究[j].環(huán)境監(jiān)測(cè)管理與技術(shù),2008,05:17-19+55;歐陽(yáng)坤.基于三維和時(shí)態(tài)gis的大氣污染擴(kuò)散模擬系統(tǒng)研究與實(shí)現(xiàn)[d].清華大學(xué),2011;鄭茂輝,金敏,郭飛.gis支持下的街區(qū)毒氣擴(kuò)散過(guò)程建模與模擬[j].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2013,08:935-939;簡(jiǎn)洪登,范湘濤,王金鑫.地鐵站點(diǎn)有害氣體擴(kuò)散三維可視化研究[j].測(cè)繪科學(xué),2013,01:136-138+141。在結(jié)合gis和大氣擴(kuò)散模型來(lái)表達(dá)天然氣泄漏擴(kuò)散范圍時(shí),許多研究側(cè)重于泄漏擴(kuò)散范圍在二維地圖上的可視化;泄漏擴(kuò)散范圍在三維空間的擴(kuò)散模擬主要是基于marchingcubes算法繪制濃度等值面的三維可視化,存在的問(wèn)題在于:(1)濃度等值面只能表示數(shù)據(jù)中部分等值面的結(jié)構(gòu)和空間關(guān)系,不能反映天然氣泄漏擴(kuò)散過(guò)程中濃度分布的全貌和細(xì)節(jié);(2)對(duì)于大規(guī)模的濃度數(shù)據(jù),濃度等值點(diǎn)的確定和濃度等值面的構(gòu)建影響了渲染效率,因此常常是將濃度等值點(diǎn)數(shù)據(jù)的生成作為預(yù)處理過(guò)程,難以實(shí)現(xiàn)濃度數(shù)據(jù)生成和可視化的一體化。

      體繪制技術(shù)是科學(xué)可視化技術(shù)的一種,能夠產(chǎn)生三維體數(shù)據(jù)的整體圖像,包括體內(nèi)的有用細(xì)節(jié)。因此,體繪制技術(shù)能夠解決上述第一個(gè)問(wèn)題。有關(guān)文獻(xiàn)結(jié)合體繪制技術(shù)實(shí)現(xiàn)了三維數(shù)據(jù)場(chǎng)的可視化。侯美華,吳志紅,陳楷民.基于osg的實(shí)時(shí)煙霧模擬的研究與應(yīng)用[j].計(jì)算機(jī)工程與設(shè)計(jì),2011,06:2088-2091;胡自和,劉坡,龔建華,王群.基于虛擬地球的臺(tái)風(fēng)多維動(dòng)態(tài)可視化系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[j].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2015,10:1299-1305。文獻(xiàn)中用于體繪制的三維數(shù)據(jù)場(chǎng)均為可以直接使用的規(guī)則體數(shù)據(jù),不涉及體數(shù)據(jù)的生成過(guò)程。目前體繪制技術(shù)還沒(méi)有應(yīng)用到天然氣泄露擴(kuò)散模擬方面。

      gpgpu是利用gpu進(jìn)行的通用計(jì)算技術(shù),經(jīng)典gpgpu技術(shù)借助gpu圖形流水線的大規(guī)模并行計(jì)算能力,通過(guò)紋理映射功能實(shí)現(xiàn)通用算法的并行計(jì)算,極大地加速了通用計(jì)算過(guò)程。gpgpu技術(shù)和體繪制技術(shù)的結(jié)合能夠解決上述第二個(gè)問(wèn)題,可以實(shí)現(xiàn)擴(kuò)散濃度數(shù)據(jù)生成和動(dòng)態(tài)可視化的一體化。卞燕山.三維數(shù)字化戰(zhàn)場(chǎng)中的核擴(kuò)散表現(xiàn)技術(shù)[d].國(guó)防科學(xué)技術(shù)大學(xué),2010。文獻(xiàn)中結(jié)合gpgpu技術(shù)和體繪制技術(shù)實(shí)現(xiàn)了三維數(shù)字化戰(zhàn)場(chǎng)中核素的動(dòng)態(tài)擴(kuò)散過(guò)程。該方法的不足之處在于將gpgpu計(jì)算得到核素?cái)U(kuò)散體數(shù)據(jù)和基于核素?cái)U(kuò)散體數(shù)據(jù)實(shí)現(xiàn)體繪制分裂為了兩個(gè)過(guò)程,沒(méi)有實(shí)現(xiàn)體數(shù)據(jù)生成和動(dòng)態(tài)可視化的一體化。在使用gpgpu計(jì)算得到核素?cái)U(kuò)散體數(shù)據(jù)時(shí)沒(méi)有考慮三維球面的影響,并且使用固定的三維擴(kuò)散范圍,難以完整地展示動(dòng)態(tài)過(guò)程中不同時(shí)刻擴(kuò)散范圍的全貌。

      相關(guān)術(shù)語(yǔ):

      gpgpu通用計(jì)算圖形處理器

      gis地理信息系統(tǒng)

      gpu圖形處理器

      cpu中央處理器

      opengl開(kāi)放圖形庫(kù),是行業(yè)領(lǐng)域中最為廣泛接納的2d/3d圖形api

      pbo像素緩沖區(qū)對(duì)象

      fbo幀緩沖區(qū)對(duì)象



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明的目的是針對(duì)現(xiàn)有的對(duì)于天然氣泄漏擴(kuò)散范圍的三維動(dòng)態(tài)可視化的不足,提出一種針對(duì)天然氣泄漏擴(kuò)散條件下的基于gpgpu和體繪制的擴(kuò)散濃度數(shù)據(jù)生成和基于球面的動(dòng)態(tài)可視化一體化的方法。

      本發(fā)明的技術(shù)方案提供一種基于gpgpu的天然氣泄漏擴(kuò)散的動(dòng)態(tài)可視化方法,包括以下過(guò)程,

      首先,初始化繪制環(huán)境,使用opengl創(chuàng)建兩個(gè)pbo和一個(gè)fbo,創(chuàng)建三維紋理對(duì)象和二維紋理對(duì)象用于存儲(chǔ)gpgpu的計(jì)算結(jié)果,定義擴(kuò)散坐標(biāo)系和體素坐標(biāo)系,初始化視點(diǎn)、光源在wgs84坐標(biāo)系中的位置;

      設(shè)當(dāng)前的擴(kuò)散時(shí)刻為t,先基于cpu進(jìn)行以下泄露擴(kuò)散范圍的頂點(diǎn)陣列生成處理,

      步驟a1,由cpu在擴(kuò)散坐標(biāo)系中,計(jì)算擴(kuò)散時(shí)刻t時(shí)天然氣分別在x軸、y軸、z軸的擴(kuò)散距離rx、ry、rz和擴(kuò)散范圍在x軸的最小值minx;

      步驟a2,由cpu在擴(kuò)散坐標(biāo)系中,將擴(kuò)散范圍內(nèi)的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),在當(dāng)前三維場(chǎng)景的lod級(jí)別下以deltax、deltay、deltaz的距離分別在x軸、y軸、z軸方向采樣,生成t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列,并重新調(diào)整rx、ry、rz,使得x軸、y軸、z軸方向的采樣點(diǎn)個(gè)數(shù)均為2的整次冪;將擴(kuò)散坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒轉(zhuǎn)換到wgs84坐標(biāo)系,繼而轉(zhuǎn)換到世界坐標(biāo)系中,得到世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒;由兩個(gè)平行平面與世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒構(gòu)建擴(kuò)大之后的新的體包圍盒,其中一個(gè)平面經(jīng)過(guò)((rx+minx)/2,0,rz)在世界坐標(biāo)系中的對(duì)應(yīng)點(diǎn),另一個(gè)平面經(jīng)過(guò)世界坐標(biāo)系中泄漏擴(kuò)散范圍體包圍盒底面的四個(gè)頂點(diǎn);

      步驟a3,由cpu將t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列載入一個(gè)空閑的pbo,令t=t+deltat,deltat為時(shí)間間隔,針對(duì)下一個(gè)當(dāng)前的擴(kuò)散時(shí)刻返回步驟a1,執(zhí)行步驟a1‐a3,將新的擴(kuò)散時(shí)刻t泄露擴(kuò)散范圍的頂點(diǎn)陣列載入另一個(gè)pbo;

      當(dāng)cpu將t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列載入pbo后,針對(duì)下一擴(kuò)散時(shí)刻執(zhí)行步驟a1‐a3時(shí),由gpu將頂點(diǎn)陣列從pbo傳輸?shù)脚c頂點(diǎn)陣列大小相同的三維紋理對(duì)象,并完成以下繪制處理,

      繪制兩個(gè)長(zhǎng)方體,將濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)通過(guò)紋理映射的方式在片段著色器中實(shí)現(xiàn)gpgpu計(jì)算,把計(jì)算結(jié)果渲染并輸出到fbo,則濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)分別作為三維紋理被寫(xiě)入紋理緩存;繪制一個(gè)矩形,將屏幕點(diǎn)顏色值數(shù)據(jù)通過(guò)紋理映射的方式,結(jié)合對(duì)濃度值體數(shù)據(jù)三維紋理和頂點(diǎn)光照透射率體數(shù)據(jù)三維紋理的采樣,在片段著色器中實(shí)現(xiàn)gpgpu計(jì)算,計(jì)算結(jié)果寫(xiě)入二維紋理并直接渲染到屏幕,實(shí)現(xiàn)了擴(kuò)散濃度數(shù)據(jù)生成和可視化的一體化。

      而且,步驟1中,對(duì)于擴(kuò)散坐標(biāo)系和體素坐標(biāo)系的定義如下,

      擴(kuò)散坐標(biāo)系定義為以泄漏源p0在地面的投影點(diǎn)為原點(diǎn),以下風(fēng)向方向?yàn)閤軸,以地面上垂直于x軸方向?yàn)閥軸,以垂直于地面豎直向上方向?yàn)閦軸;在擴(kuò)散坐標(biāo)系中,擴(kuò)散范圍由長(zhǎng)方體包圍盒(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軸的最大擴(kuò)散距離,minx為擴(kuò)散范圍在x軸的最小值;

      體素坐標(biāo)系定義為以擴(kuò)散坐標(biāo)系中(minx,‐ry,0)為原點(diǎn),x軸、y軸、z軸方向均與擴(kuò)散坐標(biāo)系相同;在體素坐標(biāo)系中,擴(kuò)散范圍由長(zhǎng)方體包圍盒(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軸的最大擴(kuò)散距離,m、n、l分別表示x軸、y軸、z軸的采樣點(diǎn)個(gè)數(shù)。

      而且,步驟a1中,擴(kuò)散坐標(biāo)系中x軸、y軸、z軸的擴(kuò)散距離rx、ry、rz、minx的計(jì)算方法如下,

      (1)計(jì)算minx的方法為,

      當(dāng)t<t時(shí),令minx=0,保存minx值;

      當(dāng)t≥t時(shí),

      ①初始化minx=x0,x0為預(yù)設(shè)初始值,計(jì)算(minx,0,h)處的濃度值c;

      ②若c<c0,則令minx=minx+delta,delta為預(yù)設(shè)步長(zhǎng),重新計(jì)算(minx,0,h)處的濃度值c,直到c≥c0,進(jìn)入③;若c≥c0,則直接進(jìn)入③;

      ③若c≥c0,則令minx=minx-1,重新計(jì)算(minx,0,h)處的濃度值c,直到c<c0,保存minx值;

      (2)計(jì)算rx的方法為,

      ①初始化rx=minx+x0,x0為預(yù)設(shè)初始值,計(jì)算(rx,0,h)處的濃度值c;

      ②若c≥c0,則令rx=rx+delta,delta為預(yù)設(shè)步長(zhǎng),重新計(jì)算(rx,0,h)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③若c<c0,則令rx=rx-1,重新計(jì)算(rx,0,h)處的濃度值c,直到c≥c0,保存rx值;(3)計(jì)算ry的方法為,

      ①初始化ry=0,temp_x=rx,center_x=0;temp_x為臨時(shí)存儲(chǔ)x值的變量,center_x為ry處對(duì)應(yīng)的x值;

      ②計(jì)算(temp_x,ry,h)處的濃度值c,若c≥c0,則令ry=ry+1,重新計(jì)算(temp_x,ry,h)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③令center_x=temp_x,temp_x=temp_x-1,計(jì)算(temp_x,ry,h)處的濃度值c,若c<c0,則保存ry值;若c≥c0,則返回②,重復(fù)②—③;

      (4)計(jì)算rz的方法為,

      ①初始化rz=h,temp_x=center_x,x_left=temp_x,x_right=temp_x;temp_x、x_left、x_right均為臨時(shí)存儲(chǔ)x值的變量,center_x為ry處對(duì)應(yīng)的x值;

      ②計(jì)算(temp_x,0,rz)處的濃度值c,若c≥c0,則令rz=rz+1,重新計(jì)算(temp_x,0,rz)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③令x_left=temp_x-1,x_right=temp_x+1,判斷(x_left,0,rz)處濃度c1、(x_right,0,rz)處濃度c2和給定濃度值c0的大小,

      若c1<c0且c2<c0,則保存rz值;

      若c1≥c0且c2<c0,則temp_x=temp_x-1,返回②,重復(fù)②—③;

      若c1<c0且c2≥c0,則temp_x=temp_x+1,返回②,重復(fù)②—③。

      而且,步驟a2中,將泄露擴(kuò)散范圍的可視化精度劃分為若干個(gè)級(jí)別,將擴(kuò)散范圍內(nèi)的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),通過(guò)多尺度采樣的策略獲得最優(yōu)的m、n、l值,優(yōu)化紋理映射效率。

      而且,設(shè)兩個(gè)pbo分別記為pbo0和pbo1,

      設(shè)cpu綁定pbo0,進(jìn)行泄露擴(kuò)散范圍的頂點(diǎn)陣列生成處理,將擴(kuò)散時(shí)刻t的頂點(diǎn)陣列載入pbo0,gpu將頂點(diǎn)陣列從pbo0傳輸?shù)饺S紋理對(duì)象并進(jìn)行繪制;

      gpu將頂點(diǎn)陣列從pbo0傳輸?shù)饺S紋理對(duì)象并進(jìn)行繪制的同時(shí),cpu綁定pbo1,進(jìn)行泄露擴(kuò)散范圍的頂點(diǎn)陣列生成處理,將下一擴(kuò)散時(shí)刻t的頂點(diǎn)陣列載入pbo1;

      gpu將頂點(diǎn)陣列從pbo1傳輸?shù)饺S紋理對(duì)象并進(jìn)行繪制,同時(shí)cpu重新綁定pbo0,如此類推,pbo0、pbo1不斷交替?zhèn)鬏旐旤c(diǎn)陣列到三維紋理對(duì)象。

      而且,gpu的繪制處理包括以下步驟,

      步驟b1,首先繪制一個(gè)與三維紋理對(duì)象等大的長(zhǎng)方體,通過(guò)紋理映射功能,將三維紋理對(duì)象映射到長(zhǎng)方體,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列的坐標(biāo)轉(zhuǎn)換,在片段著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列濃度值的通用計(jì)算;將計(jì)算結(jié)果渲染并輸出到fbo,則擴(kuò)散空間的濃度值體數(shù)據(jù)作為新的三維紋理被寫(xiě)入紋理緩存;

      步驟b2,再次繪制一個(gè)與三維紋理對(duì)象等大的長(zhǎng)方體,通過(guò)紋理映射功能,將三維紋理對(duì)象映射到長(zhǎng)方體,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列的坐標(biāo)轉(zhuǎn)換,在片段著色器中,由頂點(diǎn)向光源發(fā)出的射線在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)按步長(zhǎng)進(jìn)行空間點(diǎn)采樣,結(jié)合對(duì)步驟b2中三維紋理的采樣,實(shí)現(xiàn)泄漏擴(kuò)散體數(shù)據(jù)頂點(diǎn)光線透射率的通用計(jì)算,將計(jì)算結(jié)果渲染并輸出到fbo,則泄漏擴(kuò)散體數(shù)據(jù)的頂點(diǎn)光線透射率作為新的三維紋理被寫(xiě)入紋理緩存;

      步驟b3,最后繪制一個(gè)屏幕大小的矩形,通過(guò)紋理映射功能,將等大的二維紋理對(duì)象映射到矩形,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)矩形頂點(diǎn)的坐標(biāo)轉(zhuǎn)換,在片段著色器中由視點(diǎn)向屏幕像素點(diǎn)發(fā)出的射線在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)按步長(zhǎng)進(jìn)行空間點(diǎn)采樣,結(jié)合對(duì)步驟b1和步驟b2中三維紋理的采樣,實(shí)現(xiàn)屏幕像素點(diǎn)顏色值的計(jì)算,最終將矩形輸出至屏幕,實(shí)現(xiàn)了t時(shí)刻天然氣泄漏擴(kuò)散范圍的三維可視化。

      而且,步驟b2中,在擴(kuò)大之后的包圍盒內(nèi)采樣,需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi),包括將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84坐標(biāo)系,若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),否則放棄該采樣點(diǎn);若采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),則將采樣點(diǎn)轉(zhuǎn)換到擴(kuò)散坐標(biāo)系,再?gòu)臄U(kuò)散坐標(biāo)系轉(zhuǎn)換到體素坐標(biāo)系,繼而映射得到該采樣點(diǎn)的三維紋理坐標(biāo),在紋理坐標(biāo)處對(duì)三維紋理采樣。

      而且,步驟b3中,在擴(kuò)大之后的包圍盒內(nèi)采樣,需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi),包括將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84球坐標(biāo)系,若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),否則放棄該采樣點(diǎn);若采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),則將采樣點(diǎn)轉(zhuǎn)換到擴(kuò)散坐標(biāo)系,再?gòu)臄U(kuò)散坐標(biāo)系轉(zhuǎn)換到體素坐標(biāo)系,繼而映射得到該采樣點(diǎn)的三維紋理坐標(biāo),在紋理坐標(biāo)處對(duì)三維紋理采樣。

      本發(fā)明創(chuàng)造性地將濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)通過(guò)gpgpu計(jì)算寫(xiě)入三維紋理,繼而通過(guò)采樣三維紋理完成屏幕像素點(diǎn)顏色值的計(jì)算,通過(guò)三次連續(xù)的繪制過(guò)程實(shí)現(xiàn)了擴(kuò)散濃度數(shù)據(jù)生成和可視化的一體化;將擴(kuò)散空間的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),通過(guò)多尺度采樣的策略優(yōu)化了紋理映射效率;利用cpu和gpu異步處理的特性來(lái)實(shí)現(xiàn)不同時(shí)刻擴(kuò)散范圍頂點(diǎn)陣列的異步生成和傳輸,提高了動(dòng)態(tài)渲染性能;將擴(kuò)散坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒轉(zhuǎn)換到了世界坐標(biāo)系中,并在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)進(jìn)行采樣,考慮了三維球面的影響,實(shí)現(xiàn)了基于球面的可視化。本發(fā)明能夠支持天然氣泄漏擴(kuò)散條件下的擴(kuò)散濃度數(shù)據(jù)生成和基于球面的動(dòng)態(tài)可視化一體化。

      附圖說(shuō)明

      圖1為本發(fā)明實(shí)施例的擴(kuò)散坐標(biāo)系示意圖。

      圖2為本發(fā)明實(shí)施例的體素坐標(biāo)系示意圖。

      圖3為本發(fā)明實(shí)施例的計(jì)算rx和minx的流程圖。

      圖4為本發(fā)明實(shí)施例的計(jì)算ry的流程圖。

      圖5為本發(fā)明實(shí)施例的計(jì)算rz的流程圖。

      圖6為本發(fā)明實(shí)施例的世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒示意圖。

      圖7為本發(fā)明實(shí)施例的流程圖。

      具體實(shí)施方式

      以下結(jié)合附圖和實(shí)施例詳細(xì)說(shuō)明本發(fā)明技術(shù)方案。

      本發(fā)明中使用的泄露模型為小孔泄露模型,小孔泄漏強(qiáng)度取決于泄漏過(guò)程中燃?xì)獾牧魉?,其判斷依?jù)為臨界壓力比cpr:

      當(dāng)時(shí),小孔泄露的流速可達(dá)到音速,其泄漏強(qiáng)度為:

      當(dāng)時(shí),小孔泄露的流速為亞音速,其泄露強(qiáng)度為:

      式中,q—小孔泄漏強(qiáng)度,kg/s;c0—孔口泄露系數(shù);a—泄漏口面積,m2;p0—環(huán)境壓力,pa;p—泄漏中心處壓力,pa;t—泄漏中心處溫度;z—壓縮因子;r—?dú)怏w常數(shù),j/(kmol*k);m—?dú)怏w摩爾質(zhì)量,kg/mol;k—燃?xì)獾褥刂笖?shù)。

      本發(fā)明中基于高斯煙羽擴(kuò)散模型和高斯煙團(tuán)擴(kuò)散模型,使用瞬時(shí)點(diǎn)源的移動(dòng)煙團(tuán)積分模式來(lái)求解連續(xù)點(diǎn)源的天然氣濃度分布:

      式中,c(x,y,z,t)—擴(kuò)散坐標(biāo)系中某點(diǎn)(x,y,z)處泄漏氣體的平均濃度,kg/m3;q—泄漏率,kg/s;σx、σy、σz—下風(fēng)向、橫風(fēng)向和垂直方向上氣體的擴(kuò)散參數(shù),m;u—平均風(fēng)速,m/s;t—擴(kuò)散時(shí)刻,s;t—天然氣泄露的總時(shí)間,s;h—有效源高,m。

      實(shí)施例采用本發(fā)明的方法,采用opengl和glsl著色語(yǔ)言,基于osgearth三維渲染引擎實(shí)現(xiàn)了天然氣泄漏擴(kuò)散條件下的基于gpgpu和體繪制的擴(kuò)散濃度數(shù)據(jù)生成和基于球面的動(dòng)態(tài)可視化一體化。

      本發(fā)明實(shí)施例提供的一種基于gpgpu的天然氣泄漏擴(kuò)散的動(dòng)態(tài)可視化方法,包括以下過(guò)程,

      首先,初始化繪制環(huán)境,使用opengl創(chuàng)建兩個(gè)pbo和一個(gè)fbo,創(chuàng)建三維紋理對(duì)象和二維紋理對(duì)象用于存儲(chǔ)gpgpu的計(jì)算結(jié)果,定義擴(kuò)散坐標(biāo)系和體素坐標(biāo)系,初始化視點(diǎn)、光源在wgs84坐標(biāo)系中的位置;

      設(shè)當(dāng)前的擴(kuò)散時(shí)刻為t,先基于cpu進(jìn)行以下泄露擴(kuò)散范圍的頂點(diǎn)陣列生成處理,

      步驟a1,由cpu在擴(kuò)散坐標(biāo)系中,計(jì)算擴(kuò)散時(shí)刻t時(shí)天然氣分別在x軸、y軸、z軸的擴(kuò)散距離rx、ry、rz和擴(kuò)散范圍在x軸的最小值minx;

      步驟a2,由cpu在擴(kuò)散坐標(biāo)系中,將擴(kuò)散范圍內(nèi)的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),在當(dāng)前三維場(chǎng)景的lod級(jí)別下以deltax、deltay、deltaz的距離分別在x軸、y軸、z軸方向采樣,生成t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列,并重新調(diào)整rx、ry、rz,使得x軸、y軸、z軸方向的采樣點(diǎn)個(gè)數(shù)均為2的整次冪;將擴(kuò)散坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒轉(zhuǎn)換到wgs84坐標(biāo)系,繼而轉(zhuǎn)換到世界坐標(biāo)系中,得到世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒;由兩個(gè)平行平面與世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒構(gòu)建擴(kuò)大之后的新的體包圍盒,其中一個(gè)平面經(jīng)過(guò)((rx+minx)/2,0,rz)在世界坐標(biāo)系中的對(duì)應(yīng)點(diǎn),另一個(gè)平面經(jīng)過(guò)世界坐標(biāo)系中泄漏擴(kuò)散范圍體包圍盒底面的四個(gè)頂點(diǎn);

      步驟a3,由cpu將t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列載入一個(gè)空閑的pbo,令t=t+deltat,deltat為時(shí)間間隔,針對(duì)下一個(gè)當(dāng)前的擴(kuò)散時(shí)刻返回步驟a1,執(zhí)行步驟a1‐a3,將新的擴(kuò)散時(shí)刻t泄露擴(kuò)散范圍的頂點(diǎn)陣列載入另一個(gè)pbo;

      當(dāng)cpu將t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列載入pbo后,針對(duì)下一擴(kuò)散時(shí)刻t執(zhí)行步驟a1‐a3時(shí),由gpu將頂點(diǎn)陣列從pbo傳輸?shù)脚c頂點(diǎn)陣列大小相同的三維紋理對(duì)象,并完成以下繪制處理,

      繪制兩個(gè)長(zhǎng)方體,將濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)通過(guò)紋理映射的方式在片段著色器中實(shí)現(xiàn)gpgpu計(jì)算,把計(jì)算結(jié)果渲染并輸出到fbo,則濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)分別作為三維紋理被寫(xiě)入紋理緩存;繪制一個(gè)矩形,將屏幕點(diǎn)顏色值數(shù)據(jù)通過(guò)紋理映射的方式,結(jié)合對(duì)濃度值體數(shù)據(jù)三維紋理和頂點(diǎn)光照透射率體數(shù)據(jù)三維紋理的采樣,在片段著色器中實(shí)現(xiàn)gpgpu計(jì)算,計(jì)算結(jié)果寫(xiě)入二維紋理并直接渲染到屏幕,實(shí)現(xiàn)了擴(kuò)散濃度數(shù)據(jù)生成和可視化的一體化。

      具體實(shí)施時(shí),可以采用計(jì)算機(jī)軟件方式實(shí)現(xiàn)自動(dòng)流程運(yùn)行,提供以上一種基于gpgpu的天然氣泄漏擴(kuò)散的動(dòng)態(tài)可視化方法。

      為便于參考實(shí)施起見(jiàn),提供實(shí)施例具體流程設(shè)計(jì)如下,參見(jiàn)圖7:

      步驟1,初始化繪制環(huán)境,使用opengl的pbo、fbo技術(shù)創(chuàng)建兩個(gè)pbo和一個(gè)fbo,創(chuàng)建三維紋理對(duì)象和二維紋理對(duì)象用于存儲(chǔ)gpgpu的計(jì)算結(jié)果,定義擴(kuò)散坐標(biāo)系和體素坐標(biāo)系,初始化視點(diǎn)、光源在wgs84坐標(biāo)系中的位置;

      初始化步驟可由cpu執(zhí)行。

      本發(fā)明定義擴(kuò)散坐標(biāo)系(如圖1所示)和體素坐標(biāo)系(如圖2所示):

      擴(kuò)散坐標(biāo)系定義為以泄漏源p0在地面的投影點(diǎn)為原點(diǎn),以下風(fēng)向方向?yàn)閤軸,以地面上垂直于x軸方向?yàn)閥軸,以垂直于地面豎直向上方向?yàn)閦軸,在擴(kuò)散坐標(biāo)系中,擴(kuò)散范圍由長(zhǎng)方體包圍盒(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軸的最大擴(kuò)散距離,minx為擴(kuò)散范圍在x軸的最小值。

      體素坐標(biāo)系定義為以擴(kuò)散坐標(biāo)系中(minx,-ry,0)為原點(diǎn),x軸、y軸、z軸方向均與擴(kuò)散坐標(biāo)系相同,即以下風(fēng)向方向?yàn)閤軸,以地面上垂直于x軸方向?yàn)閥軸,以垂直于地面豎直向上方向?yàn)閦軸。在體素坐標(biāo)系中,擴(kuò)散范圍由長(zhǎng)方體包圍盒(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軸的最大擴(kuò)散距離,m、n、l分別表示x軸、y軸、z軸的采樣點(diǎn)個(gè)數(shù)。

      體素坐標(biāo)系中點(diǎn)(i,j,k)對(duì)應(yīng)擴(kuò)散坐標(biāo)系中點(diǎn)(i×deltax+minx,j×deltay-ry,k×deltaz),其中,i=0,1,…,m‐1;j=0,1,…,n‐1;k=0,1,…,l‐1;m‐1、n‐1、l‐1分別為x軸、y軸、z軸的最大距離,m、n、l分別表示x軸、y軸、z軸的采樣點(diǎn)個(gè)數(shù);deltax、deltay、deltaz為采樣距離。在體素坐標(biāo)系中,擴(kuò)散范圍由長(zhǎng)方體包圍盒(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)確定。

      實(shí)施例中,初始化繪制環(huán)境,創(chuàng)建兩個(gè)pbo,分別為pbo0、pbo1。創(chuàng)建三個(gè)三維紋理對(duì)象texture0、texture1、texture2,分別用作存儲(chǔ)泄露擴(kuò)散范圍的頂點(diǎn)陣列、泄露擴(kuò)散濃度值體數(shù)據(jù)、光線透射率體數(shù)據(jù)。創(chuàng)建一個(gè)二維紋理對(duì)象texture3用作渲染屏幕。創(chuàng)建一個(gè)fbo,用作渲染到紋理。

      初始化泄漏源的位置為psource(lon,lat,h),視點(diǎn)的初始位置為peye(lon,lat,h),光源的位置為plig(lon,lat,h),psource、peye、plig均為wgs84坐標(biāo)。將視點(diǎn)位置peye和光源位置plig從wgs84坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系,則可得到視點(diǎn)的世界坐標(biāo)eyeworld(xw,yw,zw)和光源的世界坐標(biāo)lightworld(xw,yw,zw)。

      具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行確定泄漏源、視點(diǎn)以及光源在wgs84坐標(biāo)系中的位置。

      步驟2,在擴(kuò)散坐標(biāo)系中,對(duì)于泄漏源psource、天然氣泄露的總時(shí)間t、擴(kuò)散時(shí)刻t和低危濃度c0,計(jì)算擴(kuò)散距離rx、ry、rz和minx;

      本發(fā)明提出:

      對(duì)于minx,若擴(kuò)散時(shí)刻t小于天然氣泄露總時(shí)間t,則令minx等于0;否則為minx賦一個(gè)較小值(本領(lǐng)域技術(shù)人員可預(yù)設(shè)取值),根據(jù)天然氣濃度計(jì)算公式c(x,y,z,t)計(jì)算濃度c,使t時(shí)刻minx處的濃度c大于指定濃度c0,然后逐漸減小minx,直到對(duì)應(yīng)的濃度c小于或等于指定濃度c0;

      對(duì)于rx,首先為rx賦一個(gè)較大值(本領(lǐng)域技術(shù)人員可預(yù)設(shè)取值),根據(jù)天然氣濃度計(jì)算公式c(x,y,z,t)計(jì)算濃度c,使t時(shí)刻rx處的濃度c小于指定濃度c0,然后逐漸減小rx,直到對(duì)應(yīng)的濃度c大于或等于指定濃度c0;

      對(duì)于ry,從(rx,0,h)處開(kāi)始,逐漸增大y值,根據(jù)天然氣濃度計(jì)算公式c(x,y,z,t)計(jì)算濃度c,直到濃度c小于指定濃度c0,保存此時(shí)的y為ry。若減小x后,(x,ry,h)處的濃度c小于指定濃度c0,則ry為最大值,否則繼續(xù)增大y值求解ry;

      對(duì)于rz,求出ry對(duì)應(yīng)的x值后,從(x,0,h)處開(kāi)始,逐漸增大z值,根據(jù)天然氣濃度計(jì)算公式c(x,y,z,t)計(jì)算濃度c,直到濃度c小于指定濃度c0,保存此時(shí)的z為rz。若減小x或增大x時(shí),(x,0,rz)處的濃度c均小于指定濃度c0,則rz為最大值,否則,沿著濃度c大于指定濃度c0的一側(cè)重復(fù)上述操作繼續(xù)求解rz。

      實(shí)施例中具體實(shí)現(xiàn)如下:

      初始化天然氣泄露的總時(shí)間t、擴(kuò)散時(shí)刻t、低危濃度c0、x0和delta;

      如圖3,計(jì)算minx的方法為:

      當(dāng)t<t時(shí):令minx=0,保存minx值;

      當(dāng)t≥t時(shí):

      ①初始化minx=x0,計(jì)算(minx,0,h)處的濃度值c,本領(lǐng)域技術(shù)人員可預(yù)設(shè)初始值x0取值,優(yōu)選地x0的取值范圍為0≤x0≤10;

      ②若c<c0,則令minx=minx+delta(本領(lǐng)域技術(shù)人員可預(yù)設(shè)步長(zhǎng)delta取值,例如可取50或100或200),重新計(jì)算(minx,0,h)處的濃度值c,直到c≥c0,進(jìn)入③;若c≥c0,則直接進(jìn)入③;

      ③若c≥c0,則令minx=minx-1,重新計(jì)算(minx,0,h)處的濃度值c,直到c<c0,保存minx值。

      如圖3,計(jì)算rx的方法為:

      ①初始化rx=minx+x0(本領(lǐng)域技術(shù)人員可預(yù)設(shè)初始值x0取值,x0優(yōu)選的取值范圍為0x0≤10),計(jì)算(rx,0,h)處的濃度值c;

      ②若c≥c0,則令rx=rx+delta(本領(lǐng)域技術(shù)人員可預(yù)設(shè)步長(zhǎng)delta取值,例如可取50或100或200),重新計(jì)算(rx,0,h)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③若c<c0,則令rx=rx-1,重新計(jì)算(rx,0,h)處的濃度值c,直到c≥c0,保存rx值。

      本實(shí)施例取x0=10,delta=100。

      如圖4,計(jì)算ry的方法為:

      ①初始化ry=0,temp_x=rx,center_x=0;temp_x為臨時(shí)存儲(chǔ)x值的變量,center_x為ry處對(duì)應(yīng)的x值;

      ②計(jì)算(temp_x,ry,h)處的濃度值c,若c≥c0,則令ry=ry+1,重新計(jì)算(temp_x,ry,h)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③令center_x=temp_x,temp_x=temp_x-1,計(jì)算(temp_x,ry,h)處的濃度值c,若c<c0,則保存ry值;若c≥c0,則返回②,重復(fù)②—③;

      如圖5,計(jì)算rz的方法為:

      ①初始化rz=h,temp_x=center_x,x_left=temp_x,x_right=temp_x;temp_x、x_left、x_right均為臨時(shí)存儲(chǔ)x值的變量,center_x為ry處對(duì)應(yīng)的x值;

      ②計(jì)算(temp_x,0,rz)處的濃度值c,若c≥c0,則令rz=rz+1,重新計(jì)算(temp_x,0,rz)處的濃度值c,直到c<c0,進(jìn)入③;若c<c0,則直接進(jìn)入③;

      ③令x_left=temp_x-1,x_right=temp_x+1,判斷(x_left,0,rz)處濃度c1、(x_right,0,rz)處濃度c2和給定濃度值c0的大?。?/p>

      若c1<c0且c2<c0,則保存rz值;

      若c1≥c0且c2<c0,則temp_x=temp_x-1,返回②,重復(fù)②—③;

      若c1<c0且c2≥c0,則temp_x=temp_x+1,返回②,重復(fù)②—③。

      具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行確定泄露事故持續(xù)時(shí)間t、擴(kuò)散時(shí)刻t和低危濃度c0。

      步驟3,在擴(kuò)散坐標(biāo)系中,將擴(kuò)散范圍內(nèi)的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),在當(dāng)前三維場(chǎng)景的lod級(jí)別下以deltax、deltay、deltaz的距離分別在x軸、y軸、z軸方向采樣,生成t時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列,并重新調(diào)整rx、ry、rz,使得x軸、y軸、z軸方向的采樣點(diǎn)個(gè)數(shù)均為2的整次冪。將擴(kuò)散坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒轉(zhuǎn)換到wgs84坐標(biāo)系,繼而轉(zhuǎn)換到世界坐標(biāo)系中,得到世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒(如圖6實(shí)線所示)。此時(shí)的體包圍盒由兩個(gè)球面和四個(gè)平面包圍而成,由兩個(gè)平行平面與世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒可構(gòu)建擴(kuò)大之后的新的體包圍盒,如圖6虛線所示。

      本發(fā)明進(jìn)一步提出,將泄露擴(kuò)散范圍的可視化精度劃分為若干個(gè)級(jí)別,將擴(kuò)散范圍內(nèi)的采樣距離與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),通過(guò)多尺度采樣的策略優(yōu)化了紋理映射效率:

      當(dāng)前三維場(chǎng)景的lod級(jí)別是隨著視點(diǎn)的拉近或遠(yuǎn)離而動(dòng)態(tài)變化的,使用當(dāng)前三維場(chǎng)景的lod級(jí)別對(duì)應(yīng)的采樣距離在泄露擴(kuò)散范圍內(nèi)采樣,生成泄漏擴(kuò)散范圍的頂點(diǎn)陣列。令指數(shù)k=log2m(k取整數(shù)),即m=2k,同理對(duì)n、l重新賦值,使m、n、l均為2的整次冪,并根據(jù)m、n、l重新調(diào)整rx、ry、rz。多尺度采樣的策略在滿足泄漏擴(kuò)散范圍三維可視化視覺(jué)精度的同時(shí),能夠獲得最優(yōu)的m、n、l值,由于m、n、l共同決定了紋理映射時(shí)三維紋理的大小,因此通過(guò)多尺度采樣的策略可以優(yōu)化紋理映射效率。

      步驟3中,在隨時(shí)間變化的、精確計(jì)算的三維擴(kuò)散范圍內(nèi)采樣空間點(diǎn),可以以最小的數(shù)據(jù)量完整地展示動(dòng)態(tài)過(guò)程中不同時(shí)刻擴(kuò)散范圍的全貌:

      在擴(kuò)散坐標(biāo)系中由x軸、y軸、z軸的最大擴(kuò)散距離rx、ry、rz和擴(kuò)散范圍在x軸的最小值minx確定的泄露擴(kuò)散范圍內(nèi)采樣空間點(diǎn),可以完整地展示某時(shí)刻擴(kuò)散范圍的全貌。并且rx、ry、rz、minx隨著時(shí)間的變化也會(huì)相應(yīng)地改變,這樣每次都能夠以變化的最小的采樣點(diǎn)數(shù)據(jù)量來(lái)精確地表達(dá)泄漏擴(kuò)散的范圍。

      實(shí)施例中,將泄露擴(kuò)散范圍的可視化精度劃分為5個(gè)級(jí)別,與三維場(chǎng)景的lod級(jí)別相關(guān)聯(lián),用lod1~lod5來(lái)表示,即在擴(kuò)散坐標(biāo)系中,在不同的lod級(jí)別下對(duì)擴(kuò)散空間采樣時(shí)使用不同的采樣距離:

      當(dāng)前三維場(chǎng)景的lod級(jí)別為lod5或大于lod5時(shí),deltax=deltay=deltaz=1m;

      當(dāng)前三維場(chǎng)景的lod級(jí)別為lod4時(shí),deltax=deltay=deltaz=2m;

      當(dāng)前三維場(chǎng)景的lod級(jí)別為lod3時(shí),deltax=deltay=deltaz=4m;

      當(dāng)前三維場(chǎng)景的lod級(jí)別為lod2時(shí),deltax=deltay=deltaz=8m;

      當(dāng)前三維場(chǎng)景的lod級(jí)別為lod1或小于lod1時(shí),deltax=deltay=deltaz=16m。以deltax、deltay、deltaz的距離分別在x、y、z方向采樣空間坐標(biāo),生成頂點(diǎn)陣列。令m-1=(rx-minx)/deltax、n-1=2×ry/deltay、l-1=rz/deltaz,取k=log_2m(k取整數(shù)),即m=2^k,同理對(duì)n、l重新賦值,令rx=(m-1)×deltax+minx、ry=(n-1)×deltay/2、rz=(l-1)×deltaz。x軸、y軸、z軸方向的采樣點(diǎn)個(gè)數(shù)分別為m、n、l,頂點(diǎn)陣列為三維數(shù)組volumearray[m][n][l],任意頂點(diǎn)的坐標(biāo)為擴(kuò)散坐標(biāo)(i×deltax+minx,j×deltay-ry,k×deltaz),其中,i=0,1,…,m-1;j=0,1,…,n-1;k=0,1,…,l-1。初始化三維數(shù)組的元素值均為0。將擴(kuò)散坐標(biāo)系中泄露擴(kuò)散范圍的體包圍盒的頂點(diǎn)(minx,-ry,0)、(rx,-ry,0)、(rx,ry,0)、(minx,ry,0)、(minx,-ry,rz)、(rx,-ry,rz)、(rx,ry,rz)、(minx,ry,rz)分別轉(zhuǎn)換到wgs84坐標(biāo)系中,再轉(zhuǎn)換到世界坐標(biāo)系中,獲得世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒頂點(diǎn)p1、p2、p3、p4、p5、p6、p7、p8。將擴(kuò)散坐標(biāo)系中的坐標(biāo)點(diǎn)((rx+minx)/2,0,rz)轉(zhuǎn)換到wgs84坐標(biāo)系中,再轉(zhuǎn)換到世界坐標(biāo)系中,獲得其在世界坐標(biāo)系中的空間位置pc。如圖6中所示由兩個(gè)平行平面(其中一個(gè)平面經(jīng)過(guò)pc,另一個(gè)平面經(jīng)過(guò)p1、p2、p3、p4)與世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒可構(gòu)建擴(kuò)大之后的新的體包圍盒。具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行確定泄漏擴(kuò)散范圍的可視化精度級(jí)別以及不同精度級(jí)別下的采樣距離deltax、deltay、deltaz。

      步驟4,針對(duì)擴(kuò)散時(shí)刻t,gpu將頂點(diǎn)陣列從pbo傳輸?shù)脚c頂點(diǎn)陣列大小相同的三維紋理對(duì)象并執(zhí)行三次連續(xù)的繪制過(guò)程,同時(shí)cpu將會(huì)實(shí)現(xiàn)把擴(kuò)散時(shí)刻t=t+deltat的頂點(diǎn)陣列載入另一個(gè)pbo。利用cpu和gpu異步處理的特性,對(duì)于擴(kuò)散時(shí)刻t和下一時(shí)刻的泄露擴(kuò)散范圍的頂點(diǎn)陣列,使用兩個(gè)pbo交替執(zhí)行紋理源的更新和紋理的復(fù)制,實(shí)現(xiàn)不同時(shí)刻泄露擴(kuò)散范圍的頂點(diǎn)陣列的異步生成和繪制。

      本發(fā)明提出,使用兩個(gè)pbo來(lái)實(shí)現(xiàn)不同時(shí)刻泄漏擴(kuò)散范圍的頂點(diǎn)陣列的異步生成和繪制:

      cpu負(fù)責(zé)執(zhí)行計(jì)算擴(kuò)散時(shí)刻t=t+deltat的擴(kuò)散范圍rx、ry、rz和minx、生成頂點(diǎn)陣列、將頂點(diǎn)陣列載入pbo的一系列過(guò)程,gpu負(fù)責(zé)將頂點(diǎn)陣列從pbo0傳輸?shù)饺S紋理對(duì)象以及執(zhí)行三次連續(xù)的繪制過(guò)程。

      擴(kuò)散時(shí)刻t,gpu將頂點(diǎn)陣列從pbo0傳輸?shù)饺S紋理對(duì)象,并執(zhí)行三次連續(xù)的繪制過(guò)程。同時(shí),cpu綁定pbo1并且執(zhí)行計(jì)算擴(kuò)散時(shí)刻t=t+deltat的擴(kuò)散范圍rx、ry、rz和minx、生成頂點(diǎn)陣列、將頂點(diǎn)陣列載入pbo1的一系列過(guò)程。當(dāng)擴(kuò)散時(shí)刻t=t+deltat到來(lái)時(shí),gpu將已經(jīng)載入完畢的pbo1傳輸?shù)饺S紋理對(duì)象,同時(shí)cpu重新綁定pbo0,為pbo0傳送下一擴(kuò)散時(shí)刻的頂點(diǎn)陣列。如此類推,pbo0、pbo1不斷交替?zhèn)鬏旐旤c(diǎn)陣列到三維紋理對(duì)象。充分利用cpu和gpu異步處理的特性,cpu將紋理源更新為pbo,gpu從其他pbo復(fù)制紋理并執(zhí)行繪制過(guò)程,由于異步dma傳輸,更新和繪制過(guò)程可以同時(shí)執(zhí)行,提高了動(dòng)態(tài)渲染性能。

      實(shí)施例中,設(shè)置時(shí)間間隔deltat=10s。在擴(kuò)散時(shí)刻t,gpu將已經(jīng)載入pbo0的頂點(diǎn)陣列volumearray[m][n][l]傳輸?shù)饺S紋理對(duì)象texture0(大小為m×n×l)并執(zhí)行三次連續(xù)的繪制過(guò)程。使用pbo可以充分利用cpu和gpu異步處理的特性,opengl可以在pbo0和紋理對(duì)象texture0之間執(zhí)行異步dma傳輸,所以在gpu將頂點(diǎn)陣列從pbo0傳輸?shù)饺S紋理對(duì)象texture0并執(zhí)行三次連續(xù)的繪制過(guò)程的同時(shí),cpu綁定pbo1并且執(zhí)行計(jì)算擴(kuò)散時(shí)刻t=t+deltat的擴(kuò)散范圍rx、ry、rz和minx、生成頂點(diǎn)陣列的三維數(shù)組volumearray[m][n][l]、將頂點(diǎn)陣列volumearray[m][n][l]載入pbo1的一系列過(guò)程。當(dāng)擴(kuò)散時(shí)刻t=t+deltat到來(lái)時(shí),gpu將已經(jīng)載入完畢的pbo1傳輸?shù)饺S紋理對(duì)象texture0,同時(shí)cpu重新綁定pbo0,為pbo0傳送下一擴(kuò)散時(shí)刻的頂點(diǎn)陣列。如此類推,pbo0、pbo1不斷交替?zhèn)鬏旐旤c(diǎn)陣列到三維紋理對(duì)象texture0,可以實(shí)現(xiàn)不同時(shí)刻泄漏擴(kuò)散范圍的頂點(diǎn)陣列的異步生成和繪制。充分利用不同處理器之間的異步特性,cpu將紋理源更新為pbo,gpu從其他pbo復(fù)制紋理并執(zhí)行繪制過(guò)程,由于異步dma傳輸,更新和繪制過(guò)程可以同時(shí)執(zhí)行,提高了動(dòng)態(tài)渲染性能。

      具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行設(shè)置時(shí)間間隔deltat。

      步驟5,針對(duì)擴(kuò)散時(shí)刻t,首先繪制一個(gè)與步驟4中三維紋理對(duì)象等大的長(zhǎng)方體,通過(guò)紋理映射功能,將三維紋理對(duì)象映射到長(zhǎng)方體,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列的坐標(biāo)轉(zhuǎn)換,在片段著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列濃度值的通用計(jì)算。將計(jì)算結(jié)果渲染并輸出到fbo,則擴(kuò)散空間的濃度值體數(shù)據(jù)作為新的三維紋理被寫(xiě)入紋理緩存;

      實(shí)施例中,針對(duì)擴(kuò)散時(shí)刻t,首先繪制一個(gè)m×n×l大小的長(zhǎng)方體作為紋理映射的對(duì)象,長(zhǎng)方體在體素坐標(biāo)系中的頂點(diǎn)坐標(biāo)為(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),對(duì)應(yīng)于三維紋理坐標(biāo)(0,0,0)、(1,0,0)、(1,1,0)、(0,1,0)、(0,0,1)、(1,0,1)、(1,1,1)、(0,1,1)。將三維紋理texture0映射到長(zhǎng)方體,利用glsl著色語(yǔ)言編寫(xiě)針對(duì)一個(gè)紋理元的計(jì)算泄漏擴(kuò)散濃度的通用算法。

      在頂點(diǎn)著色器中,輸入變量為頂點(diǎn)坐標(biāo)gl_vertex、頂點(diǎn)對(duì)應(yīng)的三維紋理坐標(biāo)gl_texcoord。對(duì)gl_vertex執(zhí)行模型視圖變換、投影變換、視口變換后,轉(zhuǎn)換成了屏幕坐標(biāo)gl_position。進(jìn)行投影變換時(shí)以xoy平面為投影平面,使用正對(duì)投影平面的正交投影,進(jìn)行視口變換時(shí)定義了一個(gè)m×n大小的視口,以保證投影過(guò)程中像素的大小和位置保持不變且像素?cái)?shù)據(jù)不會(huì)丟失。頂點(diǎn)著色器的輸出變量為屏幕坐標(biāo)gl_position和紋理坐標(biāo)gl_texcoord。頂點(diǎn)變換后的長(zhǎng)方體經(jīng)光柵化后得到m×n×l個(gè)片元,每個(gè)片元對(duì)應(yīng)一個(gè)三維紋理坐標(biāo)gl_texcoord。

      在片段著色器中,輸入變量為紋理坐標(biāo)gl_texcoord,將紋理坐標(biāo)gl_texcoord(u,v,w)映射到擴(kuò)散坐標(biāo)系中的空間坐標(biāo)(u×(m-1)×deltax+minx,v×(n-1)×deltay-ry,w×(l-1)×deltaz),根據(jù)天然氣濃度計(jì)算公式c(x,y,z,t)得到該片元對(duì)應(yīng)的濃度值c,并將濃度值c存儲(chǔ)為gl_fragcolor的r通道值。片段著色器的輸出變量為gl_fragcolor。

      將texture1關(guān)聯(lián)到fbo,把計(jì)算結(jié)果渲染并輸出到fbo,則擴(kuò)散空間的濃度值體數(shù)據(jù)作為三維紋理texture1被寫(xiě)入紋理緩存,然后將texture1與fbo分離。

      步驟6,針對(duì)擴(kuò)散時(shí)刻t,再次繪制一個(gè)與步驟5中三維紋理對(duì)象等大的長(zhǎng)方體,通過(guò)紋理映射功能,將三維紋理對(duì)象映射到長(zhǎng)方體,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)泄露擴(kuò)散范圍的頂點(diǎn)陣列的坐標(biāo)轉(zhuǎn)換,在片段著色器中,由頂點(diǎn)向光源發(fā)出的射線在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)以一定的步長(zhǎng)進(jìn)行空間點(diǎn)采樣,結(jié)合對(duì)步驟5中三維紋理的采樣,實(shí)現(xiàn)泄漏擴(kuò)散體數(shù)據(jù)頂點(diǎn)光線透射率的通用計(jì)算。將計(jì)算結(jié)果渲染并輸出到fbo,則泄漏擴(kuò)散體數(shù)據(jù)的頂點(diǎn)光線透射率作為新的三維紋理被寫(xiě)入紋理緩存。

      本發(fā)明進(jìn)一步提出,為了實(shí)現(xiàn)基于三維球面的可視化,在片段著色器中,頂點(diǎn)向光源發(fā)出的射線是在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)以一定的步長(zhǎng)進(jìn)行空間點(diǎn)采樣。由于是在擴(kuò)大之后的包圍盒內(nèi)采樣,因此需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi)。將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84坐標(biāo)系:若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),否則,放棄該采樣點(diǎn)。若采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),則將采樣點(diǎn)轉(zhuǎn)換到擴(kuò)散坐標(biāo)系,再?gòu)臄U(kuò)散坐標(biāo)系轉(zhuǎn)換到體素坐標(biāo)系,繼而映射得到該采樣點(diǎn)的三維紋理坐標(biāo),在紋理坐標(biāo)處對(duì)三維紋理采樣。

      實(shí)施例的步驟6中,再次繪制一個(gè)m×n×l大小的長(zhǎng)方體作為紋理映射的對(duì)象,長(zhǎng)方體在體素坐標(biāo)系中的頂點(diǎn)坐標(biāo)為(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),對(duì)應(yīng)于三維紋理坐標(biāo)(0,0,0)、(1,0,0)、(1,1,0)、(0,1,0)、(0,0,1)、(1,0,1)、(1,1,1)、(0,1,1)。將三維紋理texture1映射到長(zhǎng)方體。利用glsl著色語(yǔ)言編寫(xiě)針對(duì)一個(gè)紋理元的計(jì)算頂點(diǎn)光照透射率的通用算法。

      在頂點(diǎn)著色器中,輸入變量為頂點(diǎn)坐標(biāo)gl_vertex、頂點(diǎn)對(duì)應(yīng)的三維紋理坐標(biāo)gl_texcoord、光源的世界坐標(biāo)lightworld和世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒。對(duì)gl_vertex執(zhí)行模型視圖變換、投影變換、視口變換后,轉(zhuǎn)換成了屏幕坐標(biāo)gl_position。進(jìn)行投影變換時(shí)以xoy平面為投影平面,使用正對(duì)投影平面的正交投影,進(jìn)行視口變換時(shí)定義了一個(gè)m×n大小的視口,以保證投影過(guò)程中像素的大小和位置保持不變且像素?cái)?shù)據(jù)不會(huì)丟失。頂點(diǎn)著色器的輸出變量為屏幕坐標(biāo)gl_position、紋理坐標(biāo)gl_texcoord、光源的世界坐標(biāo)lightworld和世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒。頂點(diǎn)變換后的長(zhǎng)方體經(jīng)光柵化后得到m×n×l個(gè)片元,每個(gè)片元對(duì)應(yīng)一個(gè)三維紋理坐標(biāo)gl_texcoord。

      在片段著色器中,輸入變量為紋理坐標(biāo)gl_texcoord、光源的世界坐標(biāo)lightworld和世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒,將紋理坐標(biāo)gl_texcoord(u,v,w)映射到擴(kuò)散坐標(biāo)系中的空間坐標(biāo)(u×(m-1)×deltax+minx,v×(n-1)×deltay-ry,w×(l-1)×deltaz),再?gòu)臄U(kuò)散坐標(biāo)系轉(zhuǎn)換到wgs84坐標(biāo)系、從wgs84坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系中,得到該紋理元的世界坐標(biāo)vertexworld,由vertexworld和lightworld可得到光線的方向?yàn)椋?/p>

      dir=lightworld-vertexworld

      求出光線與世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒相交的入點(diǎn)start和出點(diǎn)end。本步驟中光線的入點(diǎn)start即為頂點(diǎn)vertexworld。從vertexworld開(kāi)始,在世界坐標(biāo)系中以間距step=0.1沿著光線方向dir采樣,每次得到的采樣點(diǎn)為:

      pos=vertexworld+dir×(pos+step)

      將采樣點(diǎn)pos依次存儲(chǔ)到數(shù)組points中,直到出點(diǎn)end。遍歷數(shù)組points來(lái)累積計(jì)算頂點(diǎn)的透射率。由于世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒是擴(kuò)大之后的包圍盒,因此需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi)。將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84球坐標(biāo)系:若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并且大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),將其映射為三維紋理坐標(biāo)(u,v,w);否則,放棄該采樣點(diǎn)。在紋理坐標(biāo)(u,v,w)處對(duì)三維紋理texture1采樣得到r通道值(即濃度c),利用光線透射率計(jì)算公式:

      transmittance=transmittance×exp(-ε×step×c)(ε為常數(shù))

      累積得到頂點(diǎn)的透射率transmittance,并將transmittance存儲(chǔ)為gl_fragcolor的r通道值。片段著色器的輸出變量為gl_fragcolor。

      將texture2關(guān)聯(lián)到fbo,把計(jì)算結(jié)果渲染并輸出到fbo,則光線透射率體數(shù)據(jù)作為三維紋理texture2被寫(xiě)入紋理緩存,然后將texture2與fbo分離;

      具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行設(shè)置采樣間距step。

      步驟7,針對(duì)擴(kuò)散時(shí)刻t,最后繪制一個(gè)屏幕大小的矩形,通過(guò)紋理映射功能,將等大的二維紋理對(duì)象映射到矩形,通過(guò)gpgpu技術(shù),在頂點(diǎn)著色器中實(shí)現(xiàn)矩形頂點(diǎn)的坐標(biāo)轉(zhuǎn)換,在片段著色器中由視點(diǎn)向屏幕像素點(diǎn)發(fā)出的射線在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)以一定的步長(zhǎng)進(jìn)行空間點(diǎn)采樣,結(jié)合對(duì)步驟5和步驟6中三維紋理的采樣,實(shí)現(xiàn)屏幕像素點(diǎn)顏色值的計(jì)算,最終將矩形輸出至屏幕,實(shí)現(xiàn)了t時(shí)刻天然氣泄漏擴(kuò)散范圍的三維可視化;

      本發(fā)明進(jìn)一步提出:為了實(shí)現(xiàn)基于三維球面的可視化,在片段著色器中,由視點(diǎn)向屏幕像素點(diǎn)發(fā)出的射線是在世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒內(nèi)以一定的步長(zhǎng)進(jìn)行空間點(diǎn)采樣,由于是在擴(kuò)大之后的包圍盒內(nèi)采樣,因此需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi)。將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84球坐標(biāo)系:若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),否則,放棄該采樣點(diǎn)。若采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),則將采樣點(diǎn)轉(zhuǎn)換到擴(kuò)散坐標(biāo)系,再?gòu)臄U(kuò)散坐標(biāo)系轉(zhuǎn)換到體素坐標(biāo)系,繼而映射得到該采樣點(diǎn)的三維紋理坐標(biāo),在紋理坐標(biāo)處對(duì)三維紋理采樣。

      實(shí)施例的步驟7中,最后繪制一個(gè)resolx×resoly大小的矩形(resolx×resoly為屏幕分辨率)作為紋理映射的對(duì)象,矩形的四個(gè)頂點(diǎn)為(0,0)、(resolx-1,0)、(resolx-1,resoly-1)、(0,resoly),分別對(duì)應(yīng)二維紋理坐標(biāo)(0,0)、(1,0)、(1,1)、(0,1)。將二維紋理texture3映射到矩形。利用glsl著色語(yǔ)言編寫(xiě)針對(duì)一個(gè)紋理元的計(jì)算屏幕像素顏色值的通用算法。

      在頂點(diǎn)著色器中,輸入變量為矩形頂點(diǎn)坐標(biāo)gl_vertex、頂點(diǎn)對(duì)應(yīng)的二維紋理坐標(biāo)gl_texcoord、視點(diǎn)的世界坐標(biāo)eyeworld和世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒。gl_vertex經(jīng)過(guò)模型視圖變換、投影變換、視口變換后,轉(zhuǎn)換成了屏幕坐標(biāo)gl_position。進(jìn)行投影變換時(shí)以xoy平面為投影平面,使用正對(duì)投影平面的正交投影,進(jìn)行視口變換時(shí)定義了一個(gè)resolx×resoly大小的視口,以保證投影過(guò)程中像素的大小和位置保持不變且像素?cái)?shù)據(jù)不會(huì)丟失。頂點(diǎn)著色器的輸出變量為屏幕坐標(biāo)gl_position、紋理坐標(biāo)gl_texcoord、視點(diǎn)的世界坐標(biāo)eyeworld和世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒。頂點(diǎn)變換后的矩形經(jīng)光柵化后得到resolx×resoly個(gè)片元,每個(gè)片元對(duì)應(yīng)一個(gè)屏幕坐標(biāo)gl_position和紋理坐標(biāo)gl_texcoord。

      在片段著色器中,輸入變量為屏幕坐標(biāo)gl_position、紋理坐標(biāo)gl_texcoord、視點(diǎn)的世界坐標(biāo)eyeworld和世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒。由視點(diǎn)的世界坐標(biāo)eyeworld可以得到屏幕中心點(diǎn)的世界坐標(biāo),繼而得到屏幕坐標(biāo)gl_position處的世界坐標(biāo)screenworld。通過(guò)eyeworld和screenworld可確定光線的方向?yàn)椋?/p>

      dir=screenworld‐eyeworld

      如果光線與世界坐標(biāo)系中擴(kuò)大后的泄漏擴(kuò)散范圍體包圍盒不相交,則放棄這條光線,屏幕像素的顏色值為背景顏色值bcolor;如果相交則求出兩個(gè)交點(diǎn)start、end,從start開(kāi)始,以間距step=0.1沿著光線方向dir采樣,每次得到的采樣點(diǎn)為:

      pos=start+dir×(pos+step)

      將采樣點(diǎn)pos依次存儲(chǔ)到數(shù)組points中,直到end。遍歷數(shù)組points來(lái)累積計(jì)算屏幕像素點(diǎn)的顏色值。初始化透明度opacity=1,顏色值rgb的計(jì)算公式為:

      rgb=pcolor×lcolor

      pcolor為采樣點(diǎn)顏色值,初始化為(1,1,1),lcolor為光照顏色值,初始化為(1,1,1)。由于世界坐標(biāo)系中泄漏擴(kuò)散范圍的體包圍盒是擴(kuò)大之后的包圍盒,因此需要判斷采樣點(diǎn)是否位于泄露擴(kuò)散范圍內(nèi)。將采樣點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到wgs84球坐標(biāo)系:若采樣點(diǎn)的高程小于rz對(duì)應(yīng)的高程并且大于0,則采樣點(diǎn)位于泄漏擴(kuò)散范圍內(nèi),將其映射為三維紋理坐標(biāo)(u,v,w);否則,放棄該采樣點(diǎn)。在紋理坐標(biāo)(u,v,w)處分別對(duì)三維紋理texture1采樣得到r通道值(即濃度c)、對(duì)三維紋理texture2采樣得到r通道值(即光照透射率transmittance),利用:

      t=exp(-ε×step×c)(ε為常數(shù))

      opacity=opacity×t

      累積得到屏幕像素發(fā)出的光線的透明度opacity,直到opacity接近0或者到達(dá)end。利用:

      累積得到光線上的顏色值color,利用:

      pixel=color+opacity×bcolor

      得到屏幕像素的顏色值pixel。停止使用fbo,則最終texture3渲染到幀緩存,實(shí)現(xiàn)體繪制。

      具體實(shí)施時(shí),可以根據(jù)實(shí)際情況自行設(shè)置采樣點(diǎn)顏色值plocor和光照顏色值lcolor。

      步驟5、步驟6和步驟7中,通過(guò)連續(xù)的三次繪制過(guò)程實(shí)現(xiàn)了擴(kuò)散濃度數(shù)據(jù)生成和可視化的一體化。

      實(shí)施例以時(shí)間間隔deltat重復(fù)上述過(guò)程,實(shí)現(xiàn)天然氣泄漏擴(kuò)散范圍的動(dòng)態(tài)可視化。當(dāng)天然氣泄漏擴(kuò)散動(dòng)態(tài)可視化模擬結(jié)束時(shí),刪除pbo0、pbo1和fbo,刪除紋理對(duì)象texture0、texture1、texture2、texture3。

      通過(guò)以上具體實(shí)施可以看出,通過(guò)gpgpu技術(shù)來(lái)實(shí)現(xiàn)濃度值體數(shù)據(jù)和頂點(diǎn)光照透射率體數(shù)據(jù)的通用計(jì)算,然后通過(guò)采樣三維紋理完成屏幕像素點(diǎn)顏色值的計(jì)算,雖然在渲染時(shí)需要自定義著色過(guò)程而且算法復(fù)雜度上有一定的增加,但是使用了pbo、多尺度采樣等優(yōu)化策略和fbo技術(shù),并且考慮了三維球面的影響,能夠?qū)崿F(xiàn)天然氣泄漏擴(kuò)散條件下擴(kuò)散濃度數(shù)據(jù)生成和基于球面的動(dòng)態(tài)可視化的一體化并且展示了天然氣泄漏擴(kuò)散過(guò)程中濃度分布的全貌和細(xì)節(jié)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1