侯曉麗
摘要:為了將抽象的三維時變流場的運動數(shù)據(jù)以直觀的圖形圖像顯示出來,采用三維線積分卷積(3D LIC)算法與直接體渲染(DVR)技術(shù)相結(jié)合的方法對流場數(shù)據(jù)進行可視化。沿著每一點的流線方向,從正、反兩個方向?qū)Π自肼暭y理進行卷積,然后使用直接體渲染技術(shù)對卷積結(jié)果進行渲染輸出。為提高計算效率,算法引入了并行處理機制,使用GPU對大規(guī)模計算進行加速。實驗結(jié)果表明,該方法能夠得到包含豐富信息的三維圖像,從而展現(xiàn)出由流場運動引起的長期行為。
關(guān)鍵詞:流場;可視化;3D LIC;直接體渲染;GPU;并行計算
中圖分類號:TP391.4 文獻標(biāo)識碼:B 文章編號:1006-8228(2020)07-86-04
0引言
流場可視化是科學(xué)計算可視化中最具有挑戰(zhàn)性的研究課題之一。它用直觀的圖形圖像來顯示流場的運動,透過抽象的數(shù)據(jù)有效觀察其內(nèi)涵本質(zhì)和變化規(guī)律,已經(jīng)被廣泛應(yīng)用于計算流體力學(xué),航空動力學(xué),大氣物理和氣象分析等領(lǐng)域。三維流場中的矢量不僅有大小,而且有方向,如何在二維屏幕上表示出三維方向的信息,一直是困擾人們的一個難題。對流場進行可視化時,可見性通常需要為完整性讓步,如何恰當(dāng)?shù)匿秩境蔀橐粋€重要的課題。而且,在三維時變流場中,與流動有關(guān)的物理量(如流速,壓力,密度等)隨時間而改變,時變場中發(fā)生的現(xiàn)象在大多數(shù)情況下難以用解析形式進行描述和分析。因此,用可視化的手段觀察和研究這類復(fù)雜的流場中的不穩(wěn)定結(jié)構(gòu)就具有重要和現(xiàn)實的意義。
在以往的研究中,schulz等人在三維汽車模擬數(shù)據(jù)中,對二維切片上的標(biāo)量進行顏色編碼。他們引入了一種交互式切片探測技術(shù),將矢量場數(shù)據(jù)映射到不同的色調(diào)。直接體渲染(DVR)也是解決遮擋和雜亂問題的重要方法。Ono等人使用直接體積渲染來可視化汽車乘客艙中的熱流。他們的目標(biāo)是通過模擬獲得預(yù)測汽車座艙熱特性的能力。將矢量映射為箭頭也是一種常用的直接可視化技術(shù),Treinish等人使用箭頭對天氣信息進行了有效的可視化。Van Wiik等人提出了一種點噪聲方法,通過在網(wǎng)格上分布一組強度函數(shù)或斑點來生成紋理,每個點代表一個在時間上移動一小步的粒子,從而生成從種子點出發(fā)的流向條紋,但是紋理中缺少速度大小的信息。線積分卷積(LIc),首次由Cabral和Leedom引入,是一種非常流行的技術(shù)。LIC的原始方法是在笛卡爾網(wǎng)格上輸入一個向量場和一個相同大小的白噪聲紋理。噪聲紋理沿著流線路徑進行平滑的局部過濾,以獲得流場的密集可視化效果。然而,將LIC擴展到三維流場后,遮擋和交互性是非常重要的挑戰(zhàn)。
本文采用線積分卷積(LIC)算法與直接體渲染技術(shù)(DVR)相結(jié)合,對流場的整體數(shù)據(jù)進行可視化。首先使用白噪聲紋理對網(wǎng)格點進行初始化,然后沿著每一點的流線方向從正反兩個方向進行卷積。為求得每一點的精確速度,使用龍格一庫塔求解微分方程,根據(jù)積分結(jié)果計算網(wǎng)格點的顏色和強度。使用直接體渲染(DVR)技術(shù)對LIC計算結(jié)果進行渲染輸出。沿視線方向?qū)w進行切片,然后沿著觀察光線方向?qū)w數(shù)據(jù)進行采樣并對顏色和透明度進行累積,生成結(jié)果圖像。體渲染生成的圖像不僅可以顯示模型的表面數(shù)據(jù),還可以顯示模型中包含的復(fù)雜細節(jié)呈現(xiàn)給用戶豐富的信息,為研究人員觀察數(shù)據(jù)中包含的信息提供了有效的幫助。
1三維線積分卷積(3D LIC)
在三維時變流場中,流場的特性隨時間變化而變化,且三維數(shù)據(jù)一般都具有較高的數(shù)據(jù)量,運算相當(dāng)密集,為可視化帶來難度和挑戰(zhàn)性,線積分卷積LIC(Line integral convolution)是流場可視化的一個強有力的工具,它將流場的運動以直觀圖像的方式顯示出來,幫助人們解釋和理解抽象的科學(xué)數(shù)據(jù)中包含的內(nèi)涵本質(zhì)和變化規(guī)律,借助于當(dāng)今GPU硬件的強大性能,三維LIC計算可以高效的完成。
1.1 3D LIC的基本思想
LIC算法是由Cabral和Leedom提出來的,用卷積來表示流場的方向源于一種運動模糊的思想。它是基于三維矢量方向的相關(guān)性來對噪聲紋理進行低通濾波,線積分卷積是針對三維白噪聲紋理沿矢量方向進行卷積,低通濾波是沿著三維流線方向進行的,從而得到輸出圖像。該算法具有通用性,可以獨立于任何預(yù)定義的幾何體或紋理,因此能夠成像任意二維和三維的向量場,產(chǎn)生豐富的信息和引人注目的圖像。同時,它的局部一維性質(zhì)有助于高度并行,使其具有高效和簡潔的特點。
3D LIC的基本思想是:首先將三維流場數(shù)據(jù)中的各網(wǎng)格點初始化為白噪聲紋理,然后針對三維流場中每一個體素,沿著矢量從正反兩個方向進行對稱積分,從而得到流線,在卷積過程中,流線上所有的體素對應(yīng)的輸入白噪聲值,都將按照卷積核參與卷積,將卷積的結(jié)果存儲為輸出紋理的值。
在輸出紋理中,對于任一體素c,以c為中心沿正反方向出發(fā),分別進行對稱的線積分,可以得到流線X(s)。c點的輸出紋理值為:
其中-L<=s<=L,L為正、反方向的流線長度,K(s)為線積分卷積的卷積核,用于表示流線上的各個點與P的相關(guān)性,T為輸入的白噪聲紋理,T(入(s))為流線上各個點對應(yīng)的白噪聲紋理的數(shù)值。對輸出圖像的每個體素,LIC都要計算流線,然后用式[1)計算,得到該點的紋理值。
1.2離散時變流場中的LIG計算
(1)離散uC計算公式
三維離散數(shù)據(jù)存儲在均勻的三維網(wǎng)格中,如果采用盒式卷積核函數(shù)計算,則式(1)的離散形式為式(2):
1.3并行計算
本文采用GPU對算法中最耗時的大規(guī)模計算(例如線積分卷積,散度,旋度,流線)進行加速,CUDA是由英韋達(NVIDIA)公司提出的一種并行計算架構(gòu),CUDA的含義是統(tǒng)一計算設(shè)備架構(gòu)(Compute UnifiedDevice Architecture)。它結(jié)合了CPU和GPU的優(yōu)點,主要用來處理密集型及并行計算。
由于CPU中的數(shù)據(jù)建立在三維網(wǎng)格上,所以本文在GPU中采用三維的Grid和Block。首先在CPU內(nèi)存中為數(shù)據(jù)分配空間并初始化,然后使用cudaMemcpy()函數(shù)將數(shù)據(jù)拷貝到GPU內(nèi)存中,在CUDA中調(diào)用核函數(shù)完成相應(yīng)計算后,仍然使用cudaMemcpy()函數(shù)將數(shù)據(jù)拷貝到CPU內(nèi)存中。CUDA和OpenGL之間的數(shù)據(jù)傳輸,則通過OpenGL將Buffer對象注冊到CUDA中去,供CUDA讀寫操作,然后再在OpenGL中使用。
2直接體渲染(DVR)
在龍格一庫塔公式和三線性插值的基礎(chǔ)上,計算出LIC的積分值之后,我們使用直接體渲染(DVR)技術(shù)輸出圖像,輸出的圖像是通過沿著觀察光線對體數(shù)據(jù)進行采樣并累積產(chǎn)生的光學(xué)特性來創(chuàng)建的,本文使用的光學(xué)特性包括顏色和透明度,是由轉(zhuǎn)移函數(shù)來計算的。在渲染階段,代理幾何在幾何著色器中計算,代理幾何體被光柵化之后,按照從后往前的順序?qū)⒐鈱W(xué)屬性迭代累加到幀緩沖區(qū)中,從而得到包含豐富信息的令人注目的三維圖像。
2.1離散的體渲染方程
本文根據(jù)式3-8計算累積顏色和不透明度,其中ci和Ai是體素i的顏色和不透明度,是由轉(zhuǎn)移函數(shù)分配的數(shù)據(jù)值。
在式(6)中,不透明度Ai近似描述光的吸收,以不透明度為權(quán)值的顏色ci近似描述樣本點i和i+1之間沿光線段的發(fā)射和吸收。對于顏色分量,總和中的乘積表示樣本點i發(fā)射的光線在到達眼睛之前衰減的量,沿觀察光線對樣本進行排序并迭代計算累積的顏色c和不透明度A,可以有效地計算該公式。
2.2代理幾何
本文采用基于視點的體渲染技術(shù),沿著垂直于視線的方向?qū)缀误w切成多個代理幾何,如圖l所示。
圖1中顯示了三個沿著視線方向切好的幾何片元,ci(i=1,2,3)式每個切片多邊形的形心。在幾何著色器中,本文通過使用模型視圖矩陣在對象坐標(biāo)系和視圖坐標(biāo)系之間轉(zhuǎn)換頂點來計算視圖空間中的代理幾何體。代理多邊形被細分為三角形,生成的頂點存儲在頂點數(shù)組中,以提高渲染效率。
2.3合成圖像
在本文的實現(xiàn)中,將每一次切片后的代理幾何進行光柵化,使用每個點的紋理坐標(biāo)經(jīng)過三線性插值來索引體數(shù)據(jù),經(jīng)過查找轉(zhuǎn)移函數(shù),得到每個點的顏色和透明度,將結(jié)果存儲在一個幀緩存中,使用兩個幀緩存迭代按照從后向前的順序使用式8進行顏色累積和透明度求和:
其中ci和Ai是從片段著色階段獲得的沿視線方向的片段i的顏色和不透明度,e是從后面累積的顏色。
圖2是三維時變流場數(shù)據(jù)經(jīng)過3D LIC計算,由直接體渲染輸出的結(jié)果圖像。
3實驗結(jié)果與分析
LIC圖像不僅可以顯示流場的表面,還可以顯示流場中包含的復(fù)雜細節(jié),與直接體渲染技術(shù)(DVR)相結(jié)合可以展現(xiàn)出流場的全貌,并且對不同流場、不同時刻的三維時變流場均能生成高效、直觀的三維圖像,具有較高的魯棒性。
計算出網(wǎng)格點的LIC值之后,可以根據(jù)用戶的需求,對速度較大的區(qū)域進行追蹤顯示,圖3是選擇速度模的積分歸一化后大于0.75的區(qū)域進行追蹤顯示:
4結(jié)束語
本文使用三維線積分卷積算法與直接體渲染技術(shù)相結(jié)合對流場數(shù)據(jù)進行可視化,既能表現(xiàn)出流場的方向信息,又能體現(xiàn)出流場運動的速度信息,而且直接體渲染技術(shù)能夠增強內(nèi)部點的可見性,呈現(xiàn)給用戶具有豐富信息的引人注目的三維圖像。
在以后的工作中,還需優(yōu)化和完善以下工作:
(1)進一步完善3D LIC和直接體渲染的算法,采用分布式并行計算,提高程序計算效率和渲染速度;
(2)通過特征可視化展現(xiàn)出流場內(nèi)部的拓撲結(jié)構(gòu)。