資源描述:
《蒙特卡洛光線追蹤》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、光線追蹤原理? 光的基本傳遞模型? 1在一個要渲染的場景中,我們認為光能由預先指定的光源發(fā)出,然后我們以光線來描述光能的傳遞過程,當整個場景中的光能信息被我們計算出來后,我們收集這些信息轉(zhuǎn)化為頂點的亮度。? 2光線經(jīng)過物體表面可以產(chǎn)生反射和漫反射,光線透過物體可以產(chǎn)生折射和散射。具體產(chǎn)生哪種出射效果,依據(jù)物體的表面屬性而定。物體的表面一般不會是理想的某種單一屬性的表面,表面可以同時存在反射,折射,漫反射等多種屬性,各種屬性按一定比例混合之后才是其表面反射模型。? 3一點的在某一個視線方向上的光亮度=
2、該點在該方向的自身發(fā)光亮度+半球入射光能在該方向所產(chǎn)生的反射光亮度.? 4關(guān)于散射,高度真實的散射是一個很難模擬的物理過程,一般在渲染中都不會采用過于復雜的物理模型來表示散射,而是采用一些取巧的辦法來計算散射。? 5在常見的渲染中,有兩種效果很難模擬,但是它們會使人眼覺得場景更真實。? [1]colorbleeding:入射光為漫反射,受光表面屬性為漫反射,出射光是漫反射。比如把一本藍色的紙制的書靠近白色的墻,墻上會有淺淺的藍暈。? [2]caustics:入射光為鏡面反射或折射,受光表面屬性為漫反
3、射,出射光是漫反射。比如把一個裝了紅色葡萄酒的酒杯放在木桌上面,會有光透過杯中的酒在桌上形成一塊很亮的紅色區(qū)域。? 傳統(tǒng)的陰影算法:? 游戲中傳統(tǒng)的光照算法,是利用公式法來計算特定類型光源的直接光照在物體表面所產(chǎn)生的反射和漫反射顏色,然后再使用陰影算法做陰影補償。標準的陰影算法不能計算面光源,改進以后的陰影算法通過對面光源采樣,可以模擬出軟陰影的效果。但是這些方法計算的光照都是來自直接光源的,忽略了光的傳播過程,也就無法計算出由光的傳播所產(chǎn)生的效果。通過特定的修正,我們也可以計算特定的反射折射或漫反射過
4、程,但是無法給出一種通用并且物理正確的方法。目前游戲中大多是采用改進的陰影算法來進行渲染,它的優(yōu)點是效率比較高,結(jié)合預計算的話,還是可以產(chǎn)生比較生動可信的效果。? 傳統(tǒng)的逆向光線追蹤:? 正如前面描述的那樣,要想計算光能在場景中產(chǎn)生的顏色,最自然的考慮就是,從光源出發(fā),正向跟蹤每一根光線在場景中的傳遞過程,然后收集信息。然而這個想法在被提出的來的那個時代的計算機硬件上是不可能實現(xiàn)的,當時人們認為,正向光線追蹤計算了大量對當前屏幕顏色不產(chǎn)生貢獻的信息,而且它把看不見的物體也計算在內(nèi),極大的浪費了效率。?
5、 于是人們想出的另一個方法是:只計算有用的,從人眼出發(fā),逆向跟蹤光線。? 逆向光線追蹤從視點出發(fā),向投影屏幕發(fā)出光線,然后追蹤這個光線的傳遞過程。如果這個光線經(jīng)過若干次反射折射后打到了光源上,則認為該光線是有用的,遞歸的計算顏色,否則就拋棄它。很顯然,這個過程是真實光線投射的逆過程,它同樣會產(chǎn)生浪費(那些被拋棄的逆向光線),而且只適用于靜態(tài)渲染。? 逆向光線追蹤算法中的頂點亮度主要包括三個方面:? 1由光源直接照射而引起的光亮度? 2來自環(huán)境中其它景物的反射折射光在表面產(chǎn)生的鏡面反射光亮度? 3來
6、自環(huán)境中其它景物的反射折射光在表面產(chǎn)生的規(guī)則透射光亮度? 4預設定的頂點漫反射顏色? 顯然,這一過程僅跟蹤景物間的鏡面反射光線和規(guī)則透射光線,忽略了至少經(jīng)過一次漫反射之后光能傳遞,而且該算法中的物體表面屬性只能是單一的,因而它僅模擬了理想表面的光能傳遞。? 對于該算法的具體描述:? 1從視點出發(fā),經(jīng)過投影屏幕上的每一個像素向場景發(fā)射一根虛擬的光線。? 2求光線與場景最近的交點。? 3遞歸跟蹤:? (1)如果當前交點所在的景物表面為理想鏡面,光線沿其鏡面反射方向繼續(xù)跟蹤。? (2)如果當前交點
7、所在的景物表面為規(guī)則投射表面,光線沿其規(guī)則投射方向繼續(xù)跟蹤。? 4遞歸異常結(jié)束:? (1)光線與場景中的景物沒有交點? (2)當前交點所在的景物表面為漫反射表面? (3)跟蹤層次已經(jīng)超過用戶設定的最大跟蹤層數(shù)? (4)所跟蹤的光線對顯示像素的光亮度的貢獻小于一預先設定的閥值? 5遞歸正常結(jié)束:? (1)光線于光源相交,取得光亮度值,按遞歸層次反饋。? 傳統(tǒng)的光線追蹤技術(shù)可以較好的表現(xiàn)出反射折射效果,也可以生成真實度比較高的陰影。但是他的光照都比較硬,無法模擬出非常細膩的柔化效果。? 光線追
8、蹤需要對大量的光線進行多次與場景中物體的求交計算。如何避免這些求交計算成為光線追蹤追求效率的本質(zhì)。早期的光線追蹤算法都是通過各種空間劃分技術(shù)來避免無謂的求交檢測,這些方法對于之后的理論同樣有效,常見的空間劃分方法分為兩類,一類是基于網(wǎng)格的平均空間劃分,一類是基于軸平行的二分空間劃分。? 蒙特卡羅光線追蹤:? 1對傳統(tǒng)的逆向光線追蹤的改進? 傳統(tǒng)的逆向光線追蹤算法有兩個突出的缺點,就是表面屬性的單一,和不考慮