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