前向光線追蹤和逆向光線追蹤詳解
你可能認(rèn)為直接模擬這個(gè)過(guò)程是個(gè)制作圖像的好辦法,你基本上是對(duì)的。但,直接模擬有個(gè)問(wèn)題,那就是他繪制圖像所需要的時(shí)間,考慮每個(gè)光源每秒可能產(chǎn)生數(shù)以兆計(jì)(Millions)個(gè)光子的情況,其中,每個(gè)光子都以略微不同的震動(dòng)頻率朝著略微不同的方向前進(jìn)。其中的許多光子撞擊對(duì)象你甚至都無(wú)法間接看到。其他的正好跑出場(chǎng)景的,比如沖出窗戶的。如果我們想要嘗試去以參照真實(shí)追蹤從光源出來(lái)的光子的方式來(lái)繪制一個(gè)圖像,那將會(huì)花費(fèi)數(shù)年的時(shí)間來(lái)得到那個(gè)蠢圖。
本質(zhì)問(wèn)題不是前向光線追蹤不好,而是從光源來(lái)的大部分光子對(duì)想要繪制的圖像都沒(méi)有幫助。從占用計(jì)算資源的角度來(lái)說(shuō),跟隨無(wú)用的光子的代價(jià)太過(guò)于昂貴了。
對(duì)于計(jì)算效率的關(guān)鍵理解是反轉(zhuǎn)問(wèn)題,通過(guò)用逆向光線追蹤來(lái)代替前向光線追蹤。這開始于我們的反問(wèn)"哪些光子對(duì)繪圖是有貢獻(xiàn)的?",符合條件的光子是那些撞擊了圖像平面并反射進(jìn)眼睛的那些光子.所有的這些光子在撞擊屏幕前都行進(jìn)了一段路程;也許有一些直接來(lái)自于光源,但是更多的也許在進(jìn)入眼睛前在周圍反彈。
讓我們考慮一個(gè)圖像平面上的特殊點(diǎn)。我們可以輕易地跟著依次撞擊屏幕和眼睛的光子找到路徑:那是一條從屏幕到眼睛的線,如圖6所示。
因此,如果一下光子確實(shí)對(duì)視距內(nèi)的圖片上的某點(diǎn)有貢獻(xiàn),那么它就代表一條進(jìn)入眼睛和膠卷的光線。但是等等,這個(gè)光子來(lái)自哪里呢?如果我們把光線延伸入世界,我們可以沿著光線的路徑尋找尋找最近的物體,光線必定來(lái)自這個(gè)物體。
思考圖7,一個(gè)光線射入眼睛撞擊球體,穿過(guò)圖像平面。那就是光子可能的路徑;即使任何光子穿過(guò)了那個(gè)路徑,我們也無(wú)從得知。但是如果任何光線撞擊了屏幕中的那部分射入眼睛,那么它必須沿著從球到眼睛的這條線行進(jìn)。因此,我們的新計(jì)劃著重討論是否有任何光子通過(guò)了那條路。
以這個(gè)途徑,我們以從對(duì)象到光源的逆向光線追蹤手段來(lái)進(jìn)行光線追蹤。這是種重要規(guī)定,它可以允許我們?nèi)ハ拗莆覀儗?duì)于光線的注意,從而讓我們知道真正對(duì)圖片有用的,進(jìn)入了眼睛的那些光線。
現(xiàn)在,我們找到了吸引我們眼球的光子了。我們必須找出來(lái)那些真的通過(guò)了那條路徑的光子,及其顏色,我們將會(huì)在下面的話題中解決這些問(wèn)題。
因?yàn)檎蚬饩€追蹤是如此的昂貴,現(xiàn)今的圖形學(xué)中的光線追蹤大部分都只逆向光線追蹤。很不幸的是一些逆向追蹤的符號(hào)產(chǎn)生了一些令人困惑的符號(hào)?;叵胛覀兡嫦蜃粉檨?lái)找出光子的起點(diǎn),雖然我們經(jīng)常在逆向追蹤中完成這些研究。想象我們乘坐在光子在路徑上行進(jìn),尋找我們路徑上的第一個(gè)對(duì)象;這是光線的起點(diǎn),因此我們經(jīng)常說(shuō)的"光線第一個(gè)撞擊的對(duì)象"或者"路徑上的第一個(gè)對(duì)象"。即我們通常指的對(duì)象就是這樣一個(gè)穿過(guò)這個(gè)光線的光子,這樣一個(gè)逆向點(diǎn)在光線追蹤文章和算法中很流行。因此他是用來(lái)思考現(xiàn)在的問(wèn)題再好不過(guò),而且之后也不會(huì)迷惑??偨Y(jié)起來(lái)就是"光線撞擊的第一個(gè)對(duì)象"意味著"某個(gè)發(fā)射了這個(gè)光線的對(duì)象"。