本發(fā)明涉及一種三維場(chǎng)景輻射亮度的漸進(jìn)式估算方法。
背景技術(shù):
漸進(jìn)式光子映射方法及相關(guān)工作
2008年,Toshiya等人提出了漸進(jìn)式光子映射方法(PPM)(Toshiya T.,Ogaki S.,Jensen H.W.:Progressive photon mapping.ACM Trans.Graph.27,5(Dec.2008),130:1–130:8),這是第一個(gè)基于光子映射的漸進(jìn)式全局光照明算法。相比標(biāo)準(zhǔn)的光子映射,漸進(jìn)式光子映射不需要把用于輻射亮度估算的光子同時(shí)全部存儲(chǔ)下來(lái),利用漸進(jìn)式的算法流程獲得比光子映射更加準(zhǔn)確的收斂結(jié)果。2009年,Toshiya提出隨機(jī)性的漸進(jìn)式光子映射(SPPM)(Toshiya T.,Jensen H.W.:Stochastic progressive photon mapping.ACM Trans.Graph.28,5(Dec.2009),141:1–141:8),該算法可以計(jì)算相交點(diǎn)附近區(qū)域的輻射亮度值用其作為相交點(diǎn)的輻射亮度,加入隨機(jī)性的漸進(jìn)式光子映射算法可以獲得更好的穩(wěn)定性和擴(kuò)展性,SPPM算法的改進(jìn)在于在每一個(gè)光子追蹤過(guò)程遍(photon tracing pass)執(zhí)行時(shí),重新進(jìn)行一遍光線追蹤過(guò)程(ray tracing pass),即在照相機(jī)參數(shù)不變的情況下得到一組新的相交點(diǎn)信息,然后利用當(dāng)前遍的光子圖為新的相交點(diǎn)計(jì)算輻射亮度,然后計(jì)算累積輻射通量并得到最終繪制的圖像。重新進(jìn)行光線追蹤過(guò)程使得漸進(jìn)式光子映射算法(SPPM)可以方便的實(shí)現(xiàn)抗鋸齒處理以及類(lèi)似景深、運(yùn)動(dòng)模糊等效果,從而可以完善地應(yīng)用于更多真實(shí)感繪制的場(chǎng)景。Weiss和Grosch拓展SPPM算法到動(dòng)態(tài)場(chǎng)景中實(shí)現(xiàn)對(duì)動(dòng)態(tài)的物體和材質(zhì)的高效模擬(Weiss M.,Grosch T.:Stochastic progressive photon mapping for dynamic scenes.In Computer Graphics Forum,vol.31.2012,pp.719–726)。Günther和Grosch提出了一種SPPM的分布式的核外算法,對(duì)算法的具體實(shí)際應(yīng)用做了進(jìn)一步研究(Günther T.,Grosch T.:Distributed out-of-core stochastic progressive photon mapping.In Computer Graphics Forum(2014),vol.33,Wiley Online Library,pp.154–166.)。文中場(chǎng)景幾何體和發(fā)射的光子同時(shí)被劃分為多個(gè)部分,所有的光線被設(shè)定在一個(gè)門(mén)戶(hù)系統(tǒng)。Toshiya等人描述了一個(gè)針對(duì)偏差和噪聲的錯(cuò)誤估算框架同時(shí)提出了繪制終止條件,這是第一個(gè)針對(duì)內(nèi)核產(chǎn)生的偏差和噪聲的量化工作(Toshiya T.,Jarosz W.,Jensen H.W.:A progressive error estimation framework for photon density estimation.ACM Trans.Graph.29,6(Dec.2010),144:1–144:12)。為了消除噪聲,Spencer和Jones引入了光子擴(kuò)散方法(Spencer B.,Jones M.W.:Into the blue:Better caustics through photon relaxation.In Computer Graphics Forum(2009),vol.28,Wiley Online Library,pp.319–328),在該算法中作者沒(méi)有嘗試發(fā)射更多的光子而是通過(guò)將原始的光子圖重布為具備藍(lán)色噪聲光譜的光子圖,然后再利用新的光子圖進(jìn)行輻射亮度估算的工作。作者也提出了一個(gè)啟發(fā)式方法來(lái)檢測(cè)和保留重要的光子分布特征和光子連接性。2013年作者又將漸進(jìn)式光子映射的策略引入到光子重布中提出了漸進(jìn)式光子重布來(lái)消除噪聲和剩余的偏差(Spencer B.,Jones M.W.:Progressive photon relaxation.ACM Trans.Graph.32,1(Feb.2013),7:1–7:11.)。但是光子重布算法將光子圖從非均勻到均勻化轉(zhuǎn)化的過(guò)程非常耗時(shí)。
主要符號(hào)對(duì)照表
漸進(jìn)式光子映射輻射亮度估算
與標(biāo)準(zhǔn)的光子映射算法的KNN(k-Nearest Neighbor)收集策略不同的是,PPM使用預(yù)先設(shè)置的半徑r(稱(chēng)為估算內(nèi)核半徑)來(lái)收集光子,即在相交點(diǎn)x附近假想半徑為r的球,所有包含在球內(nèi)的光子被收集起來(lái)用于輻射亮度估算,這種方法本質(zhì)上與KNN的光子可視化方法是一致的,只是將限制條件由光子個(gè)數(shù)變?yōu)楣浪惆霃?。PPM使用與光子映射相同的估算方程來(lái)計(jì)算輻射亮度,估算面積是產(chǎn)生偏差的根源,光子的追蹤本身是無(wú)偏差的,但是光子分布的結(jié)果用于輻射亮度估算就產(chǎn)生丟失細(xì)節(jié)的模糊現(xiàn)象。隨著光子密度提高,輻射亮度估算會(huì)最終收斂到正確的解決方案,這一點(diǎn)保證PPM是一個(gè)具有一致性的算法。
為了保證PPM算法最終收斂并得到正確的結(jié)果需要光子圖包含無(wú)窮多的光子,同時(shí)估算半徑收斂趨近于0。為了達(dá)到這個(gè)目標(biāo),PPM方法中假設(shè)一個(gè)光子追蹤過(guò)程生成的光子圖包含N個(gè)光子,但是這些光子中只有Nβ個(gè)光子參與到當(dāng)前遍的密度估算。隨著發(fā)射無(wú)窮多遍光子追蹤過(guò)程,N和Nβ都會(huì)趨近于無(wú)窮大,但是由于Nβ無(wú)限小于N,可以保證估算半徑r能夠收斂到0,輻射亮度估算可以寫(xiě)成如下形式:
公式(1)
利用該方法可以在理論上得到任意精度的輻射亮度估算結(jié)果。PPM算法在每遍光子追蹤過(guò)程中使用固定數(shù)目的光子,之后利用半徑收斂策略逐漸接近實(shí)現(xiàn)公式中對(duì)于無(wú)限大光子圖的需求。
半徑收斂
經(jīng)典的光子圖輻射亮度估算依賴(lài)于局部光子密度的估算,相交點(diǎn)x局部的光子密度計(jì)算公式如下:
公式(2)
其中對(duì)于相交點(diǎn)x,n個(gè)最近光子處在以x點(diǎn)為圓心以r為半徑的球空間內(nèi),并且假設(shè)在半徑為r的圓盤(pán)局部是平坦的。PPM方法假想用另外一張光子圖,并使用它計(jì)算x點(diǎn)處的光子密度,那么對(duì)于同樣大小r的圓盤(pán)可能會(huì)獲得n'個(gè)光子,那么新的光子密度為
公式(3)
通過(guò)求出d(x)和d'(x)的平均值,可以獲得更加精確的光子密度,這種方法也可以獲得更加平衡的輻射亮度結(jié)果,但是并沒(méi)有生成比每張光子圖更多的細(xì)節(jié),這種平均結(jié)果最終會(huì)一致收斂得到x點(diǎn)的正確計(jì)算結(jié)果。只要半徑r固定,就無(wú)法產(chǎn)生更詳細(xì)的局部細(xì)節(jié),并且輻射亮度的精確性依賴(lài)于每張光子圖中光子的總數(shù)。為了獲得更加精確的輻射亮度估算,產(chǎn)生更加詳細(xì)的局部細(xì)節(jié),必須增大使用光子的數(shù)目并減小估算半徑。使用累積光子的概念可以很好地達(dá)到有限存儲(chǔ)空間獲得無(wú)窮大光子的目的,PPM算法指出保持估算范圍內(nèi)的光子密度是利用有限存儲(chǔ)空間獲取無(wú)窮大光子圖的關(guān)鍵。
初始條件下,x點(diǎn)處的估算半徑R(x)被設(shè)置為一個(gè)非0的正值,使用第一遍生成的光子圖,光子密度為d(x)。假設(shè)經(jīng)過(guò)幾遍光子追蹤過(guò)程之后,x點(diǎn)處收集的累積光子數(shù)目為N(x)個(gè),并假設(shè)對(duì)于當(dāng)前生成的新的光子圖,使用估算半徑R(x)收集到M(x)個(gè)光子,將M(x)個(gè)光子添加到光子密度計(jì)算中得到:
公式(4)
之后將估算半徑縮小dR(x)得到新的估算半徑PPM方法假設(shè)x點(diǎn)處的光子密度是恒定不變的,即在估算半徑收縮過(guò)程中保持光子密度不變??s小半徑之后,半徑內(nèi)所包含的光子數(shù)目為:
公式(5)
半徑收縮之后,總光子數(shù)目使用參數(shù)α控制每張光子圖保留的光子數(shù)目。即
公式(6)
該公式表明了在每一遍光子收集過(guò)程中將會(huì)添加αM(x)個(gè)新的光子用于累積到x點(diǎn)處的光子密度。利用公式可以計(jì)算得出,新的輻射亮度估算半徑(即收縮之后的半徑)為:
公式(7)
輻射通量累積
PPM算法中,將為每一個(gè)相交點(diǎn)x在多遍繪制過(guò)程中存儲(chǔ)沒(méi)有歸一化的總輻射通量與BRDF的乘積,將該形式量定義為對(duì)于N(x)光子計(jì)算公式如下:
公式(8)
其中是相交點(diǎn)x處光線的方向,是入射光子的方向,是沒(méi)有歸一化的光子p所攜帶的輻射通量。如果光子的估算半徑是固定的,那么就可以直接將添加到上,但是對(duì)于估算半徑縮小的情況,假設(shè)光子密度在圓盤(pán)的估算范圍內(nèi)是不變的,可以得到如下結(jié)果:
公式(9)
其中,是半徑收縮到對(duì)應(yīng)光子之后的累積值。有了累積的計(jì)算公式可以得到在漸進(jìn)式光子映射中用于輻射亮度估算的公式:
公式(10)
如果半徑為R(x)的圓盤(pán)中沒(méi)有被光子點(diǎn)亮,即沒(méi)有從光子圖中收集到有效的光子,R(x)在下一遍光子追蹤過(guò)程中就不會(huì)縮小。盡管這種情況破壞了半徑縮小的條件但是輻射亮度估算最終收斂到這正確的結(jié)果,即PPM算法得到輻射亮度估算結(jié)果在多遍光子追蹤的輻射亮度估算過(guò)程中逐漸收斂到正確的結(jié)果,利用上述公式推導(dǎo)的輻射亮度估算能夠保證半徑逐漸收縮到0,同時(shí)估算范圍內(nèi)的光子密度可以得到保持,生成的圖像會(huì)產(chǎn)生更加詳細(xì)的局部細(xì)節(jié),最終得到的結(jié)果也更加準(zhǔn)確。
但是,經(jīng)典的PPM算法在兩遍相鄰的光子追蹤過(guò)程之間,估算半徑的縮小和收斂依賴(lài)于一個(gè)預(yù)先設(shè)定的固定不變的收縮因子α。這個(gè)收縮因子α是一個(gè)與局部表面幾何特征無(wú)關(guān)、與當(dāng)前光子的分布無(wú)關(guān)的量。由于相交點(diǎn)的輻射亮度依賴(lài)于x點(diǎn)附近收集到的光子的輻射度,因此與相交點(diǎn)x的平均輻射度具有較大差異值的光子可能會(huì)對(duì)最終的結(jié)果產(chǎn)生估算錯(cuò)誤。例如,對(duì)于處在焦散區(qū)域邊緣的相交點(diǎn),如果使用不適合估算內(nèi)核收集光子可能會(huì)導(dǎo)致光子輻射量的過(guò)少估算,相反,對(duì)于處在靠近焦散區(qū)域的相交點(diǎn)則可能會(huì)導(dǎo)致光子輻射量的過(guò)多估算,那么最終的估算結(jié)果會(huì)產(chǎn)生模糊的焦散區(qū)域。盡可能的去除這些差異值較大的光子(判定為噪聲光子)對(duì)最終輻射量的貢獻(xiàn)可以有效地減少錯(cuò)誤。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種三維場(chǎng)景輻射亮度的漸進(jìn) 式估算方法。本發(fā)明使用基于局部表面光照特征分析的策略來(lái)優(yōu)化獲得更為精確的輻射亮度估算和漸進(jìn)式的累積輻射亮度估算。漸進(jìn)過(guò)程中的下一遍估算內(nèi)核的半徑需要收縮小到剛好將這些噪聲光子排除在外。為了保證輻射度在漸進(jìn)式估算中得到一致收斂的結(jié)果,本發(fā)明優(yōu)先去除每遍光子追蹤過(guò)程中那些妨礙輻射度收斂的光子及其所占據(jù)的輻射面積。
本發(fā)明的技術(shù)方案為:
一種三維場(chǎng)景輻射亮度的漸進(jìn)式估算方法,其步驟為:
1)采用光線跟蹤技術(shù)對(duì)輸入的三維場(chǎng)景進(jìn)行繪制遍,得到光線與場(chǎng)景的交點(diǎn)x;
2)針對(duì)每一交點(diǎn)x,確定其初始光子收集的估算內(nèi)核半徑R;然后開(kāi)始漸進(jìn)式多遍光子追蹤,直至交點(diǎn)x的當(dāng)前估算內(nèi)核半徑R小于設(shè)定閾值Rmin或者光子追蹤的遍數(shù)大于設(shè)定閾值Npass_max;其中,光子追蹤過(guò)程為:
21)從設(shè)定光源發(fā)射光子生成該三維場(chǎng)景的光子圖;
22)收集該交點(diǎn)x當(dāng)前估算內(nèi)核半徑R內(nèi)的光子,得到一個(gè)光子集合;
23)根據(jù)該交點(diǎn)x的光子集合,計(jì)算該交點(diǎn)x當(dāng)前估算內(nèi)核半徑R內(nèi)的累積輻射通量;
24)計(jì)算該光子集合內(nèi)每一光子的輻射通量密度差異,然后將輻射通量密度差異最大的光子作為噪聲光子,從該光子集合中去除;
25)根據(jù)步驟24)優(yōu)化后的光子集合計(jì)算該交點(diǎn)x的估算內(nèi)核半徑R;
3)根據(jù)步驟2)最終得到的所有交點(diǎn)x的光子集合,計(jì)算該三維場(chǎng)景的最終累積輻射亮度。
進(jìn)一步的,所述累積輻射通量的計(jì)算方法為:首先計(jì)算第i遍光子追蹤后交點(diǎn)x的估算內(nèi)核半徑Ri-1內(nèi)的累積輻射通量密度為:為第i-1遍之后的累積輻射通量密度,Ri-1為第i-1遍之后的估算內(nèi)核半徑,Ei為交點(diǎn)x第i遍估算內(nèi)核半徑Ri-1內(nèi)所獲得的所有光子的平均輻射通量密度;然后計(jì)算光子集合Si中每一個(gè)光子ep所占據(jù)區(qū)域的平均輻射通量密度E(i,p);然后計(jì)算每一光子ep的平均輻射通量密度E(i,p)與交點(diǎn)x的累積輻射通量密度之間的差異值ζ(i,p);其中,Si是由以交點(diǎn)x為圓心以Ri-1為半徑的半球收集到的光子集合。
進(jìn)一步的,根據(jù)公式計(jì)算所述差異值。
進(jìn)一步的,所述根據(jù)光子集合計(jì)算交點(diǎn)x的估算內(nèi)核半徑R的方法為:設(shè)Pζ為噪聲光子eζ的空間位置,首先將當(dāng)前光子集合中超越位置Pζ的光子去除,然后根據(jù)得到的光子集合計(jì)算交點(diǎn)x當(dāng)前估算內(nèi)核半徑R內(nèi)的累積輻射通量;然后根據(jù)該累積輻射通量計(jì)算所述估算內(nèi)核 半徑R。
進(jìn)一步的,所述估算內(nèi)核半徑R的計(jì)算方法為:首先利用公式計(jì)算所述累積輻射通量;然后得出第i遍光子追蹤的估算內(nèi)核半徑其中,li(x)=|x-Pζ|是以交點(diǎn)x為圓心的圓盤(pán);Ri-1(x)為第i-1遍光子追蹤的估算內(nèi)核半徑。
進(jìn)一步的,使用經(jīng)過(guò)過(guò)濾后光子集合S′i計(jì)算得到x點(diǎn)附近收集光子的精確輻射通量理想的估算半徑設(shè)為r,然后以為理想估算內(nèi)核面積為πr2的輻射通量,則理想估算內(nèi)核面積πr2產(chǎn)生的理想輻射通量為:
ΔAp是集合S′i中光子p的輻射亮度估計(jì)面積,由每個(gè)光子所占的物體表面的面積決定。
進(jìn)一步的,采用公式計(jì)算所述最終輻射亮度其中,Nemitted是從設(shè)定光源累積發(fā)出的光子個(gè)數(shù),S′i為交點(diǎn)x的光子集合,n是集合S′i中的光子總數(shù),是交點(diǎn)x處光線的方向,R(x)是漸進(jìn)過(guò)程最終得到的理想收斂半徑,r為理想估算半徑;是交點(diǎn)x當(dāng)前遍的光子所產(chǎn)生的理想輻射通量與BRDF的乘積量,為交點(diǎn)x之前所有遍累積的光子所產(chǎn)生的理想輻射通量與BRDF的乘積量,是兩者結(jié)合之后所累積產(chǎn)生的輻射通量與BRDF的乘積量。
進(jìn)一步的,確定交點(diǎn)x的初始光子收集的估算內(nèi)核半徑R的方法為:將交點(diǎn)x所在的多邊形的內(nèi)切圓的半徑長(zhǎng)度或者外接圓的半徑長(zhǎng)度作為初始光子收集的估算內(nèi)核半徑。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
本發(fā)明由于能夠去除漸進(jìn)式策略中收集到的某些差異性較大的噪聲光子,同時(shí)不同于傳統(tǒng)固定收縮的模式而采用了更快和更準(zhǔn)確的漸進(jìn)式光子映射估算內(nèi)核半徑的收縮方法;以此能夠提供更加逼真的真實(shí)感光照繪制效果以及更加快速的真實(shí)感繪制效率。
同時(shí),本發(fā)明可以根據(jù)相交點(diǎn)所在幾何表面的表示精細(xì)度進(jìn)行動(dòng)態(tài)調(diào)整,因此具有比固定半徑更好的實(shí)適應(yīng)性。
附圖說(shuō)明
圖1為本發(fā)明的流程圖;
圖2為半徑收縮示意圖;
(a)第i-1遍累積的光子分布,光子收集半徑為Ri-1;
(b)第i遍新加入的光子與原有累積的光子;
(c)按照本發(fā)明的規(guī)則,收集光子的半徑進(jìn)行收縮,新的半徑為Ri。
圖3本發(fā)明所采用方法得到的效果圖與其它方法的比較圖;
(a)采用本發(fā)明方法進(jìn)行繪制所獲得的結(jié)果;
(b)采用SPPM方法進(jìn)行繪制所獲得的結(jié)果。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)描述。本發(fā)明的方法流程如圖1所示。
發(fā)明步驟如下:
1)輸入待繪制三維場(chǎng)景;
2)在光線跟蹤繪制遍(ray tracing pass),采用光線跟蹤過(guò)程計(jì)算光線與場(chǎng)景的交點(diǎn)x;
3)針對(duì)每個(gè)相交點(diǎn)確定初始光子收集的估算內(nèi)核半徑R,每個(gè)相交點(diǎn)的初始估算內(nèi)核半徑依據(jù)其表面網(wǎng)格中多邊形形態(tài)采用不同的初始數(shù)值;
4)開(kāi)始漸進(jìn)式多遍光子追蹤過(guò)程(photon tracing pass);
4.1從光源發(fā)射光子,生成該三維場(chǎng)景的光子圖;
4.2利用各種可能的方法收集x處位于估算半徑R之內(nèi)的光子;
4.3計(jì)算x點(diǎn)附近估算半徑R內(nèi)光子的累積輻射通量;
4.4比較收集到光子的輻射通量密度差異;
4.5去除掉其中最大的噪聲光子;
4.6如果某個(gè)相交點(diǎn)x的內(nèi)核估算半徑R大于某個(gè)設(shè)定的閾值Rmin時(shí),則重新計(jì)算收縮之后的新的內(nèi)核估算半徑R;否則該點(diǎn)的內(nèi)核估算半徑保持不變;
4.7當(dāng)所有相交點(diǎn)x收縮半徑均小于某個(gè)設(shè)定的閾值Rmin時(shí),或者光子跟蹤的遍數(shù)大于某個(gè)閾值Npass_max時(shí),轉(zhuǎn)到步驟5;否則轉(zhuǎn)到步驟4.1。
5)多遍光子追蹤過(guò)程結(jié)束,計(jì)算最終的累積輻射亮度。
下面對(duì)本發(fā)明的一些步驟進(jìn)行進(jìn)一步詳細(xì)描述。
累積輻射通量密度及比較輻射通量密度差異
與標(biāo)準(zhǔn)PPM算法不同,本發(fā)明使用輻射通量密度(或者輻照度)而不是光子密度作為漸進(jìn)式密度估算中需要保持的量。假設(shè)在i-1遍之后累積的輻射通量密度為并且經(jīng)過(guò)i-1遍之后的估算內(nèi)核半徑為Ri-1,當(dāng)前遍(第i遍)估算內(nèi)核半徑為Ri-1內(nèi)所獲得的所有光子的平均輻射通量密度為Ei。
則第i遍光子追蹤之后精確的累積輻射通量密度為:
公式(11)
假設(shè)Si是由以x為圓心以Ri-1為半徑的半球收集到的光子集合。對(duì)于Si中每一個(gè)光子ep,我們計(jì)算在每一個(gè)光子所占據(jù)區(qū)域的平均輻射通量密度E(i,p)(光子所占據(jù)區(qū)域,既可以用voronoi區(qū)域劃分,也可以采用其它形式劃分),接著計(jì)算該光子的輻射度與相交點(diǎn)x的累積輻射通量密度之間的差異值ζ(i,p)
公式(12)
包含與較大差異的光子集合定義如下:
公式(13)
其中具有最大差異值的光子是:
公式(14)
去除噪聲光子
通過(guò)上面步驟得到的輻射通量密度值,我們方便地采用截尾均值策略來(lái)為最終輻射計(jì)算減少隨機(jī)噪聲的產(chǎn)生。針對(duì)當(dāng)前遍中輻射度差異較大的光子,我們將其所攜帶的輻射通量和輻射面積同時(shí)從內(nèi)核估算中剔除,剩余光子所攜帶的輻射通量對(duì)輻射亮度計(jì)算仍然有效,該方法可以獲得控制噪聲的效果。實(shí)現(xiàn)如下:使用一個(gè)臨時(shí)的光子集合作為輻射亮度估算的輻射量來(lái)源,對(duì)噪聲光子過(guò)濾后形成集合如下:
S′i=S′i/eζ
使用新的集合S′i中的光子代入到輻射亮度估算公式中可以有效減少光子輻射亮度估算的噪聲。
重新計(jì)算收縮之后的新的內(nèi)核估算半徑R
在計(jì)算新的內(nèi)核估算半徑過(guò)程中,輻射通量密度將作為指導(dǎo)半徑收縮的主要依據(jù)。
設(shè)Pζ為噪聲光子eζ的空間位置,那些超越位置Pζ的光子需要從累積輻射通量計(jì)算中去除,我們使用以點(diǎn)x為圓心的圓盤(pán)為隨后的光子追蹤過(guò)程保留輻射通量。這個(gè)圓盤(pán)的計(jì)算為
li(x)=|x-Pζ| 公式(15)
處在半徑Ri(x)內(nèi)的新的輻射通量包含兩個(gè)部分:從前i-1遍過(guò)程累積的輻射通量和當(dāng)前第i遍落入半徑為li(x)圓盤(pán)中的輻射通量,
公式(16)
所以用于下一遍輻射亮度估算的估算半徑Ri(x)為:
公式(17)
如果集合Ti是空集,表明當(dāng)前估算半徑內(nèi)的光子分布均勻不含噪聲光子,則輻射亮度估算半徑在下一遍過(guò)程中保持不變。如果估算內(nèi)核包含過(guò)多或者過(guò)少的輻射量,我們采用減小估算半徑來(lái)去除差異性較大光子,圖2展示了半徑收縮過(guò)程。圖2中Ri-1(x)用于估算第i遍的光子收集,圖(a)中灰色圓點(diǎn)是經(jīng)過(guò)i-1遍之后累積的光子,圖(b)中新一遍過(guò)程中收集的光子用較粗一些的圓點(diǎn)表示并疊加到原有的i-1遍累積的光子圖中,圖(c)中我們從中找到具有最大累積輻射度差異值的光子eζ,用灰度最深且具有底紋的圓點(diǎn)表示,利用該圓點(diǎn)計(jì)算出新的收縮半徑為Ri。
公式中的半徑收縮策略確保了輻射亮度估算趨向于沒(méi)有偏差錯(cuò)誤,通過(guò)去除包含輻射亮度差異較大的光子的輻射通量,累積輻射度可以一致地收斂到穩(wěn)定結(jié)果。與PPM依賴(lài)于光子密度的漸進(jìn)估算策略不同,本發(fā)明使用輻射量密度這一與輻射亮度聯(lián)系更密切的量作為收斂條件。一旦輻射量密度差異減少,半徑收縮速度會(huì)逐漸減慢。
累積輻射通量
本發(fā)明算法為漸進(jìn)式光子映射引入更加精確的輻射度計(jì)算。為漸進(jìn)式密度估算引入中間量的概念,我們計(jì)算出更加精確的計(jì)算的含義與公式8的含義相同)。同時(shí)是相交點(diǎn)x所在局部表面(逼近無(wú)窮小)輻射度的精確表達(dá),在漸進(jìn)式 光子映射中保持精確的可以實(shí)現(xiàn)精確的輻射亮度估算。首先使用經(jīng)過(guò)過(guò)濾后光子集合S′i計(jì)算得到精確的輻射通量假設(shè)理想的估算半徑為r,然后以為理想估算內(nèi)核面積為πr2的輻射通量,則理想估算內(nèi)核面積πr2產(chǎn)生的理想輻射通量為:
公式(18)
其中ΔAp為光子p的輻射亮度估算面積,由每個(gè)光子所占的物體表面的面積決定,計(jì)算每個(gè)光子所覆蓋的面積可以采用多種表面剖分形式實(shí)現(xiàn)(例如Voronoi剖分等)。隨后,計(jì)算得到收縮后統(tǒng)一半徑之內(nèi)的理想累積量:
公式(19)
其中,Ri(x)表示每一遍收縮之后的半徑,Ri-1(x)表示收縮之前的半徑。
最終的輻射亮度估算公式為:
公式(20)
這里Nemitted是從光源累積發(fā)出的光子個(gè)數(shù),R(x)是漸進(jìn)過(guò)程最終得到的理想收斂半徑,πR(x)2作為估算內(nèi)核的面積,但是已經(jīng)通過(guò)精確的內(nèi)核估算算法將非精確內(nèi)核估算產(chǎn)生的偏差從理想的累積輻射量中剔除,同時(shí)也消除了在漸進(jìn)式估算中輻射度差異較大的噪聲光子的影響。圖3是采用本發(fā)明方法進(jìn)行繪制與SPPM方法進(jìn)行繪制所生成的結(jié)果圖的對(duì)比,圖中用方框框出的即為對(duì)比明顯的區(qū)域,圖中可以看出本方法所獲得的結(jié)果具有更加準(zhǔn)確的細(xì)節(jié)和更加逼真的效果。
本發(fā)明除了利用輻射度來(lái)刪除噪聲過(guò)大的光子之外,也為初始估算半徑的設(shè)定提供依據(jù)。在標(biāo)準(zhǔn)的PPM算法中,每個(gè)相交點(diǎn)x的初始半徑對(duì)于輻射亮度估算產(chǎn)生重要影響,通常如果半徑設(shè)的過(guò)小,那么PPM算法在開(kāi)始一遍過(guò)程中得到繪制效果會(huì)包含較大的噪聲,另一方面,如果一開(kāi)始設(shè)的半徑過(guò)大,由于引入了太多距離“較遠(yuǎn)”的光子加入輻射亮度估算,使得開(kāi)始一遍中得到畫(huà)面模糊而丟失細(xì)節(jié),那么就需要更多遍過(guò)程來(lái)消除偏差增添細(xì)節(jié),這一現(xiàn)象在繪制焦散現(xiàn)象時(shí)尤其突出,PPM算法的局限性也在于它沒(méi)有為不同的相交點(diǎn)x設(shè)置不同的初始化內(nèi)核估算半徑。從上面的描述可以看出,偏差和噪聲實(shí)質(zhì)上是兩個(gè)相互矛盾的錯(cuò)誤類(lèi)型,在光子有限的條件下為了降低噪聲就可能引入更多的偏差;相反,如果想淡化可見(jiàn)偏差,就 必須要以生成噪聲為代價(jià)。那么如何選取初始半徑來(lái)取得兩者的平衡點(diǎn)稱(chēng)為噪聲控制的重要問(wèn)題。我們的算法由于為場(chǎng)景建立了攜帶表面區(qū)域信息的幾何結(jié)構(gòu),從中可以得到相交點(diǎn)所在當(dāng)前表面網(wǎng)格的形狀特征,同時(shí)也可以獲得在其上分布的光子信息,在這種條件下,以盡可能小的半徑包括更多的光子便是半徑選取的一個(gè)局部最優(yōu)解rm,為了算法具有更高的實(shí)用性,本發(fā)明將PPM算法中統(tǒng)一的初始半徑設(shè)置為初始半徑的閾值上限,然后計(jì)算出基于初始光子圖的最優(yōu)解rm作為初始的內(nèi)核估算半徑(rm為第m個(gè)相交點(diǎn)的最優(yōu)初始半徑)。這樣的做法可以擺脫固定初始內(nèi)核估算半徑導(dǎo)致的輻射亮度估算不均勻同時(shí),快速找到產(chǎn)生噪聲較少的初始輻射亮度估算半徑。局部最優(yōu)解rm難以給出精確的計(jì)算表達(dá),在實(shí)際的實(shí)現(xiàn)中,我們可以選取相交點(diǎn)x所在的多邊形的內(nèi)切圓的半徑長(zhǎng)度或者外接圓的半徑長(zhǎng)度為一個(gè)合適的初始估算內(nèi)核半徑,該方法可以根據(jù)相交點(diǎn)所在幾何表面的表示精細(xì)度進(jìn)行動(dòng)態(tài)調(diào)整,因此具有比固定半徑更好的實(shí)適應(yīng)性。