pbrt中為什麼認為光線傳遞是平穩馬爾可夫過程?

@張心欣 @龔敏敏 @文刀秋二 @王洋子豪 @Yong He


謝邀。看了一下之前的討論,覺得題主把問題想錯了。Markov Process的定義 @Yubo Zhang已經簡單提到了。現代光線傳遞的模擬不是把光線傳遞理解當成Markov Process,Markov Process中的狀態轉換是由物理定律所決定的。渲染則是反過來通過人肉創造一個轉換定律使得系統最終能穩定到你的目標函數。這是一種採樣技術,叫Metropolis Sampling。

在渲染中使用Markov Chain Monte Carlo沒有什麼複雜的物理在裡面。現代所有光線傳播的模擬都是基於對渲染方程(rendering equation)的求解。而渲染方程已經將原本的物理系統大大的簡化了,所以光線傳遞的物理到底是不是平穩馬爾科夫過程和做渲染沒有任何關係。渲染只是要計算一個定義域緯度很高的函數而已,對於一個場景,固定的一組輸入是會返回一個固定的值的,沒有什麼隨機和模糊的東西。最極端簡化的例子就是一個一維函數。Metropolis Sampling的牛逼之處在於它不需要求解函數的積分或者算它的概率分布就能給你提供一系列和目標高數概率分布一致的樣本。而這一點對基於Monte Carlo的渲染來說十分重要的,叫做重要性採樣(Importance Sampling)。 用下面這個一維函數f(x)舉例: Metropolis Sampling只需要你能求得f(x)的值,就可以自動生成一組和f的大小成比例的樣本(就是下圖中的紅點,f越大紅點越密集)。

現代所有渲染演算法的過程其實和上面那個例子一模一樣,只不過我們要求解的是一個更高維度的方程:

L(x_{1}, x_{2},x_{3} ,...x_{n}  )

這裡所有x都是0-1間的浮點數,對於不同的演算法來說每個x的意義都不同。拿最基本的Path tracing舉例,x1和x2決定屏幕上像素的位置,x3決定第一次直接光照光源的索引,x4和x5決定光線第一次反射的方向等。如果你計算10次間接反射,可能就需要算一個30維的函數L,如下圖。這裡所有x理論上覆蓋了所有可以採樣到的路徑。

和上面的一維函數一樣,這些所有路徑中只有一部分路徑對最終成像有比較大的貢獻的(一個光線照不到的桌子底下反射100次也是沒有什麼貢獻的),而Metropolis Sampling可以為你生成一堆x,這堆x所對應的路徑的分布和他們最終貢獻的大小是成正比的,也就是說絕大多數生成的路徑都是貢獻相對大的,不在沒有貢獻的路徑上面浪費計算量。

用下面兩個圖片說明一下。例如有一個複雜的室內,camera放在一個屋子裡,而光源在旁邊隔了很多堵牆的屋子裡,只有很小一部分路徑能連通光源和camera。如果用單純的隨機生成樣本的方法採樣路徑得到的結果是下圖這樣,絕大多數路徑都沒有貢獻因為他們被強擋住了,所有求交和brdf採樣求值的計算都浪費了。

如果用markov chain來生成樣本,則得到的路徑是這樣的。大多數路徑都是剛好能有效連接光源和camera的。

所以Metropolis Sampling主要就是用來渲染一些採樣路徑特別複雜的場景的,一般室外大太陽的場景用不著付出額外的計算去用這麼fancy的採樣方法。Metropolis Light Transport的論文就是用了一個光源在一個微微打開的門縫後面的場景當的例子:

這是用bidirectional path tracing的渲染結果:

這是使用了Metropolis Sampling的結果,相同的計算時間。

Metroplis Sampling也可以比較高效的計算Specular-Diffuse-Specular這種路徑。

廢話了那麼多high level的說了一下為什麼渲染可以用到markov chain。具體的實現也不麻煩,基於一個叫Detailed Balance的方法,這裡就不再這展開了,但是給幾個有用的鏈接:

  1. https://graphics.stanford.edu/papers/metro/metro.pdf Eric Veach第一篇用Metropolis Sampling做渲染的論文,原理講的比較細,但是實現這篇論文的演算法非常麻煩,建議只大概了解。

  2. http://sirkan.iit.bme.hu/~szirmay/paper50_electronic.pdf Kelemen提出了一種只通過改變剛才提到的那些0-1的樣本就能達到同樣的效果,極大的降低了實現的難度,現在渲染器使用的也大多都是基於這個方法的

  3. https://graphics.stanford.edu/courses/cs348b-03/lectures/metrofinal.pdf 一個關於Metropolis Sampling的小教程

  4. https://www.youtube.com/watch?v=AFJihgfocno 一個Metroplis Light Transport光線路徑可視化的視頻


首先光線傳遞的隨機性(光子抵達物體表面材質後被吸收或隨機反射)僅由當前狀態決定,和歷史無關,滿足馬可夫過程定義,第二,現實場景的物體材質不存在全部是完美鏡面的情況,也就是系統中存在擴散/耗散項(非Dirac分布的BRDF,以及吸收項),所以能量分布會趨於穩定,收斂到一個穩態,光線傳播本身是time-dependent模型,但是渲染里假定了能量瞬間完成重分布,所以需要證明穩態方程解的存在唯一性。


推薦閱讀:

為什麼很少有渲染器能處理色散?
某些知名裝修(如酷家樂)網站的 10 秒出渲染圖技術,是怎麼實現的?
如何評價C4d的插件Aronld?
能不能寫一點關於Maxwell Render渲染器的一些實例教程?
gpu渲染器有哪些,octane 和maxwell比較呢,能渲染動畫嗎,速度和vr,mr,ar比較呢?

TAG:計算機圖形學 | 渲染器 | 馬爾可夫 |