天天看點

PBR Step by Step(一)立體角立體角Solid Angles半球積分

轉載請注明出處:http://www.cnblogs.com/jerrycg/p/4924761.html 

本系列從零起步,作為學習筆記與大家分享,從基礎的數學和圖形理論,一步一步實作基于實體的渲染。

Reference:《PBRT》、《Ray Tracing from the Ground Up》

由于光源是三維空間中的輻射光能,對于其傳播範圍通常使用立體角來描述,先來看一下什麼是立體角。

立體角Solid Angles

立體角表示一個錐面所圍成的空間部分,用符号(omega )表示。

立體角是以圓錐體的頂點為心,半徑為r的球面被錐面所截得的面積來度量的,度量機關為“球面度”(steradian,符号∶sr)。球面度表示為三維弧度。

在球坐标系中,球面的極小面積({dA}_{2})為:

({dA}_{2}=({r}\,sin heta\, {d}varphi )({r\,d heta })={r}^{2}(sin heta\,{d heta }\,{d}varphi))

整個球面面積為({dA})的積分: 

({A}=int {dA}_{2}=int_{0}^{2pi}int_{0}^{pi}({r}\,sin heta\, {d}varphi*{r\,d heta })={r}^{2}int_{0}^{2pi}{d}varphiint_{0}^{pi}sin heta\,{d} heta)

極小立體角定義為球面面積與球半徑平方的比值,即:

({domega} = frac{dA}{{r}^{2}}=sin heta\,{d} heta\,{d}varphi)

對上式積分:

({omega} = int_{0}^{2pi }{dvarphi }int_{0}^{pi } sin heta\, {d heta }={4pi })

可知,最大立體角就是機關球體的表面積。

半球積分

半球積分方程表示為:({I} = int_{omega}{f( heta, phi)cos heta \, domega})

其中,({( heta, phi)} in {[0, frac{pi}{2}] [0, 2pi]}),({omega in [0, 2pi]}),(cos heta \, domega)表示立體角在水準面({(x, y)})上的投影,又稱為投影立體角。

當函數({f( heta, phi)} = cos^{n-1} heta )時,

({I} = int_{2pi} cos^{n} heta \, {domega})

(= int_{0}^{2pi} int_{0}^{frac{pi}{2}}{cos^{n} heta sin heta \, dphi})

(= int_{0}^{2pi} dphi int_{0}^{2pi} {cos^{n} heta sin heta \, d heta} )

(= {2pi int_{0}^{frac{pi}{2}} cos^{n} heta \, sin heta \, d heta})

(= {2pi left[frac{{cos heta}^{n+1}}{n+1}

ight]_{0}^{frac{pi}{2}}} = frac{2pi}{n+1})

最終得出當({f( heta, phi)} = cos^{n-1} heta )時,半球積分為:({I} = frac{2pi}{n+1})