基于gpu的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息技術(shù)和海洋技術(shù)領(lǐng)域,尤其涉及基于GPU的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法。
【背景技術(shù)】
[0002]流場(chǎng)可視化是可視化研宄的一個(gè)重要方向,在科學(xué)計(jì)算和工程分析中占據(jù)著非常重要的地位,其對(duì)海洋的科學(xué)研宄與分析也具有十分重要的意義和價(jià)值。
[0003]在交互性流場(chǎng)可視化中,對(duì)流線的積分以及可視化從開始就已經(jīng)成為一種標(biāo)準(zhǔn)工具。在時(shí)變流場(chǎng)中,因?yàn)檑E線和脈線能夠反映出流場(chǎng)的重要特征已經(jīng)成為了研宄的關(guān)注點(diǎn)。跡線可以表現(xiàn)流體質(zhì)點(diǎn)的運(yùn)動(dòng)軌跡,脈線可以表現(xiàn)某指定時(shí)刻所有那些曾經(jīng)過(guò)某定點(diǎn)的流體質(zhì)點(diǎn)所組成的曲線。
[0004]在流線可視化的基礎(chǔ)上,積分曲面的可視化也已經(jīng)證實(shí)了其有效性。流面以及軌跡面的的構(gòu)建是易于理解的,主要思想就是對(duì)面最前的線進(jìn)行積分,并且會(huì)在適當(dāng)?shù)臅r(shí)候進(jìn)行對(duì)線的自適應(yīng)的精細(xì)或粗化。隨著線的生長(zhǎng),產(chǎn)生的面并不會(huì)產(chǎn)生變化。而脈面可視化卻要復(fù)雜許多,每一個(gè)時(shí)間幀都要對(duì)流場(chǎng)所有數(shù)據(jù)進(jìn)行重新計(jì)算繪制,這對(duì)于算法以及計(jì)算機(jī)性能有了很大要求。
[0005]在計(jì)算機(jī)輔助的流場(chǎng)可視化領(lǐng)域,幾種不同的可視化方法也存在著類比,但是脈面可視化也因?yàn)樗?jì)算的復(fù)雜性,很少被海洋流場(chǎng)可視化所應(yīng)用。脈面可視化可能會(huì)在任何地方改變形狀,并且每個(gè)空間點(diǎn),每個(gè)時(shí)刻都在進(jìn)行著積分運(yùn)算,脈面的每個(gè)部分在每個(gè)時(shí)間都在進(jìn)行粗化或細(xì)分策略的執(zhí)行。這在一方面可能會(huì)受計(jì)算機(jī)運(yùn)算效率的限制,另一方面可能會(huì)對(duì)數(shù)據(jù)進(jìn)行一定限制。
[0006]國(guó)內(nèi)外在脈面的可視化方面也做了許多相關(guān)的研宄,并且分別在CPU上或者GPU上進(jìn)行脈面可視化的實(shí)現(xiàn),但是針對(duì)海洋三維流場(chǎng)可視化的應(yīng)用并沒(méi)有相關(guān)實(shí)際使用及實(shí)現(xiàn),并且也沒(méi)有針對(duì)海洋數(shù)據(jù)的特點(diǎn)進(jìn)行相關(guān)的實(shí)驗(yàn)及進(jìn)展,而脈面可視化卻有對(duì)海洋科研人員進(jìn)行海洋數(shù)據(jù)的處理以及更深入了的理解有巨大的幫助。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供一種基于GPU的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法。其在海洋三維矢量場(chǎng)進(jìn)行脈面可視化是完全基于GPU進(jìn)行可視化架構(gòu)的構(gòu)建,并且針對(duì)海洋z坐標(biāo)數(shù)據(jù)特點(diǎn)進(jìn)行在GPU中的數(shù)據(jù)處理,本方案最終形成原型驗(yàn)證系統(tǒng)。
[0008]為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案,其包括以下步驟:
(1)基于GPU的海洋三維矢量場(chǎng)動(dòng)態(tài)脈面可視化架構(gòu)構(gòu)建;
(2)針對(duì)海洋矢量場(chǎng)Z坐標(biāo)數(shù)據(jù)進(jìn)行直接地可視化。
[0009]本發(fā)明旨在研宄基于GPU的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法。
[0010]本發(fā)明的設(shè)計(jì)思路是:建立基于GPU的海洋三維矢量場(chǎng)動(dòng)態(tài)脈面可視化架構(gòu),將三維流場(chǎng)數(shù)據(jù)以紋理的方式存儲(chǔ)在GPU中,并且在GPU中的Geometry Shader (幾何元著色器)中進(jìn)行細(xì)化或粗化策略的執(zhí)行,在Vertex Shader (頂點(diǎn)著色器)中進(jìn)行粒子的積分,通過(guò)GPU的ping-pong Fash1n特性進(jìn)行粒子的不斷驅(qū)動(dòng)。
[0011 ] 所述步驟(I)中,針對(duì)海洋數(shù)據(jù)的特點(diǎn),海洋三維矢量場(chǎng)數(shù)據(jù)以三維紋理的方式存儲(chǔ)在GPU中,并提前存儲(chǔ)tl,t2兩個(gè)時(shí)間點(diǎn)的數(shù)據(jù)在GPU,CPU中用來(lái)進(jìn)行多個(gè)時(shí)間點(diǎn)矢量場(chǎng)數(shù)據(jù)的保存并可以根據(jù)時(shí)間t進(jìn)行與GPU之間數(shù)據(jù)的交換,同時(shí),CPU中也可以通過(guò)文件讀取的方式進(jìn)行CPU中數(shù)據(jù)的交換。
[0012]所述步驟(2)中,針對(duì)海洋Z坐標(biāo)數(shù)據(jù)的特點(diǎn),將海洋變量場(chǎng)數(shù)據(jù)存儲(chǔ)于三維紋理中,并在GPU中通過(guò)對(duì)同一張紋理采樣多次將不同深度的數(shù)據(jù)進(jìn)行插值,采樣成均勻的等深的三維矢量場(chǎng)數(shù)據(jù),以此進(jìn)行三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化。
[0013]本發(fā)明的創(chuàng)新之處主要體現(xiàn)在:
(1)進(jìn)行了針對(duì)海洋Z坐標(biāo)數(shù)據(jù)特點(diǎn)的,基于GPU的脈面可視化的架構(gòu)的搭建;
(2)針對(duì)海洋矢量場(chǎng)Z坐標(biāo)數(shù)據(jù),通過(guò)將數(shù)據(jù)傳輸?shù)紾PU中,在GPU中進(jìn)行數(shù)據(jù)的處理,將數(shù)據(jù)處理成均勻等深的數(shù)據(jù),以此在構(gòu)建好的可視化架構(gòu)基礎(chǔ)上進(jìn)行三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化。
[0014]本發(fā)明的有益效果在于:使用力學(xué)中脈線發(fā)展出來(lái)的脈面來(lái)進(jìn)行海洋三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化,以一種新的海洋流場(chǎng)可視化方法來(lái)幫助海洋科研工作者進(jìn)行相關(guān)的科研活動(dòng)。
【具體實(shí)施方式】
[0015]本發(fā)明的基于GPU的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法,包括以下步驟:
(I)基于GPU的海洋三維矢量場(chǎng)動(dòng)態(tài)脈面可視化架構(gòu)構(gòu)建。
[0016]每個(gè)表面塊是由四個(gè)頂點(diǎn)組成,并且還存儲(chǔ)兩個(gè)值,一個(gè)計(jì)算積分步的值,一個(gè)計(jì)算細(xì)化深度的值來(lái)表示。這些數(shù)據(jù)都在頂點(diǎn)數(shù)組緩存中存在一個(gè)連續(xù)的數(shù)據(jù)塊中。因?yàn)镚PU中不是動(dòng)態(tài)實(shí)時(shí)的改變存儲(chǔ)在其中數(shù)據(jù)的大小,因此對(duì)于粒子的數(shù)據(jù)需要提前申請(qǐng)好,這對(duì)表現(xiàn)數(shù)據(jù)的大小及范圍就有了一定的限制。通過(guò)用戶選擇表面塊的數(shù)據(jù)n,最大細(xì)化深度n,還有最大積分步m,緩存申請(qǐng)的存儲(chǔ)表面塊的數(shù)目是nX 2dX (m-d+1 )。時(shí)間線為在同一時(shí)刻釋放的粒子。具體的算法流程如下。
[0017]1.時(shí)間線釋放,每條時(shí)間線是粒子的集合(xi, 0....,xi, η)。
[0018]2.將每條時(shí)間線計(jì)算成表面塊,每個(gè)表面塊由四個(gè)頂點(diǎn)組成,而且分開重復(fù)存儲(chǔ)。
[0019]3.首先存儲(chǔ)η個(gè)空的表面塊pO j (j= 0,U..n_l)o
[0020]4.每個(gè)時(shí)間步重復(fù)釋放新的表面塊到流水線中。
[0021]5.在積分前,會(huì)進(jìn)行細(xì)化策略。會(huì)判斷是否分成兩個(gè)表面塊。設(shè)定一個(gè)閾值s2,s是兩相鄰粒子的距離,當(dāng)一個(gè)表面塊的面積大于a s2時(shí),就將表面塊的最長(zhǎng)邊與最短邊從中點(diǎn)相連進(jìn)行細(xì)分。其中α是一個(gè)大于I的數(shù)用來(lái)控制細(xì)分程度。這樣兩個(gè)新的表面塊進(jìn)行存儲(chǔ),刪除原來(lái)的表面塊。
[0022]6.每個(gè)積分步,所有的緩存元素傳遞到Geometry Shader中然后按下面方法處理:傳遞前n/2個(gè)元素p0 j (j= 0,1,2…n/2-l),同時(shí)將pOj *2和p0 (j*2)+1放到輸出緩存中。剩下的每n/2個(gè)元素shader會(huì)添加2個(gè)塊元素到緩存中,來(lái)存儲(chǔ)存儲(chǔ)他們積分后的新位置。
[0023]7.粒子的積分采用四階龍格庫(kù)塔積分,并且通過(guò)GPU的ping-pong Fash1n進(jìn)行粒子的更新。
[0024](2)針對(duì)海洋矢量場(chǎng)Z坐標(biāo)數(shù)據(jù)進(jìn)行直接地可視化。
[0025]海洋Z坐標(biāo)數(shù)據(jù)為每層等深但層間間隔分布不均勻的數(shù)據(jù),在本算法中,針對(duì)此類數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)于三維紋理中,并在GPU中通過(guò)對(duì)同一張紋理采樣多次,每次采樣分別采樣其所在深度的相鄰兩層的深度值,并根據(jù)所需數(shù)據(jù)的深度間隔進(jìn)行線性差值,以此進(jìn)行三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化。
【主權(quán)項(xiàng)】
1.基于GPU的海洋三維矢量場(chǎng)脈面動(dòng)態(tài)可視化算法,其特征在于,包括以下設(shè)計(jì)思路: (1)基于GPU的海洋三維矢量場(chǎng)脈面動(dòng)態(tài)可視化架構(gòu)構(gòu)建; (2)針對(duì)海洋矢量場(chǎng)z坐標(biāo)數(shù)據(jù)進(jìn)行直接地可視化。
2.根據(jù)權(quán)利要求1所述的基于GPU的海洋三維矢量場(chǎng)脈面動(dòng)態(tài)可視化算法,其特征在于,所述步驟(I)中,針對(duì)海洋數(shù)據(jù)的特點(diǎn),海洋三維矢量場(chǎng)數(shù)據(jù)以三維紋理的方式存儲(chǔ)在GPU中,并提前存儲(chǔ)tl,t2兩個(gè)時(shí)間點(diǎn)的數(shù)據(jù)在GPU,CPU中用來(lái)進(jìn)行多個(gè)時(shí)間點(diǎn)矢量場(chǎng)數(shù)據(jù)的保存并可以根據(jù)時(shí)間t進(jìn)行與GPU之間數(shù)據(jù)的交換,同時(shí),CPU中也可以通過(guò)文件讀取的方式進(jìn)行CPU中數(shù)據(jù)的交換。
3.根據(jù)權(quán)利要求1所述的基于GPU的海洋三維矢量場(chǎng)脈面動(dòng)態(tài)可視化算法,其特征在于,所述步驟(2 )中,針對(duì)海洋Z坐標(biāo)數(shù)據(jù)的特點(diǎn),將海洋變量場(chǎng)數(shù)據(jù)存儲(chǔ)于三維紋理中,并在GPU中通過(guò)對(duì)紋理進(jìn)行采樣,并將數(shù)據(jù)進(jìn)行線性插值,處理成均勻的等深的三維矢量場(chǎng)數(shù)據(jù),以此進(jìn)行三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化。
【專利摘要】本發(fā)明涉及一種基于GPU的三維海洋矢量場(chǎng)動(dòng)態(tài)脈面可視化算法。該算法針對(duì)海洋數(shù)據(jù)特點(diǎn),將海洋三維矢量場(chǎng)數(shù)據(jù)以三維紋理方式存儲(chǔ)在GPU中,利用ping-pong fashion驅(qū)動(dòng)矢量場(chǎng)中粒子流動(dòng),并結(jié)合GPU的geometry shader(幾何元著色器),進(jìn)行三維脈面的粒子間粗化及細(xì)化。針對(duì)海洋Z坐標(biāo)數(shù)據(jù)的特點(diǎn),在GPU中采樣成均勻的等深的三維矢量場(chǎng)數(shù)據(jù),以此進(jìn)行三維時(shí)變矢量場(chǎng)數(shù)據(jù)的可視化,輔助海洋科研人員進(jìn)行科學(xué)研究與分析。
【IPC分類】G06T17-00
【公開號(hào)】CN104732582
【申請(qǐng)?zhí)枴緾N201510066037
【發(fā)明人】田豐林, 陳戈, 韓勇, 劉帥
【申請(qǐng)人】中國(guó)海洋大學(xué)
【公開日】2015年6月24日
【申請(qǐng)日】2015年2月7日