王芳 王天順
摘要:隨著科技的發(fā)展網(wǎng)絡(luò)的提速,人們對于3D場景的應(yīng)用越來越多,體驗需求不斷提高。3D場景的真實感繪制需要建立相應(yīng)的物理光照模型,考慮光線傳播過程中的多次反射折射現(xiàn)象。根據(jù)物體表面對光線的反射特性,可以建立物理模型,重點介紹了Phong模型。真實感光照繪制算法主要有兩種,光線追蹤和輻射度算法,分別分析了兩種算法實現(xiàn)原理和實現(xiàn)細(xì)節(jié),并分別使用兩種算法實現(xiàn)3D場景的繪制,對實驗結(jié)果進(jìn)行了分析比較。
關(guān)鍵詞:局部光照;全局光照;Phong模型;光線跟蹤;輻射度;排列因子
中圖分類號:TP37 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)26-6231-05
Abstract: With the high development of network technology, 3D scene is more and more applied in people's lives, the demand of experience increases.A real 3D scene rendering requires the establishment of corresponding physical illumination model, considering the multiple reflection and refraction of light in the process ofLight propagation. According to the characteristic of the object surface reflection of light, can establish physical model, focuses on the Phong model. The true light rendering algorithm mainly have two kinds, raytracing and radiosity algorithms, respectively, analyzed two kinds of algorithm principle and implementation details, and use two kinds of algorithms achieve rendering 3D scenes, and the experimental results are analyzed and compared.
Key words: local illumination; Global Illumination;Phong Model; Raytracing;Radiosity;Form factor
我們能看到3D場景中的物體,是因為有光源照射,光源發(fā)出的光線落在物體表面,部分被吸收,部分被反射出去,并對場景的照明和亮度做出貢獻(xiàn)。真實場景光照包括直接光照和間接光照,直接光照是由光源發(fā)射出的直接光線形成的光照效果,間接光照是對象表面反射光線形成的照明效果。局部光照(local illumination)只考慮直接光照,全局光照(Global Illumination)既要考慮直接光照,也要考慮間接光照。所以全局光照是根據(jù)設(shè)計好的三維場景,包括所有物體和光源,渲染生成具有真實感的圖像。要考慮和模擬光線傳播的各種物理現(xiàn)象,如反射、折射、陰影、焦散等。這不僅需要對場景中各種物體的幾何特性和材質(zhì)屬性的精確描述,還需要求解計算多次反射、折射帶來的無限微積分問題。在網(wǎng)絡(luò)發(fā)達(dá)的今天人們對3D場景的應(yīng)用和體驗需求不斷提高,而全局光照計算的復(fù)雜性,使得人們投入更多精力研究3D場景真實感繪制和呈現(xiàn)。
研究者研究提出了多種真實感繪制方法。Kajiya首先提出使類似于隨機(jī)采樣的蒙特卡羅(Monte Carlo)方法求解繪制方程的光線追蹤算法(Raytracing), 通過對到達(dá)圖像平面上的光線路徑進(jìn)行采樣,然后估計它們對最終圖像的貢獻(xiàn)來生成圖像。Arvo改進(jìn)后,提出了等價的逆向粒子追蹤算法(backward particle tracing)。Veach通過使用多重重要性采樣策略(optimally combining sampling),極大的提高了光線追蹤算法的適應(yīng)性和效率。Jensen提出了光子映射(Photon Mapping)算法,它是包括生成光子圖和光子收集兩階段的算法,大大加速了圖像的生成速度,并能有效地計算全局光照中的焦散(caustics)和滲色(color bleeding)等間接光照現(xiàn)象。Sloan提出PRT實時繪制算法,周昆提出陰影場實時繪制算法,孫鑫提出基于預(yù)計算的可變材質(zhì)的實時繪制算法,材質(zhì)用BRDF函數(shù)的基的不同線性組合表示,預(yù)計算每種組合下的所有出射輻射度,按照各材質(zhì)投影到基上的系數(shù),線性組合預(yù)計算數(shù)據(jù),把非線性問題轉(zhuǎn)換為線性的,更有效的實現(xiàn)實時全局光照。
1 3D場景局部光照繪制
對于一個真實場景,光線是必不可少的,光線的來源可以是真實光源,也可以是從對象表面反射或折射所產(chǎn)生的。對場景中對象的外觀輪廓的呈現(xiàn),可以通過建立幾何模型實現(xiàn),而對象的真實感繪制呈現(xiàn),則需要通過建立接近真實的物理模型來實現(xiàn)。
3D場景真實感繪制的具有代表性的開創(chuàng)性工作有,1970年Bouknight提出的第一個光反射模型,1971年Gourand提出的基于“漫反射模型與插值”思想的Gourand模型,1975年P(guān)hong提出的著名簡單光照模型Phong模型。Phong模型及它的改進(jìn)模型Blinn-Phong模型至今仍在使用,比如著名的3D軟件3dsMax中的基于它們的Blinn、Phong明暗器。
真實環(huán)境中對象表面的顏色及紋理是經(jīng)光源照射后反射到人眼中的表現(xiàn)效果,這就涉及到光源的特性及對象表面的紋理反射特性。人類視覺系統(tǒng)模型是以三基色理論為基礎(chǔ)的,是人眼感知的三刺激值,而不是光線能力按波長的完整分布,所以可以將光源建立為包含紅Red、綠Green、藍(lán)Blue三個分量的模型。對象表面對光源的反射作用分為環(huán)境光反射Ambient、漫反射Diffuse和高光反射Specular。對象表面某點繪制效果的每一個顏色分量的能量都來源于這三種反射,對象表面所呈現(xiàn)的效果是由接收到入射光線后所反射的出射光線決定的,所以,對象表面某點處接收光源i的出射光線能量[Ii]如式(1) 所示。
[Ii=RraLra+RrdLrd+ RrsLrsRgaLga+RgdLgd+RgsLgsRbaLba+ RbdLbd+RbsLbs] (1)
式中第一行表示對象表面反射光源環(huán)境光紅色分量、漫反射光紅色分量和高光紅色分量的能量和,類似第二行和第三行分別是反射漫反射色的紅色分量、綠色分量和藍(lán)色分量的能量和反射高光的各顏色分量能量和。其中[Rra]表示對象表面對入射環(huán)境光紅色分量的反射率,[Lra]表示入射環(huán)境光紅色分量的能量,[Rgd]表示對象表面對入射漫反射光綠色分量的反射率,[Lbs]表示對象表面對入射高光藍(lán)色分量的反射率。
環(huán)境光作用在對象表面所有點處都是相同的,對象表面對環(huán)境光的反射率就是對環(huán)境光的反射系數(shù)[ka],所以對象表面反射環(huán)境光的能量為[kaLa]。
2 3D場景全局光照繪制
Phong模型定義了對象表面某點處的直接光照效果,要實現(xiàn)整個3D場景的真實感光照效果,還要考慮光線在對象表面間的多次反射,進(jìn)行復(fù)雜的積分計算。在計算機(jī)3D場景中,實現(xiàn)全局光照明主要有兩種方法:光線追蹤和輻射度。
光線追蹤算法是基于從光源發(fā)射出的無數(shù)條光線。在3D場景中,從光源發(fā)出的光線有無數(shù)多條,射中對象后又會產(chǎn)生無數(shù)反射光線和折射光線,這使得場景中的光線驟增,所以直接追蹤從光源發(fā)射出的光線變得異常艱難。但我們發(fā)現(xiàn)從光源發(fā)出的光線及通過反射折射后,能夠到達(dá)人眼的光線數(shù)量所剩無幾,因此采用逆向的光線追蹤方法,即從人眼出發(fā),只關(guān)心進(jìn)入人眼的那部分光線,這樣可極大的減少追蹤光線數(shù)和計算量。
輻射度算法是基于面片多次反射的光能量累積。首先將3D場景中的對象劃分為相接但不重疊的多個網(wǎng)格面片,從光源發(fā)出的光碰到一個面片,該面片將儲存接受的光,并根據(jù)輻射度值和反射率反射光線到場景中,其他面片接收到反射光,將其加入到自己的光能量中,不斷重復(fù)該過程,直到兩次迭代的差值低于設(shè)定的閾值,所以輻射度算法是一個逐步求精的過程,計算可以中斷后繼續(xù)執(zhí)行,不影響最終渲染效果。對于不真實的對象表面需要劃分為更細(xì)小的網(wǎng)格。
盡管經(jīng)典繪制方程的形式比較簡單,但求解該方程卻并不容易,需要在點[x']的單位半球上對來自所有方向的入射光線積分,且方程中的x,x', x''都是三維空間中的點,每一個都分別涉及三個坐標(biāo)[x、y、z],這三個點就涉及9個變量,這種精確求積分的方法復(fù)雜費時。
2.1.2 蒙特卡羅光線追蹤(Monte CarloRaytracing)
人們嘗試使用數(shù)值方法求解繪制方程。Kajiya擴(kuò)展給出了Monte Carlo方法求解繪制方程的光線追蹤算法(Raytracing), 通過對到達(dá)圖像平面每一個像素點上的光線路徑隨機(jī)采樣進(jìn)行逆向追蹤,即在積分半球上以概率函數(shù)[ρ]采樣[N]個方向,然后估計它們對最終圖像的貢獻(xiàn)來生成圖像,如式(7) 所示。
傳統(tǒng)光線追蹤渲染的圖像太清晰整齊劃一、陰影明顯、反射沒有模糊失真效果,適合于像晴天正午太陽光等強(qiáng)光照射效果,而更多的場景需要軟陰影模糊陰影,需要對圖像進(jìn)行反走樣處理。根據(jù)使用像素區(qū)域平均顏色代替中心顏色的思想,可以通過對像素區(qū)域隨機(jī)采樣,實現(xiàn)圖像的反走樣。將點光源擴(kuò)展到面光源,將光源看做是多個點光源的隨機(jī)采樣,采用Monte Carlo方法可以實現(xiàn)軟陰影。
2.2.3 漸進(jìn)式逐步求精算法
通常一個簡單的3D場景中的總面片數(shù)達(dá)到了[103]數(shù)量級,在實際場景真實感繪制中,對每一個面片求解輻射度值,會消耗大量的計算時間??的螤柟ぷ鹘M采用了漸進(jìn)式的逐步求精算法,來提高計算效率。
我們將輻射度求解過程轉(zhuǎn)化為一個迭代過程,設(shè)置一個初始的預(yù)估解,后面每次迭代以上一次的估計值為基礎(chǔ)進(jìn)行修正計算出更接近真實值的估計值,重復(fù)迭代過程直至收斂為止。面片的初始值這樣設(shè)定:如果面片是光源或自發(fā)光對象,初始解設(shè)定為發(fā)射的輻射度值,如果是其他面片,則初始值為0。通過一次迭代,直接被光源照射的面片將被點亮,它們的輻射度值將被更新,不再為0。這些被點亮的面片通過光線反射,又會點亮它所能照射到的面片,更新這些面片的輻射度值,這個過程不斷重復(fù)下去,直至面片反射光線的輻射度值低于某個預(yù)設(shè)的閾值(低于該閾值的光線對場景照明的貢獻(xiàn)可以忽略)結(jié)束。隨著迭代的進(jìn)行(即光線的不斷反射),場景逐漸明亮起來。每次迭代過程只計算高于輻射度閾值的面片對場景其他面片的輻射度貢獻(xiàn),大大減少了計算量,提高了效率。
每次迭代經(jīng)過這樣幾個步驟:(1) 選擇(未發(fā)射)輻射度最高的面片[ai],(2) 計算面片[ai]到場景中所有能夠被照射到的其他面片[aj]的排列因子,(3) 計算更新每一個被[ai]照射到的面片[aj]的輻射度值,(4) 修改面片[aj]的(未發(fā)射)輻射度值。
漸進(jìn)式逐步求精的繪制結(jié)果可以產(chǎn)生從黑暗到完全照亮的所有中間場景效果,可以在任一次迭代后暫停,渲染場景觀察繪制效果,然后繼續(xù)迭代計算,渲染場景,直至滿意為止。在前幾次迭代計算后,場景還比較黑暗,為了得到基本可用的場景初始圖,可以設(shè)置一個環(huán)境光,以使未被直接照亮對象表面獲得一定的光照,這個環(huán)境光將隨著迭代的深入而逐漸減弱。
參考文獻(xiàn):
[1] Kajiya J. The Rendering Equation[J]. In Computer Graphics (SIGGRAPH 86 Proceedings), 1986, 8(20): 143-150.
[2] Arvo J.Backward raytracing. In Course Notes of the 1986 Conference on Computer Graphics and Interactive Techniques,1986(12): 230-238.
[3] Arvo J,Kirk D.Particle transport and image synthesis[J],ACM SIGGRAPH Computer Graphics,1990,24(4): 63-66
[4] Veach E,Guibas L J.Optimally combining sampling techniques for Monte Carlo rendering[J].In SIGGRAPH 95 Proceedings,1995,8(2): 419-42.
[5] Veach E, Guibas L J. Metropolis light transport. Proceedings of the 24th annual conference on Computer graphics and interactive techniques, 1997: 65-76.
[6] Henrik Wann Jensen. Importance driven path tracing using the photon map[J].In Rendering Techniques'95, 1995: 326-335.
[7] Henrik Wann Jensen. Gloabal Illumination Using Photon Maps[J] ,Euro-graphics Rendering Workshop,1996: 21-30.
[8] Sloan PP, Kautz J, Snyder J. Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments. In Fiume E, ed. Proc. of the SIGGRAPH 2002. New York:ACM Press, 2002: 527-536.
[9] Zhou K, Hu Y, Lin S, Guo B, Shum H. Precomputed shadow fields for dynamic scenes. In Hart JC, ed. Proc. of the SIGGRAPH 2005. New York:ACM Press, 2005: 1196-1201 .
[10] McAllister, David K., and Anselmo A. Lastra. 2003. "The SBRDF Home Page." Web site.
[11] RomeiroF,VelhoL.Computer Graphics Brazil:Scalable GPU rendering of CSG model[J]. Computer and Graphics,2008,32(5)
[12] LehtinenJ,Zwicker M. A meshless hierarchical representation for light transaction on Graphics,2008,27(3):1-9
[13] PacanowskiR,Raynaud M. Efficient streaming of 3D scenes with complex geometry and complex lighting[C].Proceedings of the 13th International Symposium,2008:11-17.
[14] 孫鑫, 周昆, 石教英.可變材質(zhì)的實時全局光照明繪制[J].軟件學(xué)報,2008,19(4):1004-1015.
[15] 張金貴,王普,閆健卓,等.基于光線跟蹤方法的全局光照研究[J].計算機(jī)科學(xué),2010,37(4):27-30.