阿昌學(xué)習(xí)《Ray Tracing The Next Week》 (一)
《ray tracing the next week》第零章
在oneweekend中實(shí)質(zhì)上就是做了一個直接簡單的路徑跟蹤器。在nextweek中會加入更多的效果,例如紋理材質(zhì)、矩形、燈光,還有BVH等。當(dāng)這些都搞定了,就是一個真正的射線追蹤了。
書中提到作者的設(shè)計(jì)是最簡單的方法,更復(fù)雜的要參看www.in1weekend.com(我感覺直接去pbrt3就好了 學(xué)他個透徹),反正目前優(yōu)化向的可以先擱置一下。
最難得兩個部分是bvh包圍盒和柏林噪音。
還有就是感謝 巴拉巴拉巴拉名字的關(guān)于aabb的建議。我直接感謝作者寫這本書!
第一章 動態(tài)模糊
簡單點(diǎn)說動態(tài)模糊是一種通過多重采樣暴力實(shí)現(xiàn)的特效。書中例子說:在真實(shí)的世界中用相機(jī)拍照,那么按下快門的時候,攝像機(jī)和物體是都可以移動的,而照片的形成就是把所有時間內(nèi)所有的光線全部取平均值,這樣照片就糊了。
我們可以通過在快門打開時的某個隨機(jī)時間發(fā)送每條光線得到一個隨機(jī)的估計(jì),只要這些物體在他們當(dāng)時應(yīng)該在的地方,我們就可以用一條恰好在同一時間內(nèi)的光線得到正確的平均答案。
基本思想是在快門打開時隨機(jī)產(chǎn)生光線,并在此時與模型??,通常的方法是讓相機(jī)移動,物體移動,但是讓每條光線只存在一次,這樣射線追蹤器的“引擎”就可以確保物體在他們需要的地方到達(dá),而交叉點(diǎn)的變化不會很大。
我的簡化理解就是:隨著時間變化隨機(jī)生成光線, 并同時發(fā)出射線與模型相交。
接下來是代碼部分:首先是在ray類中添加一個時間t,用于存儲隨機(jī)后確定的那條光線

接下來是相機(jī)的部分,加入時間time0和time1,讓光線在這個時間內(nèi)產(chǎn)生。

和之前的sphere類相似,寫一個移動的球的類。

調(diào)整一下場景中的球,改一部分為移動的。

最后再調(diào)整一下攝像機(jī)的配置,也加入時間變化量。

可能是我電腦比較差吧,一張300*400的圖就花費(fèi)了比較多的時間。

(還有一個問題,球本身是動態(tài)模糊了,但是金屬材質(zhì)上的反射看起來不對,并沒有什么移動中的球)