《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于GPU與Monte-Carlo的體繪制光線投射算法的研究
基于GPU與Monte-Carlo的體繪制光線投射算法的研究
來源:微型機(jī)與應(yīng)用2011年第18期
張春凱,, 楊 猛,, 劉金剛
(首都師范大學(xué) 計(jì)算機(jī)科學(xué)聯(lián)合研究院,,北京 100040)
摘要: 體繪制過程中等距離采樣在顯示效果不理想的情況下,每減少一個(gè)采樣步長(zhǎng)會(huì)增加大量采樣點(diǎn),,大大增加了體繪制過程中的計(jì)算負(fù)擔(dān),。針對(duì)這個(gè)問題,,提出了一種基于Monte-Carlo積分方法的光線投射實(shí)現(xiàn)的實(shí)時(shí)體繪制算法,,采用Monte-Carlo積分方法解決了光照明方程中的積分問題。實(shí)驗(yàn)結(jié)果表明,,在顯示效果幾乎一樣的前提下,,采用本文的方法繪制效率提高了十多幀。
Abstract:
Key words :

摘  要: 體繪制過程中等距離采樣在顯示效果不理想的情況下,,每減少一個(gè)采樣步長(zhǎng)會(huì)增加大量采樣點(diǎn),,大大增加了體繪制過程中的計(jì)算負(fù)擔(dān)。針對(duì)這個(gè)問題,,提出了一種基于Monte-Carlo積分方法的光線投射實(shí)現(xiàn)的實(shí)時(shí)體繪制算法,,采用Monte-Carlo積分方法解決了光照明方程中的積分問題。實(shí)驗(yàn)結(jié)果表明,,在顯示效果幾乎一樣的前提下,,采用本文的方法繪制效率提高了十多幀。
關(guān)鍵詞: 體繪制,; 光線投射,; 蒙特卡洛

 自20世紀(jì)80年代科學(xué)計(jì)算可視化(Visualization in Scientific Computing)的概念被提出后,三維體數(shù)據(jù)的可視化技術(shù)便開始成為一個(gè)獨(dú)立的研究領(lǐng)域,,并最終形成了體繪制技術(shù)體系[1],。科學(xué)計(jì)算可視化的基本含義是運(yùn)用計(jì)算機(jī)圖形學(xué)的原理和方法,,將科學(xué)與工程計(jì)算產(chǎn)生的大規(guī)模數(shù)據(jù)轉(zhuǎn)換為圖形,、圖像,,以直觀的形式表現(xiàn)其物理屬性或統(tǒng)計(jì)屬性。直接體繪制技術(shù)是科學(xué)可視化的重要研究?jī)?nèi)容,,目前在許多領(lǐng)域得到了廣泛應(yīng)用,。傳統(tǒng)的直接體繪制有著繪制速度慢、交互性差等缺點(diǎn),。
 體繪制技術(shù)是依據(jù)三維數(shù)據(jù),,將所有的體細(xì)節(jié)同時(shí)展現(xiàn)在二維圖像的技術(shù),利用體繪制技術(shù),,可以在一幅圖像中顯示更多物質(zhì)的綜合分布情況,,并且可以通過不透明度的控制,反映等值面的情況[2],。由于體數(shù)據(jù)通常具有信息量大,、繪制復(fù)雜度高的特點(diǎn),很難滿足人們實(shí)時(shí)顯示跟交互的需求,,因此,體繪制必須與相應(yīng)的加速技術(shù)和策略相結(jié)合?,F(xiàn)有的體繪制加速技術(shù)主要分為空體素剔除、提前不透明度截止,、硬件加速三類,,其中前兩類屬于軟件加速,利用對(duì)體數(shù)據(jù)的處理,、體數(shù)據(jù)的渲染流程進(jìn)行優(yōu)化等方法來達(dá)到加速的目的,,但是這種加速方法加速有限,很難達(dá)到實(shí)時(shí)交互,。第三類硬件加速又可分為專用圖形硬件加速與通用圖形處理器加速,,但是專用圖形硬件成本高,而通用圖形處理器比較普及,尤其是可編程GPU(Graphics Processing Uint)的出現(xiàn),,為實(shí)現(xiàn)實(shí)時(shí)體繪制技術(shù)提供了強(qiáng)大硬件支持,。
 基于GPU的加速技術(shù)首先由Cullip和Neumann[3]提出,Cabral等人對(duì)這項(xiàng)技術(shù)作了改進(jìn)并驗(yàn)證了體繪制通過硬件加速的可行性[4], KRUGER J等人將提前不透明度截止,、空體素剔除技術(shù)等應(yīng)用到基于GPU的體繪制中,,進(jìn)一步提高了體繪制的速度。
 本文采用了Monte-Carlo方法計(jì)算光照方程,。本文描述了基于GPU的光線投射算法的總體流程,詳細(xì)描述了如何將Monte-Carlo積分法運(yùn)用于全局光照模型中, 實(shí)驗(yàn)表明,,采用隨機(jī)采樣的Monte-Carlo方法比等步長(zhǎng)采樣的黎曼方法具有更好的可交互性。
1 光線投射算法
1.1光線投射算法

    光線投射算法是一種基于圖像序列的直接體繪制算法,。其原理是從圖像的每一個(gè)像素沿固定方向發(fā)射一條射線,,沿著該射線對(duì)離散數(shù)據(jù)進(jìn)行等距離采樣。通常使用三線性插值作為重建濾波器,。簡(jiǎn)言之,,每個(gè)重采樣點(diǎn)的值通過一個(gè)映射表產(chǎn)生一個(gè)RGBA四元組,,該四元組封裝了該點(diǎn)的發(fā)射與吸收參數(shù)等光學(xué)屬性[5]。然后體渲染積分器會(huì)通過從前向后或者從后向前的方式將顏色與透明度混合來計(jì)算該點(diǎn)的像素顏色值,,通常的方式是從前向后混合,,原理圖如圖1所示。

    早期的光線投射算法完全基于軟件實(shí)現(xiàn),,繪制效率受到較大的限制,。隨著可編程圖形硬件的發(fā)展,越來越多的光線投射算法開始基于硬件實(shí)現(xiàn), 達(dá)到了比純軟件算法高出一個(gè)數(shù)量級(jí)的計(jì)算效率,。
1.2 基于GPU的光線投射算法
 基于GPU的光線投射技術(shù)是將整個(gè)渲染體(volume)存儲(chǔ)在一個(gè)簡(jiǎn)單的3D紋理中,,然后調(diào)用片段程序向渲染體中投射光線。在渲染體中的每一個(gè)像素/片段都對(duì)應(yīng)了一條射線,這條射線的參數(shù)方程可用式(1)表示:
  
    圖2說明了通過光柵化對(duì)光線投射的入射點(diǎn),、射出點(diǎn),、方向進(jìn)行初始化。從圖3可知,,光線的起點(diǎn)是由體包圍盒的前表面決定,,終點(diǎn)是由體包圍盒的后表面決定的。光線在這個(gè)空間里進(jìn)行采樣,,通常以一個(gè)恒定的采樣速率進(jìn)行?,F(xiàn)在的GPU,一個(gè)簡(jiǎn)單的渲染通路和光線投射的片段著色程序,,通過由前向后的順序渲染渲染體,,就可以生成深度圖片(如圖1所示),?;贕PU的光線投射算法是在此基礎(chǔ)上應(yīng)用了空體素剔除與提前不透明度等加速算法,其算法流程如圖4所示,。

 

 

2 在體繪制中應(yīng)用Monte-Carlo方法
2.1 散射效果

 散射是使光改變其直線傳播的一個(gè)物理過程,,散射現(xiàn)象包括光的折射、反射,、透射等現(xiàn)象,。簡(jiǎn)單的散射現(xiàn)象使用Phong光照模型來模擬,舉例來說,,如果光線照射在一個(gè)球形表面上,,散射光依據(jù)球的表面法線均勻地分布在整個(gè)球形表面之上,而鏡面光則作用在以幾何反射光線為中心的一個(gè)扇形區(qū)域,。更復(fù)雜的模型材質(zhì)效果需要利用雙向反射分布函數(shù)BRDF(Bidirectional Reflectance Distribution Function)來描述,。
 在某一表面上一點(diǎn)x的雙向反射分布函數(shù)(BRDF)fr(x,λ,wi,wo)說明了光線在該點(diǎn)的反射情況。該函數(shù)的參數(shù)是:入射光的方向wi,、反射光的方向wo,、光線的波長(zhǎng)?姿,,返回值是反射光強(qiáng)占入射光強(qiáng)的百分比。在很多應(yīng)用程序中,,特別是實(shí)時(shí)的程序中,,局部的光照明模型利用點(diǎn)光源組合而成,也就是說光源由一個(gè)或者幾個(gè)獨(dú)立的光源組成,,光線的方向可能有一個(gè)或者幾個(gè)方向,。一個(gè)光源應(yīng)用雙向反射分布函數(shù)得到的渲染公式如下:


    由此說明I′的估算值與積分I的值相同,I′被稱為Monte-Carlo積分,。本文在原有的基于GPU的光線透射算法基礎(chǔ)上運(yùn)用了Monte-Carlo方法計(jì)算式(4),,得到結(jié)果,從而使GPU在計(jì)算過程中采樣點(diǎn)減少,,速度加快,,可交互性增強(qiáng)。
    在計(jì)算機(jī)圖形學(xué)中,,使用黎曼積分可能會(huì)存在以下兩個(gè)缺點(diǎn):
    (1)如果f(x)頻率特別高,,等距離采樣不可避免地會(huì)造成走樣,即使采樣點(diǎn)的數(shù)目增加特別多,,走樣現(xiàn)象也還是會(huì)特別嚴(yán)重;
    (2)黎曼積分依賴于數(shù)據(jù)的結(jié)構(gòu),。舉例而言,如果對(duì)一個(gè)三維數(shù)據(jù)進(jìn)行采樣,可能會(huì)采集10×10×10=1 000個(gè)采樣點(diǎn),,若此時(shí)發(fā)現(xiàn)得到的結(jié)果產(chǎn)生的圖像錯(cuò)誤非常大,,接下來可能會(huì)采用11×10×10=1 100個(gè)采樣點(diǎn),即在一個(gè)方向多采集一個(gè)點(diǎn),,就會(huì)導(dǎo)致整個(gè)采集樣本增加100個(gè)額外的采樣點(diǎn),造成數(shù)據(jù)量激增,。
    采用Monte-Carlo方法可有效地避免以上兩點(diǎn),針對(duì)問題(1),,采用Monte-Carlo方法下的隨機(jī)采樣,,可能會(huì)產(chǎn)生一定的擾動(dòng),但是視覺效果比走樣更加容易讓人接受,,因?yàn)槿藗兊难劬?duì)于走樣要比擾動(dòng)敏感的多,。對(duì)于問題(2),隨機(jī)采樣更加容易避免,不受數(shù)據(jù)格式的影響,,隨機(jī)采樣可以每次只增加一個(gè)采樣點(diǎn),,直到達(dá)到要求的精度為止。

幀率為38 S/s,,前者比后者每秒多22幀,。對(duì)比可得,本文方法提高了體繪制的可交互性。

    由實(shí)驗(yàn)結(jié)果可以看出,基于GPU與Monte-Carlo的光線投射體繪制有很大的加速效果。
    本文描述了基于GPU的光線投射體繪制機(jī)制,,用Monte-Carlo積分替代等步長(zhǎng)采樣來計(jì)算光照方程,,避免了體數(shù)據(jù)結(jié)構(gòu)的依賴性,有效消除了失真走樣,。實(shí)驗(yàn)結(jié)果表明,,本文的算法在基本保持原有視覺效果的前提下大幅提高了渲染效率。
參考文獻(xiàn)
[1] HEARN D, BAKER M. 計(jì)算機(jī)圖形學(xué)[M].北京:電子工業(yè)出版社,,2002.
[2] 康玉之.GPU編程與CG語言之陽春白雪下里巴人[M].[出版地不詳]:[出版者不詳].2009[2010.20]//www.docin.com/P-34717438.html.
[3] CULLIP T, NEUMANN U. Accelerating volume reconstruction with 3D texture hardware[R].Tech.Rep.TR93-027, University of North Carolina at Chapel Hill, 1993.
[4] CABRAL B, CAM N, FORAN J. Accelerated  bolume rendering and tomographic reconstructions using texture mapping hardware [C]. In Proceedings ACM Symposium on  Volume Visualization,1994:91-98.
[5] LOEVY M. Display of surfaces from volume data[J]. IEEE Computer Graphics and Applications,1988,8(3):29-37.
[6] KRGER J, WESTERMANN R. Accleration techniques for GPU-Based volume rendering[C]. In Proceeding IEEE Visual ization 2003, 2003.
[7] HENYEY L, GREENSTEIN J. Diffuse radiation in the galaxy[J]. Astrophysical Journal,1941,93.
[8] ENGEL K, HADWIGER M,KNISS J, et al. Real-time  volume graphics[M]. AK Peters, 2006.
[9] PHARR M, HUMPHRIES G. Physically based rendering[M]. Morgan Kauffman,2004. 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。