摘 要: 體繪制過程中等距離采樣在顯示效果不理想的情況下,每減少一個采樣步長會增加大量采樣點,大大增加了體繪制過程中的計算負擔。針對這個問題,提出了一種基于Monte-Carlo積分方法的光線投射實現(xiàn)的實時體繪制算法,采用Monte-Carlo積分方法解決了光照明方程中的積分問題。實驗結果表明,在顯示效果幾乎一樣的前提下,采用本文的方法繪制效率提高了十多幀。
關鍵詞: 體繪制; 光線投射; 蒙特卡洛
自20世紀80年代科學計算可視化(Visualization in Scientific Computing)的概念被提出后,三維體數(shù)據(jù)的可視化技術便開始成為一個獨立的研究領域,并最終形成了體繪制技術體系[1]。科學計算可視化的基本含義是運用計算機圖形學的原理和方法,將科學與工程計算產生的大規(guī)模數(shù)據(jù)轉換為圖形、圖像,以直觀的形式表現(xiàn)其物理屬性或統(tǒng)計屬性。直接體繪制技術是科學可視化的重要研究內容,目前在許多領域得到了廣泛應用。傳統(tǒng)的直接體繪制有著繪制速度慢、交互性差等缺點。
體繪制技術是依據(jù)三維數(shù)據(jù),將所有的體細節(jié)同時展現(xiàn)在二維圖像的技術,利用體繪制技術,可以在一幅圖像中顯示更多物質的綜合分布情況,并且可以通過不透明度的控制,反映等值面的情況[2]。由于體數(shù)據(jù)通常具有信息量大、繪制復雜度高的特點,很難滿足人們實時顯示跟交互的需求,因此,體繪制必須與相應的加速技術和策略相結合?,F(xiàn)有的體繪制加速技術主要分為空體素剔除、提前不透明度截止、硬件加速三類,其中前兩類屬于軟件加速,利用對體數(shù)據(jù)的處理、體數(shù)據(jù)的渲染流程進行優(yōu)化等方法來達到加速的目的,但是這種加速方法加速有限,很難達到實時交互。第三類硬件加速又可分為專用圖形硬件加速與通用圖形處理器加速,但是專用圖形硬件成本高,而通用圖形處理器比較普及,尤其是可編程GPU(Graphics Processing Uint)的出現(xiàn),為實現(xiàn)實時體繪制技術提供了強大硬件支持。
基于GPU的加速技術首先由Cullip和Neumann[3]提出,Cabral等人對這項技術作了改進并驗證了體繪制通過硬件加速的可行性[4], KRUGER J等人將提前不透明度截止、空體素剔除技術等應用到基于GPU的體繪制中,進一步提高了體繪制的速度。
本文采用了Monte-Carlo方法計算光照方程。本文描述了基于GPU的光線投射算法的總體流程,詳細描述了如何將Monte-Carlo積分法運用于全局光照模型中, 實驗表明,采用隨機采樣的Monte-Carlo方法比等步長采樣的黎曼方法具有更好的可交互性。
1 光線投射算法
1.1光線投射算法
光線投射算法是一種基于圖像序列的直接體繪制算法。其原理是從圖像的每一個像素沿固定方向發(fā)射一條射線,沿著該射線對離散數(shù)據(jù)進行等距離采樣。通常使用三線性插值作為重建濾波器。簡言之,每個重采樣點的值通過一個映射表產生一個RGBA四元組,該四元組封裝了該點的發(fā)射與吸收參數(shù)等光學屬性[5]。然后體渲染積分器會通過從前向后或者從后向前的方式將顏色與透明度混合來計算該點的像素顏色值,通常的方式是從前向后混合,原理圖如圖1所示。
早期的光線投射算法完全基于軟件實現(xiàn),繪制效率受到較大的限制。隨著可編程圖形硬件的發(fā)展,越來越多的光線投射算法開始基于硬件實現(xiàn), 達到了比純軟件算法高出一個數(shù)量級的計算效率。
1.2 基于GPU的光線投射算法
基于GPU的光線投射技術是將整個渲染體(volume)存儲在一個簡單的3D紋理中,然后調用片段程序向渲染體中投射光線。在渲染體中的每一個像素/片段都對應了一條射線,這條射線的參數(shù)方程可用式(1)表示:
圖2說明了通過光柵化對光線投射的入射點、射出點、方向進行初始化。從圖3可知,光線的起點是由體包圍盒的前表面決定,終點是由體包圍盒的后表面決定的。光線在這個空間里進行采樣,通常以一個恒定的采樣速率進行?,F(xiàn)在的GPU,一個簡單的渲染通路和光線投射的片段著色程序,通過由前向后的順序渲染渲染體,就可以生成深度圖片(如圖1所示)?;贕PU的光線投射算法是在此基礎上應用了空體素剔除與提前不透明度等加速算法,其算法流程如圖4所示。
2 在體繪制中應用Monte-Carlo方法
2.1 散射效果
散射是使光改變其直線傳播的一個物理過程,散射現(xiàn)象包括光的折射、反射、透射等現(xiàn)象。簡單的散射現(xiàn)象使用Phong光照模型來模擬,舉例來說,如果光線照射在一個球形表面上,散射光依據(jù)球的表面法線均勻地分布在整個球形表面之上,而鏡面光則作用在以幾何反射光線為中心的一個扇形區(qū)域。更復雜的模型材質效果需要利用雙向反射分布函數(shù)BRDF(Bidirectional Reflectance Distribution Function)來描述。
在某一表面上一點x的雙向反射分布函數(shù)(BRDF)fr(x,λ,wi,wo)說明了光線在該點的反射情況。該函數(shù)的參數(shù)是:入射光的方向wi、反射光的方向wo、光線的波長?姿,返回值是反射光強占入射光強的百分比。在很多應用程序中,特別是實時的程序中,局部的光照明模型利用點光源組合而成,也就是說光源由一個或者幾個獨立的光源組成,光線的方向可能有一個或者幾個方向。一個光源應用雙向反射分布函數(shù)得到的渲染公式如下:
由此說明I′的估算值與積分I的值相同,I′被稱為Monte-Carlo積分。本文在原有的基于GPU的光線透射算法基礎上運用了Monte-Carlo方法計算式(4),得到結果,從而使GPU在計算過程中采樣點減少,速度加快,可交互性增強。
在計算機圖形學中,使用黎曼積分可能會存在以下兩個缺點:
(1)如果f(x)頻率特別高,等距離采樣不可避免地會造成走樣,即使采樣點的數(shù)目增加特別多,走樣現(xiàn)象也還是會特別嚴重;
(2)黎曼積分依賴于數(shù)據(jù)的結構。舉例而言,如果對一個三維數(shù)據(jù)進行采樣,可能會采集10×10×10=1 000個采樣點,若此時發(fā)現(xiàn)得到的結果產生的圖像錯誤非常大,接下來可能會采用11×10×10=1 100個采樣點,即在一個方向多采集一個點,就會導致整個采集樣本增加100個額外的采樣點,造成數(shù)據(jù)量激增。
采用Monte-Carlo方法可有效地避免以上兩點,針對問題(1),采用Monte-Carlo方法下的隨機采樣,可能會產生一定的擾動,但是視覺效果比走樣更加容易讓人接受,因為人們的眼睛對于走樣要比擾動敏感的多。對于問題(2),隨機采樣更加容易避免,不受數(shù)據(jù)格式的影響,隨機采樣可以每次只增加一個采樣點,直到達到要求的精度為止。
幀率為38 S/s,前者比后者每秒多22幀。對比可得,本文方法提高了體繪制的可交互性。
由實驗結果可以看出,基于GPU與Monte-Carlo的光線投射體繪制有很大的加速效果。
本文描述了基于GPU的光線投射體繪制機制,用Monte-Carlo積分替代等步長采樣來計算光照方程,避免了體數(shù)據(jù)結構的依賴性,有效消除了失真走樣。實驗結果表明,本文的算法在基本保持原有視覺效果的前提下大幅提高了渲染效率。
參考文獻
[1] HEARN D, BAKER M. 計算機圖形學[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.