全局照明算法基礎——從輻射亮度到渲染方程


  全局照明(Global Illumination)問題上已經有很多著名的算法,如路徑追蹤(Path Tracing),輻照度(Radiosity)等。絕大部分書籍/教材都直接介紹了做法,在理論方面有所欠缺(比如算法的正確性)。這段時間在看《Advanced Global Illumination》,大呼爽快,所以做了這些筆記。


一、方向和立體角

clip_image002

  立體角(Solid Angle)是平面角的推廣。如上圖,考慮一塊不規則的曲面,其在單位球體(球心在原點,半徑clip_image004)上的投影為曲面clip_image006,則clip_image006[1]的面積clip_image008為該曲面對應的立體角clip_image010。根據定義易知,任何包含原點的球體對應的立體角都為clip_image012。如果用球坐標clip_image014來刻畫立體角,那么其微分clip_image016可以被表示為

clip_image018

此外,根據立體角的定義,可以給出任何曲面元對應立體角的計算公式——

clip_image020

其示意圖如下:

clip_image022


二、Radiance的定義

  考慮密度函數clip_image024,它給出在時空坐標clip_image026處單位體積內沿方向clip_image028、波長為clip_image030的光子的數量。那么給定位置clip_image032、時間clip_image034、方向clip_image036以及波長clip_image038,容易知道單位時間內沿方向clip_image016[1]通過面元clip_image040的、波長在clip_image042間的光子的能量為

clip_image044

其中clip_image046是這些光子的速度。在波長范圍clip_image048、全體立體角clip_image010[1]、曲面clip_image006[2]上對clip_image050積分得

clip_image052

這就是曲面clip_image006[3]上的輻射通量(Flux)的定義。

  類似地,定義輻射照度(Irradiance)為

clip_image054

輻射強度(Intensity)為

clip_image056

以及輻射亮度(Radiance)——

clip_image058

這幾個量間有以下關系:

clip_image060


三、Radiance的守恆性質

  從clip_image062的定義可知,Radiance是空間位置和方向的函數可以寫作clip_image064,表示從空間位置clip_image066出發、朝向clip_image068Radiance。(類似地,clip_image070表示空間位置clip_image066[1]處朝方向clip_image072Radiance)若clip_image066[2]clip_image074間沒有遮擋,則有以下重要性質成立:

clip_image076

  證明:

clip_image078

  如上圖,由Radiance的定義有

clip_image080

其中clip_image082是從clip_image084出發向clip_image086發射的能量。根據能量守恆,它們必定都被clip_image086[1]接收,即

clip_image088

又由立體角的性質

clip_image090

clip_image092

代入得

clip_image094

整理即得clip_image076[1]


四、以Radiance來量度傳感設備響應

  攝像機、人眼等感光設備所得到的光的量度可以用Radiance來衡量,而非Flux等。由此可以得出一些結論,比如一個明亮的物體隨着觀察者距離的增加不會顯得更暗,這是因為在光的傳播過程中Radiance不隨距離改變。 


五、BRDF

  一束光照射到某個表面上,反射的效果隨着表面的材質有所不同。譬如,理想的鏡子會把所有的入射光反射到某個特定的方向,而在其他方向上的反射光為0;理想的Lambertian表面會把入射光往所有的方向均勻地反射。反射光在不同方向上的多少分布,再結合入射光的方向所構成的函數,稱為bidirectional reflectance distribution functionBRDF),記作clip_image096,表示沿clip_image098方向照射到clip_image066[3]處的光在clip_image068[1]方向上的分布。准確地說:

clip_image100

並非所有的物體表面的反射都能用BRDF來建模,譬如通透的玉石(入射光可以從某一處進入玉石內部,然后從另一處穿出)等。一個把透明物體的表面納入考慮的函數叫做bidirectional scattering distribution functionBSDF),它描述了所有方向的入射光和出射光的分布;Bidirectional surface scattering reflectance distribution functionBSSRDF)則更加強大(使用起來也更為困難),它可以描述前面提到的通透的玉石對光的作用。在這里,為了簡化問題,假設所有的物體表面都使用BRDF描述。


六、BRDF的幾個性質

  由BRDF的性質可知,某不透明的、不發光的表面上某一點clip_image066[4]處朝clip_image068[2]Radiance是此點反射外來光的結果,可表示為

clip_image102

其中clip_image104是從clip_image106方向來的光在clip_image068[3]方向上反射的結果。根據BRDF的定義有

clip_image108

於是,

clip_image110

該式在之后會介紹的渲染方程中扮演了重要的角色。

  Reciprocity:規定任意BRDF滿足clip_image112,由此,不妨將BRDF記作clip_image114

  能量守恆:單位面積的入射能量為

clip_image116

而單位面積反射的總能量為

clip_image118

於是由能量守恆:

clip_image120


七、渲染方程(The Rendering Equation

  clip_image064[1]可以被分為兩部分:clip_image066[5]處自身向clip_image068[4]方向發出的光和clip_image066[6]點反射外來光產生的光。即

clip_image122

其中clip_image124是自發光項,clip_image126是反射項。根據6中的推導,反射項clip_image126[1]可以被表示為

clip_image128

代入得

clip_image130

這就是所謂的渲染方程。可以看到該方程是遞歸的,且包含了一個不易計算的積分(只有在某些極簡單的場景下才能求出解析解)。幾乎所有的全局照明算法都是在求解渲染方程,因此稱其為圖形學的理論基石之一也不為過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM