球諧光照——球諧函數(shù)
早在1877年,Norman Macleod Ferrers就專(zhuān)門(mén)寫(xiě)了一本書(shū)來(lái)介紹球諧函數(shù),后面物理學(xué)家把實(shí)數(shù)球諧函數(shù)擴(kuò)展到復(fù)平面上,在復(fù)變函數(shù)論中作為“特殊函數(shù)”來(lái)研究,它在物理以及計(jì)算化學(xué)上有重要的應(yīng)用,我們主要討論它在計(jì)算機(jī)圖形渲染上的應(yīng)用。
球諧函數(shù)是拉普拉斯方程的分離rr變量后,角度部分通解的正交項(xiàng),那本篇文章就從拉普拉斯方程開(kāi)始介紹,直至找到我們想要的球諧函數(shù)。球諧函數(shù)有復(fù)數(shù)形式和實(shí)數(shù)形式,我們只關(guān)心它的實(shí)數(shù)形式。
球諧函數(shù)有兩條重要的性質(zhì),正交完備性和旋轉(zhuǎn)不變性。球諧函數(shù)構(gòu)成的函數(shù)組,作為正交基,對(duì)信號(hào)進(jìn)行投影和重建,例如[7]介紹的輻射度環(huán)境貼圖,通過(guò)9個(gè)系數(shù)就可以模擬一張環(huán)境貼圖的漫反射信號(hào),無(wú)論是存儲(chǔ)還是計(jì)算,都有顯著的優(yōu)勢(shì)。當(dāng)然,本篇文章希望從數(shù)學(xué)的角度,來(lái)介紹球諧函數(shù),也受限于個(gè)人的數(shù)學(xué)能力,會(huì)忽略了一些復(fù)雜的推導(dǎo)過(guò)程。
文章目錄:
球諧始源球諧性質(zhì)附錄參考球諧始源
球諧函數(shù)是拉普拉斯方程的分離rr變量后,角度部分通解的正交項(xiàng)。這部分將從拉普拉斯方程開(kāi)始逐項(xiàng)推導(dǎo),得到最終我們想要知道的球諧函數(shù)。內(nèi)容主要參考“姚端正,梁家寶. 數(shù)學(xué)物理方法-第4版”和“顧樵. 數(shù)學(xué)物理方法”兩本書(shū)。
球面坐標(biāo)可以表示為
(1){x=rsin?θcos?φy=rsin?θsin?φz=rcos?θ\left\{ \begin{matrix} x=r\sin \theta \cos \varphi \\ y=r\sin \theta \sin \varphi \\ z=r\cos \theta \\ \end{matrix} \right. \tag{1}\\
三維空間下的拉普拉斯(Laplace)方程可以表示為
(2)?2=?2?x2+?2?y2+?2?z2=0{{\nabla }^{\text{2}}}\text{=}\frac{{{\partial }^{2}}}{\partial {{x}^{2}}}+\frac{{{\partial }^{2}}}{\partial {{y}^{2}}}+\frac{{{\partial }^{2}}}{\partial {{z}^{2}}}=0 \tag{2}\\
把球面坐標(biāo)代入拉普拉斯方程(參見(jiàn)“Laplacian in Spherical Coordinates”),可以得到
(3)1r2??r(r2?f?r)+1r2sin?θ??θ(sin?θ?f?θ)+1r2sin2θ?2f?φ2=0\frac{1}{{{r}^{2}}}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial f}{\partial r} \right)+\frac{1}{{{r}^{2}}\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial f}{\partial \theta } \right)+\frac{1}{{{r}^{2}}{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}f}{\partial {{\varphi }^{2}}}=0 \tag{3}\\
我們的目標(biāo)就是求解拉普拉斯方程的解。首先,把表示距離的變數(shù)rr跟表示方向的變數(shù)θ\theta和φ\varphi分離,即
(4)f(r,θ,φ)=R(r)Y(θ,φ)f\left( r,\theta ,\varphi \right)=R\left( r \right)Y\left( \theta ,\varphi \right) \tag{4}\\
Y(θ,φ)Y\left( \theta ,\varphi \right)表示角度部分,把等式(4)代入等式(3)可以得到
Yr2??r(r2?R?r)+Rr2sin?θ??θ(sin?θ?Y?θ)+Rr2sin2θ?2Y?φ2=0\frac{Y}{{{r}^{2}}}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)+\frac{R}{{{r}^{2}}\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)+\frac{R}{{{r}^{2}}{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}=0\\
等式兩邊乘以r2/RY{{r}^{2}}/RY,并移項(xiàng),可得
1R??r(r2?R?r)=?1Ysin?θ??θ(sin?θ?Y?θ)?1Ysin2θ?2Y?φ2\frac{1}{R}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)=-\frac{1}{Y\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)-\frac{1}{Y{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}\\
左邊是rr的函數(shù),跟θ\theta和φ\varphi無(wú)關(guān);右邊是θ\theta和φ\varphi的函數(shù),跟rr無(wú)關(guān)。兩邊相等,顯然是不可能的。除非兩邊實(shí)際上是同一個(gè)常數(shù),通常把這個(gè)參數(shù)記為l(l+1)l\left( l+1 \right)。即
1R??r(r2?R?r)=?1Ysin?θ??θ(sin?θ?Y?θ)?1Ysin2θ?2Y?φ2=l(l+1)\frac{1}{R}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)=-\frac{1}{Y\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)-\frac{1}{Y{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}=l\left( l+1 \right)\\
這就分解為兩個(gè)方程
??r(r2?R?r)?l(l+1)R=0\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)-l\left( l+1 \right)R=0\\
(5)1sin?θ??θ(sin?θ?Y?θ)+1sin2θ?2Y?φ2+l(l+1)Y=0\frac{1}{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)+\frac{1}{{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}+l\left( l+1 \right)Y=0 \tag{5}\\
當(dāng)然,我們只關(guān)心角度部分的解,即方程(5)的解,這個(gè)方程也稱(chēng)為球函數(shù)方程。進(jìn)一步采用分離變數(shù)法,以
Y(θ,φ)=Θ(θ)Φ(φ)Y\left( \theta ,\varphi \right)=\Theta \left( \theta \right)\Phi \left( \varphi \right)\\
代入球函數(shù)方程,得
Φsin?θ??θ(sin?θ?Θ?θ)+Θsin2θ?2Φ?φ2+l(l+1)ΘΦ=0\frac{\Phi }{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\frac{\Theta }{{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}+l\left( l+1 \right)\Theta \Phi =0\\
在方程兩邊乘以sin2θ/ΦΘ{{\sin }^{2}}\theta /\Phi \Theta并移項(xiàng),即可得
sin?θΘ??θ(sin?θ?Θ?θ)+l(l+1)sin2θ=?1Φ?2Φ?φ2\frac{\sin \theta }{\Theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+l\left( l+1 \right){{\sin }^{2}}\theta =-\frac{1}{\Phi }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}\\
左邊是θ\theta的函數(shù),跟φ\varphi無(wú)關(guān);右邊是φ\varphi 的函數(shù),跟θ\theta 無(wú)關(guān)。兩邊相等顯然是不可能的,除非兩邊實(shí)際上是同一個(gè)常數(shù),這個(gè)常數(shù)記作λ\lambda,
sin?θΘ??θ(sin?θ?Θ?θ)+l(l+1)sin2θ=?1Φ?2Φ?φ2=λ\frac{\sin \theta }{\Theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+l\left( l+1 \right){{\sin }^{2}}\theta =-\frac{1}{\Phi }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}=\lambda\\
這就又分解為兩個(gè)常微分方程
(7)?2Φ?φ2+λΦ=0\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}+\lambda \Phi =0 \tag{7}\\
(8)sin?θ??θ(sin?θ?Θ?θ)+[l(l+1)sin2θ?λ]Θ=0\sin \theta \frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\left[ l\left( l+1 \right){{\sin }^{2}}\theta -\lambda \right]\Theta =0 \tag{8}\\
對(duì)于常微分方程(7),它有一個(gè)隱含的“自然的周期條件”(Φ(φ+2π)=Φ(φ)\Phi \left( \varphi +2\pi \right)=\Phi \left( \varphi \right)),兩者構(gòu)成本征值問(wèn)題。即
(9)λ=m2,(m=0,±1,±2,?)\lambda ={{m}^{2}},\left( m=0,\pm 1,\pm 2,\cdots \right) \tag{9}\\
它的周期解用復(fù)數(shù)形式,可以表示為
(10)Φ(φ)=eimφ,m=0,±1,±2,?\Phi \left( \varphi \right)={{e}^{im\varphi }},m=0,\pm 1,\pm 2,\cdots \tag{10}\\
嚴(yán)格來(lái)說(shuō),這里忽略了常數(shù)項(xiàng),且是兩個(gè)cos和sin函數(shù)的混合,或者是兩個(gè)正負(fù)虛數(shù)的混合,但不影響最終的通解。復(fù)數(shù)形式在復(fù)變函數(shù)論里面,有一個(gè)如下所示的轉(zhuǎn)換關(guān)系,它們都是復(fù)平面上坐標(biāo)的不同表現(xiàn)形式。由于本篇文章并不是為了嚴(yán)格的數(shù)學(xué)理論推導(dǎo),而是為了梳理球諧函數(shù)在計(jì)算機(jī)上從理論到應(yīng)用這條線,最終我們采用的是實(shí)數(shù)形式的球諧函數(shù),所以看看就可以了。
cos?mφ+isin?mφ=eimφ\cos m\varphi +i\sin m\varphi ={{e}^{im\varphi }}\\
再看常微分方程(8),它可以改寫(xiě)為
1sin?θ??θ(sin?θ?Θ?θ)+[l(l+1)?m2sin2θ]Θ=0\frac{1}{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\left[ l\left( l+1 \right)-\frac{{{m}^{2}}}{{{\sin }^{2}}\theta } \right]\Theta =0\\
設(shè)x=cos?θx=\cos \theta,則
?Θ?θ=?Θ?x?x?θ=?sin?θ?Θ?x\frac{\partial \Theta }{\partial \theta }=\frac{\partial \Theta }{\partial x}\frac{\partial x}{\partial \theta }=-\sin \theta \frac{\partial \Theta }{\partial x}\\
代入上式,化簡(jiǎn)可得
(11)(1?x2)?2Θ?x2?2x?Θ?x+[l(l+1)?m21?x2]Θ=0\left( 1-{{x}^{2}} \right)\frac{{{\partial }^{2}}\Theta }{\partial {{x}^{2}}}-2x\frac{\partial \Theta }{\partial x}+\left[ l\left( l+1 \right)-\frac{{{m}^{2}}}{1-{{x}^{2}}} \right]\Theta =0 \tag{11}\\
這個(gè)方程就是l次連帶勒讓德方程,也稱(chēng)為締合勒讓德方程,其中,m=0m=0的特例,即
(12)(1?x2)?2Θ?x2?2x?Θ?x+l(l+1)Θ=0\left( 1-{{x}^{2}} \right)\frac{{{\partial }^{2}}\Theta }{\partial {{x}^{2}}}-2x\frac{\partial \Theta }{\partial x}+l\left( l+1 \right)\Theta =0 \tag{12}\\
叫作l次勒讓德方程。
后面只考慮連帶勒讓德方程,它的解就稱(chēng)為連帶勒讓德函數(shù),只有當(dāng)λ=l(l+1)\lambda =l\left( l+1 \right),l=0,1,?l=0,1,\cdots 時(shí)才有有界周期解,用Plm(x)P_{l}^{m}\left( x \right)表示,即
(13)Θ(θ)=Plm(cos?θ){m=0,±1,?,±l}\Theta \left( \theta \right)=P_{l}^{m}\left( \cos \theta \right)\left\{ m=0,\pm 1,\cdots ,\pm l \right\} \tag{13}\\
經(jīng)過(guò)數(shù)學(xué)家論證,連帶勒讓德函數(shù)表示為
Pml(x)=(?1)m(1?x2)m22ll!dl+mdxl+m(x2?1)l
P_{l}^{m}\left( x \right)=\frac{{{\left( -1 \right)}^{m}}{{\left( 1-{{x}^{2}} \right)}^{\frac{m}{2}}}}{{{2}^{l}}l!}\frac{{24coeig^{l+m}}}{d{{x}^{l+m}}}{{\left( {{x}^{2}}-1 \right)}^{l}} \tag{14}\\這叫稱(chēng)為l次m階連帶勒讓德函數(shù),“次”的英文是“degree”,“階”的英文是“order”。當(dāng)l">m>l。連帶勒讓德函數(shù)里面有一個(gè)m+l次導(dǎo)數(shù)計(jì)算,在計(jì)算機(jī)上這個(gè)很難處理,但是有遞歸關(guān)系[3],即
\left\{ \begin{aligned} & \left( l-m \right)P_{l}^{m}\left( x \right)=x\left( 2l-1 \right)P_{l-1}^{m}\left( x \right)-\left( l+m-1 \right)P_{l-2}^{m}\left( x \right) \\ & P_{m}^{m}\left( x \right)={{\left( -1 \right)}^{m}}\left( 2m-1 \right)!!{{\left( 1-{{x}^{2}} \right)}^{m/2}} \\ & P_{m+1}^{m}\left( x \right)=x\left( 2m+1 \right)P_{m}^{m}\left( x \right) \\ \end{aligned} \right. \tag{15}\\
兩個(gè)!!表示雙階乘,即\left( 2m-1 \right)!!=1\cdot 3\cdot 5\cdots \left( 2m-1 \right)。連帶勒讓德函數(shù)的遞歸關(guān)系,保證了計(jì)算機(jī)實(shí)現(xiàn)的基礎(chǔ)。
此外,再給一個(gè)l次m階連帶勒讓德函數(shù)的關(guān)系等式
P_{l}^{m}\left( x \right)={{\left( -1 \right)}^{m}}\frac{\left( l+m \right)!}{\left( l-m \right)!}P_{l}^{-m}\left( x \right) \tag{16}\\
回到球函數(shù)方程(5)的求解,它的Y\left( \theta ,\varphi \right)通解的復(fù)數(shù)形式表示為
Y\left( \theta ,\varphi \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{k=-l}^{l}{P_{l}^{k}\left( \cos \theta \right){{e}^{im\varphi }}}},m=0,\pm 1,\pm 2,\cdots \tag{17}\\
嚴(yán)格來(lái)說(shuō),由于\Phi \left( \varphi \right)忽略了常數(shù)項(xiàng),這里也是忽略常數(shù)項(xiàng)的情況。一般的l次m階球諧函數(shù){{Y}_{lm}}\left( \theta ,\varphi \right)的復(fù)數(shù)形式可以表示為
{{Y}_{lm}}\left( \theta ,\varphi \right)={{P}_{lm}}\left( \cos \theta \right){{e}^{im\varphi }},m=0,\pm 1,\pm 2,\cdots \tag{18}\\
l表示球諧函數(shù)的次數(shù),m表示球諧函數(shù)的階數(shù)球諧函數(shù)的模長(zhǎng)可以表示為
{{\left( N_{l}^{m} \right)}^{2}}={{\iint\limits_{S}{{{Y}_{lm}}\left( x \right)\left[ {{Y}_{lm}}\left( x \right) \right]}}^{*}}\sin \theta d\theta d\varphi =\frac{2}{2l+1}\frac{\left( l+\left| m \right| \right)!}{\left( l-\left| m \right| \right)!}2\pi\\
歸一化的球諧函數(shù)Y_{l}^{m}\left( \theta ,\varphi \right)的復(fù)數(shù)形式可以表示為
Y_{l}^{m}\left( \theta ,\varphi \right)=K_{l}^{m}{{Y}_{lm}}\left( \theta ,\varphi \right) \tag{19}\\
其中
K_{l}^{m}=\frac{1}{N_{l}^{m}}=\sqrt{\frac{2l+1}{4\pi }\frac{\left( l-\left| m \right| \right)!}{\left( l+\left| m \right| \right)!}} \tag{20}\\
注意區(qū)分兩種數(shù)學(xué)表示的含義,{{Y}_{lm}}\left( \theta ,\varphi \right)表示一般形式的球諧函數(shù),Y_{l}^{m}\left( \theta ,\varphi \right)表示歸一化的球諧函數(shù)。
當(dāng)m>0時(shí)采用實(shí)數(shù)cos部分,當(dāng)m<0時(shí)采用虛數(shù)sin部分,則歸一化的球諧函數(shù)的實(shí)數(shù)形式可以表示為
0 \\ \sqrt{2}K_{l}^{m}\sin \left( -m\varphi \right)P_{l}^{-m}\left( \cos \theta \right) & m<0>Y_{l}^{m}\left( \theta ,\varphi \right)=\left\{ \begin{matrix} \sqrt{2}K_{l}^{m}\cos \left( m\varphi \right)P_{l}^{m}\left( \cos \theta \right) & m>0 \\ \sqrt{2}K_{l}^{m}\sin \left( -m\varphi \right)P_{l}^{-m}\left( \cos \theta \right) & m<0 \\ K_{l}^{0}P_{l}^{m}\left( \cos \theta \right) & m=0 \\ \end{matrix} \right. \tag{21}
根據(jù)上述計(jì)算公式,可以得到前面4次的球諧函數(shù),為

參見(jiàn)[6],已經(jīng)推導(dǎo)出前6次的球諧函數(shù)。
球諧函數(shù)可視化,前面幾次的三維圖像如圖1所示

至此,你應(yīng)該理解兩條重要結(jié)論:
球諧函數(shù)是拉普拉斯方程分離r變量后,角度部分通解的正交項(xiàng)(后面介紹正交性)。如何計(jì)算球諧函數(shù),可以參見(jiàn)等式(15)(20)(21)。球諧性質(zhì)
接著,討論歸一化的球諧函數(shù)的性質(zhì),它具備兩條重要的性質(zhì)構(gòu)成了它應(yīng)用的基石:
正交完備性旋轉(zhuǎn)不變性正交完備性
對(duì)于任意兩個(gè)歸一化的球諧函數(shù)在球面上的積分有
\iint\limits_{S}{Y_{l}^{m}\left( \theta ,\varphi \right)Y_{k}^{n}\left( \theta ,\varphi \right)\sin \theta d\theta d\varphi }=\left\{ \begin{matrix} 0 & m\ne n,or,l\ne k \\ 1 & m=n,l=k \\ \end{matrix} \right. \tag{21}\\
這就表示由球諧函數(shù)構(gòu)成的函數(shù)組\left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}是正交歸一化的。
以某一正交歸一函數(shù)組為基,把一個(gè)給定的函數(shù)用這些函數(shù)的線性組合來(lái)表示,這就是一種重要的展開(kāi),這種用正交函數(shù)組展開(kāi)為級(jí)數(shù)的一個(gè)顯著的例子就是傅里葉變換。
任意一個(gè)球面函數(shù)f\left( \theta ,\varphi \right)可以用正交歸一的球函數(shù)Y_{l}^{m}\left( \theta ,\varphi \right)進(jìn)行展開(kāi),這種展開(kāi)類(lèi)似于傅里葉展開(kāi),稱(chēng)為廣義傅里葉展開(kāi)
f\left( \theta ,\varphi \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{m=-l}^{l}{C_{l}^{m}Y_{l}^{m}\left( \theta ,\varphi \right)}} \tag{22}\\
其中,廣義傅里葉系數(shù)C_{l}^{m}為
C_{l}^{m}=\int_{0}^{2\pi }{\int_{0}^{\pi }{f\left( \theta ,\varphi \right)Y_{l}^{m}\left( \theta ,\varphi \right)\sin \theta d\theta d\varphi }} \tag{23}\\
當(dāng)次數(shù)l\to \infty 的時(shí)候,展開(kāi)的級(jí)數(shù)和會(huì)平均收斂于f\left(\theta ,\varphi \right)。換句話說(shuō),當(dāng)次數(shù)l越大,那么級(jí)數(shù)和就會(huì)越趨近于被展開(kāi)的函數(shù)f\left(\theta ,\varphi \right),就稱(chēng)\left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}為完備函數(shù)組。平均收斂,并不代表收斂,只是表示趨近于的含義。
從計(jì)算機(jī)的角度來(lái)說(shuō),如等式(22)所示的函數(shù)展開(kāi),n的取值不可能是無(wú)窮大,往往取一個(gè)給定系數(shù),則可以確定球諧函數(shù)組,例如n=2,那么球諧函數(shù)組就是
\left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}=\left\{ Y_{0}^{0},Y_{1}^{-1},Y_{1}^{0},Y_{1}^{1} \right\}\\
任意給定n,得到的球諧函數(shù)組的個(gè)數(shù)為
S=1+\text{3}+5+\cdots 2n-1={{n}^{2}}\\
那么,廣義傅里葉系數(shù)相當(dāng)于這樣一個(gè)排列
C_{0}^{0},C_{1}^{-1},C_{1}^{0},C_{1}^{1},C_{2}^{-2},C_{2}^{-1},\cdots\\
類(lèi)似的球諧函數(shù)也可以構(gòu)成這樣一個(gè)類(lèi)似的排列,若我們用一個(gè)普通的系數(shù){{c}_{k}}來(lái)表示上面的廣義傅里葉系數(shù),用一個(gè)函數(shù){{y}_{k}}\left( \theta ,\varphi \right)來(lái)表示球諧函數(shù),那么等式(22)可以換成另外一種形式
f\left( \theta ,\varphi \right)=\sum\limits_{k=0}^{{{n}^{2}}-1}{{{c}_{k}}{{y}_{k}}\left( \theta ,\varphi \right)} \tag{24}\\
這種形式的展開(kāi)與等式(22)是完全一樣的,它只是把球諧函數(shù)的次數(shù)展開(kāi),用一個(gè)系數(shù)來(lái)表示,但是它隱藏了一個(gè)條件:取的系數(shù)個(gè)數(shù)必需是{{n}^{2}}。
回過(guò)來(lái),球諧函數(shù)組相當(dāng)于一組正交基,將函數(shù)f\left( \theta ,\varphi \right)表示為這組正交基的線性組合,生成線性組合系數(shù)的過(guò)程就稱(chēng)為投影(Projection),例如一個(gè)函數(shù)可以表示為
f\left( \theta ,\varphi \right)\approx aY_{0}^{0}+bY_{1}^{-1}+cY_{1}^{0}+dY_{1}^{1}\\
生成系數(shù)\left\{ a,b,c,d \right\}的過(guò)程,就是投影,等式(23)就確定了投影的方法。相反,利用這組系數(shù)和正交基組合,得到原函數(shù)的過(guò)程,就稱(chēng)為重建(Reconstruction)。
投影的過(guò)程就是計(jì)算函數(shù)積分,計(jì)算消耗較大,可以采用離線處理來(lái)生成廣義傅里葉系數(shù);在實(shí)時(shí)渲染時(shí),就要簡(jiǎn)單的線性組合,就可以重建原始函數(shù)。當(dāng)然,由于是有限個(gè)系數(shù),就必然存在誤差。
我們?cè)賮?lái)看下連帶勒讓德函數(shù),如圖2所示,隨著次數(shù)的增加,函數(shù)的振動(dòng)頻率會(huì)越快。對(duì)于函數(shù)的展開(kāi)而言,振動(dòng)頻率越大的基底,它就只能表示越高頻的信息,往往一個(gè)函數(shù)里面的高頻信息量是較少的。

類(lèi)似的,球諧函數(shù)也具備這種隨著次數(shù)增加,振動(dòng)頻率增加的的特性。它就使得n的取值不需要很大時(shí),就可以得到很好的重建效果,當(dāng)然只能還原出低頻信息。根據(jù)Robin[3]得到的數(shù)據(jù),如圖3所示,當(dāng)n > 6時(shí),就能還原出整體效果,但是邊緣棱角這些高頻信息是無(wú)法還原出來(lái)的。

由球諧函數(shù)構(gòu)成的函數(shù)組構(gòu)成正交歸一的基底,對(duì)球面上的函數(shù)進(jìn)行投影和重建,也就是廣義傅里葉展開(kāi),數(shù)學(xué)上的完備性,保證了展開(kāi)結(jié)果會(huì)趨近于被展開(kāi)的函數(shù)。
旋轉(zhuǎn)不變性
第一個(gè)問(wèn)題是:什么叫旋轉(zhuǎn)不變性。
任意一個(gè)球面上的函數(shù)f\left( \theta ,\varphi \right)可以用球諧函數(shù)組作為基底展開(kāi),需要根據(jù)等式(23)計(jì)算廣義傅里葉系數(shù)C_{l}^{m}。如果我們對(duì)原函數(shù)進(jìn)行旋轉(zhuǎn)操作的話,設(shè)旋轉(zhuǎn)變換表示為R\left( \theta ,\varphi \right),我們就得到了一個(gè)新的函數(shù)f\left( R\left( \theta ,\varphi \right) \right)。對(duì)新函數(shù)進(jìn)行展開(kāi)的話,我們需要重新計(jì)算廣義傅里葉系數(shù),設(shè)為B_{l}^{m},這就有點(diǎn)為難了。在圖形渲染中,廣義傅里葉系數(shù)的生成是離線實(shí)現(xiàn)的,它的消耗很大,這就表示,一旦光源發(fā)生了旋轉(zhuǎn)后,由于原函數(shù)的改變導(dǎo)致提前生成的系數(shù)失效。旋轉(zhuǎn)不變性,表示原函數(shù)發(fā)生了旋轉(zhuǎn),只需要對(duì)生成的廣義傅里葉系數(shù)進(jìn)行變換,就能保證變換后的系數(shù)能等價(jià)還原出新函數(shù)。在圖形渲染上的表現(xiàn)就是,當(dāng)光源發(fā)生旋轉(zhuǎn)后,我們只要同步的計(jì)算出變換后的廣義傅里葉系數(shù),就能保證畫(huà)面的光照效果不會(huì)抖動(dòng)跳變。旋轉(zhuǎn)不變性,并不是表示源函數(shù)發(fā)生旋轉(zhuǎn)后,對(duì)重建結(jié)果沒(méi)有影響,而是表示通過(guò)對(duì)系數(shù)與匹配的旋轉(zhuǎn)進(jìn)行變換后,能等價(jià)的還原出旋轉(zhuǎn)后的函數(shù)。
舉個(gè)[6]實(shí)驗(yàn)的例子,如圖4所示,球諧函數(shù)表示的光照發(fā)生旋轉(zhuǎn)后,仍然能等價(jià)重建新的變換函數(shù),但是采用Ambient Cube的方法效果就出現(xiàn)了異常。

第二個(gè)問(wèn)題是:怎么對(duì)生成的系數(shù)進(jìn)行變換。
針對(duì)這個(gè)問(wèn)題,這里寫(xiě)些自己的理解,不做深入的研究。
對(duì)于l次球諧函數(shù),就會(huì)有2l + 1個(gè)系數(shù),表示為
{{C}_{l}}=\left\{ C_{l}^{-l},C_{l}^{-l+1},\cdots ,C_{l}^{l-1},C_{l}^{l} \right\} \tag{25}\\
設(shè)變換矩陣為R_{SH}^{l},它是一個(gè)(2l + 1)*(2l + 1)的矩陣,那么系數(shù)的變換就可以表示為
B_{l}^{m}=\sum\limits_{k=-l}^{k=l}{M_{l}^{m,k}C_{l}^{k}} \tag{26}\\
或者用向量與矩陣的乘積形式,表示為
{{B}_{l}}={{C}_{l}}\cdot R_{SH}^{l} \tag{27}\\
那么,經(jīng)過(guò)旋轉(zhuǎn)變換后的函數(shù)的展開(kāi)就可以表示為
f\left( R\left( \theta ,\varphi \right) \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{m=-l}^{l}{B_{l}^{m}Y_{l}^{m}\left( \theta ,\varphi \right)}} \tag{28}\\
唯一的區(qū)別就是,系數(shù)由{{C}_{l}}變成了{{B}_{l}}。
想表達(dá)的一點(diǎn)是,系數(shù)的變換是基于球諧函數(shù)的次數(shù),即第3次球諧函數(shù)的系數(shù){{B}_{3}},只能由第3次球諧函數(shù)的系數(shù){{C}_{3}}變換而來(lái)。
若取前3次的球諧函數(shù)構(gòu)成正交基,函數(shù)組共有0,1,2次三類(lèi)球諧函數(shù),若采用等式(24)的形式,則3個(gè)子矩陣需要整合成一個(gè)完整的變換矩陣,對(duì)于前3次球諧函數(shù)的例子,就組成一個(gè)9x9的變換矩陣,它的形狀如下所示。

考慮低維的情況[3]。旋轉(zhuǎn)可以用旋轉(zhuǎn)矩陣、歐拉角、四元數(shù)等方式表示,任意一個(gè)旋轉(zhuǎn)矩陣R可以用{{Z}_{\alpha }}{{Y}_{\beta }}{{Z}_{\gamma }}型的歐拉角表示,它們間的變換關(guān)系[5]表示為
\left( \begin{matrix} {{R}_{0,0}} & {{R}_{0,1}} & {{R}_{0,2}} \\ {{R}_{1,0}} & {{R}_{1,1}} & {{R}_{1,2}} \\ {{R}_{2,0}} & {{R}_{2,1}} & {{R}_{2,2}} \\ \end{matrix} \right)=\left( \begin{matrix} {{c}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }}-{{s}_{\alpha }}{{s}_{\gamma }} & {{c}_{\alpha }}{{s}_{\gamma }}+{{s}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }} & -{{s}_{\beta }}{{c}_{\gamma }} \\ -{{s}_{\alpha }}{{c}_{\gamma }}-{{c}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & {{c}_{\alpha }}{{c}_{\gamma }}-{{s}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & {{s}_{\beta }}{{s}_{\gamma }} \\ {{c}_{\alpha }}{{s}_{\beta }} & {{s}_{\alpha }}{{s}_{\beta }} & {{c}_{\beta }} \\ \end{matrix} \right) \tag{29}\\
其中,c表示cos,s表示sin。有了這個(gè)變換關(guān)系后,就很容易計(jì)算出歐拉角\alpha ,\beta ,\gamma,表示為
\begin{aligned} & \sin \beta =\sqrt{1-R_{2,2}^{2}} \\ & \left\{ \begin{aligned} & \alpha \text{=atan2f}\left( {{R}_{2,1}}/\sin \beta ,{{R}_{2,0}}/\sin \beta \right) \\ & \beta =\text{atan2f}\left( \sin \beta ,{{R}_{2,2}} \right) \\ & \gamma =\text{atan2f}\left( {{R}_{1,2}}/\sin \beta ,-{{R}_{0,2}}/\sin \beta \right) \\ \end{aligned} \right. \\ \end{aligned}\\
對(duì)于,{{R}_{2,2}}=1的退化情況,歐拉角表示為
\left\{ \begin{aligned} & \alpha \text{=atan2f}\left( {{R}_{0,1}},{{R}_{0,0}} \right) \\ & \beta =0 \\ & \gamma =0 \\ \end{aligned} \right.\\
那么,相應(yīng)l次的球諧系數(shù)的變換矩陣可以表示為
R_{SH}^{l}\left( \alpha ,\beta ,\gamma \right)={{Z}_{\gamma }}{{Y}_{-90}}{{Z}_{\beta }}{{Y}_{+90}}{{Z}_{\alpha }}\\
對(duì)于第0次的球諧變換矩陣為
R_{SH}^{0}\left( \alpha ,\beta ,\gamma \right)=\left( 1 \right) \tag{30}\\
其它維度的矩陣推導(dǎo)比較麻煩,就推導(dǎo)了第1次的球諧變換矩陣,它可以表示為
R_{SH}^{1}\left( \alpha ,\beta ,\gamma \right)=\left( \begin{matrix} {{c}_{\alpha }}{{c}_{\gamma }}-{{s}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & -{{s}_{\beta }}{{s}_{\gamma }} & -{{s}_{\alpha }}{{c}_{\gamma }}-{{c}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} \\ -{{s}_{\alpha }}{{s}_{\beta }} & {{c}_{\beta }} & -{{c}_{\alpha }}{{s}_{\beta }} \\ {{c}_{\alpha }}{{s}_{\gamma }}+{{s}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }} & {{s}_{\beta }}{{c}_{\gamma }} & {{c}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }}-{{s}_{\alpha }}{{s}_{\gamma }} \\ \end{matrix} \right)=\left( \begin{matrix} {{R}_{1,1}} & -{{R}_{1,2}} & {{R}_{1,0}} \\ -{{R}_{2,1}} & {{R}_{2,2}} & {{R}_{2,0}} \\ {{R}_{0,1}} & -{{R}_{0,2}} & {{R}_{0,0}} \\ \end{matrix} \right)\\
變換矩陣R_{SH}^{l}的計(jì)算可以參見(jiàn)附錄D3D的實(shí)現(xiàn),實(shí)現(xiàn)了前6次的球諧系數(shù)的旋轉(zhuǎn),對(duì)于圖形渲染來(lái)說(shuō),已經(jīng)夠用了。
對(duì)于高維矩陣的構(gòu)造方法非常的復(fù)雜,采用的是魏格納d矩陣(Wigner d-matrices),可以參見(jiàn)文獻(xiàn)[4]的討論,網(wǎng)上也有這個(gè)算法的高效實(shí)現(xiàn),有興趣可以研究研究,參見(jiàn)SHTns。
附錄
根據(jù)等式(15)的遞歸關(guān)系,就可以很容易計(jì)算出連帶勒讓德函數(shù)[3]。
根據(jù)等式(20)(21),可以計(jì)算出球諧函數(shù)[3]。
在D3D中實(shí)現(xiàn)的球諧系數(shù)的旋轉(zhuǎn)D3DXSHRotate的實(shí)現(xiàn)為:
參考
[1] 姚端正, 梁家寶. 數(shù)學(xué)物理方法-第4版..
[2] 顧樵. 數(shù)學(xué)物理方法.
[3] Robin Green. "Spherical harmonic lighting: The gritty details." Archives of the Game Developers Conference. Vol. 56. 2003.
[4] Joseph Ivanic, and Klaus Ruedenberg. "Rotation matrices for real spherical harmonics. Direct determination by recursion." The Journal of Physical Chemistry 100.15, 6342-6347, 1996.
[5] Wikipea. Euler angles
[6] Peter-Pike Sloan. "Stupid spherical harmonics (sh) tricks." Game developers conference. Vol. 9. 2008.
[7] Ravi Ramamoorthi, and Pat Hanrahan. "An efficient representation for irradiance environment maps." Proceedings of the 28th annual conference on Computer graphics and interactive techniques. 2001.
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由財(cái)神資訊-領(lǐng)先的體育資訊互動(dòng)媒體轉(zhuǎn)載發(fā)布,如需刪除請(qǐng)聯(lián)系。