国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FBO 的GPU 混合體繪制算法研究

2015-07-13 02:00劉思廷等
電腦知識與技術 2015年13期
關鍵詞:混合體屬性數(shù)據(jù)曲面

劉思廷等

摘要:體繪制是渲染三維數(shù)據(jù)場的重要技術,可以探索物體的內部結構,相對于面繪制和切片技術體繪制能夠更加形象地展示物體的內部形態(tài),描述非定形的物體。然而體繪制算法復雜度高,數(shù)據(jù)存儲量大,計算時間較長,為了能解決體繪制渲染效率問題,論文介紹了基于GPU加速的光線投射算法實時體繪制技術,并在此基礎上提出了基于FBO的快速混合體繪制算法,解決了體繪制圖形與常規(guī)圖元同屏繪制互相遮擋的問題,目前該方法已應用于三維地質解釋綜合成圖系統(tǒng)中,實現(xiàn)了三維屬性體與地層、斷層曲面同屏顯示,提高了解釋工作的質量和效率。

關鍵詞:GPU;混合體繪制;地質數(shù)據(jù)的體繪制;光線投射算法;幀緩存對象

中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2015)13-0223-04

Abstract:Volume rendering is a kind of important technology of 3D data volume rendering, which can display the internal structures and the shapes of the data cubes more vividly than the surface rendering and the technique for surface extraction from a volume. However, volume rendering algorithm have the characteristics of complexity, high data storage capacity and longer calculation, in order to solve the problem of volume rendering efficiency, the paper introduces the Ray-casting algorithm real-time volume rendering technology which is based on GPU acceleration, and puts forward a method of fast hybrid volume rendering based on FBO to solve the volume rendering graphics primitives to draw each other with conventional occlusion problems with the same screen. At present, this method has been applied to the three-dimensional geological interpretation of comprehensive mapping system, which realizes that the three-dimensional attribute body and stratigraphy, fault surface can be shown at the same time, and improves the quality and efficiency of the interpretation work.

Key words: GPU; volume rendering; hybrid volume rendering; the frame buffer object ; ray-casting algorithm

體繪制[1]是一種直接由三維數(shù)據(jù)場產(chǎn)生在屏幕上的顏色為人工指定的偽彩色的半透明圖像。體繪制的成像步驟是首先需要對數(shù)據(jù)進行分類處理,分別對不同的類別賦予不同的顏色和不透明度值,最后根據(jù)視點和體數(shù)據(jù)的相對位置決定最終效果。體繪制技術最大的特點是可以顯示物體的內部構造,解釋非定形的事物,如人體器官、煙、云等。目前在分子模型構造、氣象分析、及醫(yī)療等廣泛應用體繪制技術。但是在地質勘探領域,由于數(shù)據(jù)量巨大,計算復雜度高等問題,無法進行實時體繪制。所以在體繪制技術以前,都采用面繪制方法來顯示地質勘探領域中的速度、密度、電阻率等數(shù)據(jù)屬性體,如移動立方體或四面體算法等來展示屬性體的等值面,采用切片方法顯示屬性體內部構造。但隨著GPU的出現(xiàn),克服了無法進行實時繪制的缺點。體繪制技術可以將面繪制和切片方法的優(yōu)點結合起來,有效地提取和顯示用戶關心的地質異常體,半透明的展示異常體內部結構,對地質解釋工作具有重要意義。

雖然目前體繪制算法已經(jīng)比較成熟,但是應用到地質中解釋綜合成圖系統(tǒng)的還是很少,主要有兩方面的原因:(1)地質屬性體數(shù)據(jù)量巨大,常規(guī)的基于CPU的程序很難應付。(2)以前的體繪制方法研究往往只針對一個單一的屬性體,不能夠繪制其它常規(guī)圖元,而地質解釋工作中,除了利用體繪制提取和顯示異常體外還需要附加顯示一些地質層位或斷層,用于綜合對比分析。為了解決數(shù)據(jù)量大的問題,本文研究了基于GPU的并行體繪制方法,這大大提高了體繪制速度,使大規(guī)模地質屬性體數(shù)據(jù)繪制成為了現(xiàn)實;而為了解決體繪制和常規(guī)圖元同屏顯示的問題,本文又研究了基于OpenGL的混合體繪制技術,實現(xiàn)了體繪制屬性體與OpenGL基本圖元混合顯示的功能。

1 基于GPU的光線投射方法的應用

光線投射算法[2]是一種基于圖象空間掃描的一種典型的直接體繪制法。將用戶想要得到的區(qū)間數(shù)據(jù)可視化出來,用戶可以將不需要觀察的數(shù)據(jù)透明度設為0,著重顯示想要觀察的地方。比如醫(yī)療中顯示骨骼,皮膚等的效果。直接體繪制法是指通過給三維屬性體的體元賦予色彩和透明度,再由光線穿越半透明物體時能量聚集,進行色彩合成的成像過程。常見的其他的體繪制方法還有:足跡表法[3]、體元投射法[4]和基于錯切-變形技術的體繪制算法[5]。

由公式可見,在體繪制技術中,在計算屏幕每個像素點的顏色時,具有大量的數(shù)值計算和重復操作,如提取屬性數(shù)據(jù)體的數(shù)據(jù)和采樣點的顏色混合。若通過OpenGL把此類工作交由GPU處理可以很大的提高程序的對計算機硬件的利用效率和Ray-Casting算法的實用性。

GLSL[6]是一個在GPU上執(zhí)行的,以C語言為基礎的高階著色語言。它是由 OpenGL ARB 所建立,提供開發(fā)者對繪圖管線更多的直接控制,而無需使用匯編語言或硬件規(guī)格語言。GLSL的著色器代碼分成2個部分:Vertex Shader(頂點著色器)和Fragment(片斷著色器)。Vertex Shader把每個頂點在虛擬空間中的三維坐標變換為可以在屏幕上顯示的二維坐標,并帶有用于Z-Buffer的深度信息。Fragment Shader計算每個像素的顏色和其它屬性并輸出。在體繪制技術中,在計算屏幕每個像素點的顏色時,具有大量的數(shù)值計數(shù)和重復操作,如提取屬性數(shù)據(jù)體的數(shù)據(jù)和采樣點的顏色混合。如若通過OpenGL把此類工作交由GPU處理可以大的提高程序的對計算機硬件的利用效率和Ray-Casting算法的實用性。

使用GLSL和OpenGL實現(xiàn)實時體繪制技術的步驟如下:

(1)確定屬性數(shù)據(jù)體在進行了OpenGL矩陣變換[7]后在屏幕坐標系中的繪制范圍。

(2)上傳屬性數(shù)據(jù)體、顏色表、變換矩陣等體繪制算法所需的數(shù)據(jù)到GPU中。

(3)用GLSL實現(xiàn)Ray-Casting算法。

在確定屬性數(shù)據(jù)體在屏幕坐標系中的繪制范圍時,應該先確定當前OpenGL中的Mode-View矩陣M和Projection矩陣R,視口變換矩陣V。得出此三個矩陣后,分別用屬性數(shù)據(jù)體的八個頂點Pi(i=1,…,6,7,8)進行這三個矩陣的變換得出屏幕坐標點Psi(i=1,…,6,7,8),矩陣變換公式如下:

[Psi=Pi*M*R*V] (2)

最后取Psi(i=1,...,6,7,8)的最小值和最大值即可得出屏幕坐標系中的繪制范圍。

基于GPU的Ray-Casting算法流程如圖2所示:

1) 計算射線穿越的最大距離,即渲染正向面深度圖和背向面深度圖來作為循環(huán)采樣控制的依據(jù)。

2) 根據(jù)上傳到GPU的數(shù)據(jù)(屏幕坐標、變換矩陣、采樣距離等)確定采樣時的射線方向、采樣在射線方向的范圍和空間采樣間距。

3) 循環(huán)紋理采樣、合成;依次將每一個采樣點對應的顏色值進行混合,最后向OpenGL輸出累積混合顏色。在累積混合過程中,若輸出顏色的透明度已經(jīng)達到完全不透明(即數(shù)值為1.0),此累積混合過程也當結束。

在圖像合成的公式中可以看出,不透明α逐步增大,當α的值接近于1.0時,則該像素點已經(jīng)完全不透明,后面的像素點就可以不再計算。

光線投射算法這種體繪制技術相對面繪制技術在繪制數(shù)據(jù)體時更能直觀屬性數(shù)據(jù)體內部的情況。此體繪制技術在指定數(shù)據(jù)范圍的情況下繪制出了屬性數(shù)據(jù)體內部分布情況;同時對不同區(qū)間的數(shù)據(jù)進行疊加混合顯示,形成整個屬性數(shù)據(jù)體的透明分布。成像質量高,但是此算法計算量大,成像速度慢,因此在實現(xiàn)此技術時,使用GPU并行計算[8]極大的減少了算法處理的時間。內存:16GB;CPU: Intel(R)Core(TM) i7-4790k;顯卡:NVIDIA GeForce GTX 780;顯存:3GB;屏幕分辨率:1920*1080;表1為實驗統(tǒng)計結果:單位(ms)。

根據(jù)統(tǒng)計,使用GPU進行的體繪制算法要比使用CPU實現(xiàn)的算法快10倍以上,數(shù)據(jù)越大,GPU比CPU實現(xiàn)體繪制算法快的倍數(shù)越大。如圖3所示,是使用GPU進行的體繪制應用到三維地質解釋綜合成圖系統(tǒng)中得到的成果圖。

2 基于FBO的GPU混合體繪制技術

使用OpenGL和GLSL實現(xiàn)的基于GPU的光線投射算法直接體繪制技術能大幅度的提高繪制效率,但是這個技術卻不能解決體繪制圖形和OpenGL基本圖元的共同繪制。OpenGL基本圖元指在用OpenGL繪圖的過程中的點,直線,多邊形。如地質層面就是由無數(shù)的三角形這種OpenGL基本圖元構成的。如果使用了GLSL直接調用API繪制基本圖元,就會出現(xiàn)基本圖元與體繪制圖形的相互遮擋,達不到想要的效果。而產(chǎn)生這種現(xiàn)象的原因就是OpenGL的Shader具有默認的深度輸出,在OpenGL進行深度緩存消隱時就會出現(xiàn)體繪制圖形與其他圖元互相遮擋。如圖4所示:

針對這種情況,我提出了基于FBO的GPU混合體繪制算法,解決相互遮擋的問題。算法的基本原理是使用OpenGL進行兩次繪制,首先在緩存中繪制OpenGL基本圖元的深度和顏色信息;根據(jù)緩存中的深度和顏色信息再繪制圖形,繪制時一定要實現(xiàn)對基本圖元與體繪制的深度消影,解決遮擋問題。因為混合體繪制算法就是在直接體繪制的基礎上實現(xiàn)的,在顏色混合時根據(jù)緩存的深度信息進行特殊混合。在確定屏幕點P的繪制顏色時,原有算法只是簡單的累積P1Pn之間采樣點的顏色,沒有進行深度測試?;旌象w繪制算法可以使用OpenGL中的幀緩存技術[7]。通過具體的API調用,OpenGL可以把應當繪制到屏幕的內容(幀)繪制到GPU的緩存中,供其它程序使用。

當OpenGL將場景中的OpenGL基本圖元繪制到了幀緩存對象后,由幀緩存中保存的深度信息,將幀緩存的內容變換到模型坐標系中,我們可以得到一個基本圖元,這里假設我們得到的是一個三維曲面。現(xiàn)在整個模型坐標系中有兩個三維圖元,即體繪制數(shù)據(jù)體和三維曲面。設當前OpenGL中的Mode-View矩陣為M、Projection矩陣為R、視口變換矩陣為V。已知幀緩存中一點P(x,y,d),則將其變換到模型坐標系的公式為:

[p'=p*V*R*M] (5)

在模型坐標系中設置一個觀察點,從此觀察點向兩個模型發(fā)射一條射線,這條射線與模型的相加情況如下:

1) 與兩模型都不相交。

2) 只與曲面相交。

3) 只與數(shù)據(jù)體相交。

4) 先交于曲面后交于數(shù)據(jù)體。

5) 先交于數(shù)據(jù)體后交于曲面。

6) 射線在數(shù)據(jù)體之內相交于曲面。

當射線與兩模型都不相交時,屏幕點即為背景色。當射線只與數(shù)據(jù)體相交時,就直接采用基本的體繪制原理。當射線只與半透明曲面相交時,直接繪制OpenGL基本圖元即可。當既與體繪制數(shù)據(jù)體相交又與曲面相交時,則要采用混合體繪制算法。當射線與兩模型都相交時,如圖5為三種情況的算法原理圖。

結合基本體繪制算法,可以得出混合體繪制算法基本流程圖,如圖6所示。

圖7為基于GPU的混合體繪制算法應用到三維地質解釋綜合成圖系統(tǒng)中得到的成果圖,橫插入數(shù)據(jù)體的曲面將體繪制圖形分為上下兩部分,其中位于曲面上方部分的數(shù)據(jù)體被正確顯示出來,而位于下方的部分則被曲面遮擋而未被顯示,成果圖展現(xiàn)了使用OpenGL基本圖元繪制的曲面與同屏的GPU體繪制圖形具有正確的深度遮擋關系,證明使用上述方法可以有效解決OpenGL基本圖元與體繪制圖形同屏繪制的問題。

3 結語

體繪制是一種重要的三維數(shù)據(jù)場可視化算法,在體繪制技術以前,地質勘探領域,速度、密度、電阻率等數(shù)據(jù)屬性體一般采用面繪制方法來展示屬性體的等值面輪廓,采用切片方法顯示屬性體內部構造。但后來隨著體繪制的出現(xiàn),體繪制方法可以能夠更加形象地展示物體的內部形態(tài),解釋非定型的事物,然而體繪制算法復雜度高,數(shù)據(jù)存儲量大,計算時間較長,為了能解決體繪制渲染效率問題,論文提出了基于GPU的光線投射算法的應用,大幅度提高了體繪制的速度,使得該技術可以實現(xiàn)大規(guī)模地質屬性體的實時繪制。后又在直接體繪制的基礎上提出了基于FBO的GPU混合體繪制算法,解決體繪制圖形與OpenGL基本圖元深度不正確,同屏顯示相互遮擋的問題,實現(xiàn)了體繪制圖形與OpenGL基本圖元之間相互對比顯示。目前此技術已應用于三維地質解釋綜合成圖系統(tǒng)中,實現(xiàn)了三維屬性體與地層、斷層等結構面綜合對比顯示。通過在實際地質綜合解釋和評價系統(tǒng)項目中應用,說明了改進后的體繪制技術在正確顯示體繪制圖形與OpenGL基本圖元深度方面取得良好效果,同時此技術也可推廣到其它一些行業(yè)的應用軟件。

參考文獻:

[1] (美)EdwardAngel著,李桂瓊,張文祥譯.OpenGL程序設計指南[M]. 清華大學出版社, 2005.

[2] 康玉之.GPU編程與CG語言之陽春白雪下里巴人[K]. 半山工作室,2009:160-172.

[3] 郭濤, 平西建.基于OpenGL 的三維地形可視化技術研究[ J] .計算機工程與設計, 2008, 29(1):193-195.

[4] 唐澤圣, 等.三維數(shù)據(jù)場可視化[M].北京:清華大學出版社, 2000.

[5] Kruger J,Westermann R.Acceleration techniques for GPU-based

volume rendering[C].Proceedings of IEEE Visualization,Seattle,2003:38-45.

[6] YagelR, KaufmanA.Template-basedvolumeviewing[J].Computer

GraphicsForum, 1992, 11(3):153-157.

[7] Dave Shreiner,OpenGL編程指南[M],北京:機械工業(yè)出版社,2010:96-109,316-340

[8] 庫克,馬培軍,蘇統(tǒng)華. CUDA并行程序設計:GPU編程指南[M].

北京:機械工業(yè)出版社,2014:19-34.

猜你喜歡
混合體屬性數(shù)據(jù)曲面
基于GIS的房產(chǎn)測繪管理信息系統(tǒng)架構研究
無源多傳感器綜合數(shù)據(jù)關聯(lián)算法研究
屬性數(shù)據(jù)分析教學改革初探
相交移動超曲面的亞純映射的唯一性
圓環(huán)上的覆蓋曲面不等式及其應用
壓實度對筑堤用土石混合料力學特性影響研究
克制的宣泄——鋼琴家普列特涅夫:浪漫主義、現(xiàn)代審美和個人風格的混合體
獨領風騷的夏日
基于曲面展開的自由曲面網(wǎng)格劃分
炫色混合體