專利名稱:基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法。
背景技術(shù):
在真實(shí)感渲染中,輻射度算法在物理逼真渲染中占有很重要的地位,尤其是在全局光照中,他將光的傳播看成了ー種能量的傳播,將光解釋成為離散的粒子態(tài)能量從而具有了很好的物理基礎(chǔ),通過各種改進(jìn)手段可以逼真實(shí)現(xiàn)除了光的衍射和干渉之外的任意效果O次表面散射(subsurface scattering)是指光從物體表面某點(diǎn)進(jìn)入物體,經(jīng)內(nèi)部散射,最終從物體表面其他頂點(diǎn)出射的光線傳遞過程。具有次表面散射性質(zhì)的物體一般具 有較為圓潤的外觀色澤,這種現(xiàn)象在半透明材質(zhì)上表現(xiàn)的更為明顯。由于次表面物體存在多次散射讓光路變得尤為復(fù)雜,傳統(tǒng)的path-tracing,以及monte-carlo的光線跟蹤可以很好的模擬次表面散射物體的全局光照效果,但是代價(jià)太高,得到一個(gè)較好的效果圖往往需要數(shù)天甚至數(shù)月的時(shí)間。近年來,專家學(xué)者們在次表面散射物體的全局光照方面取得了一定的研究成果I)次表面散射次表面散射(BSSRDF)其在數(shù)學(xué)表達(dá)上是一個(gè)八個(gè)維度的函數(shù)JmsrdAxi,Λ冶肩;ん凡,見展)。其入射和出射方向角可以用參數(shù)岣汛,Ψ )和%( 爲(wèi))來表示,其入射位置和出射位置可以用參數(shù)PiO^yi)和P()(X(),y。)來表示,則其數(shù)學(xué)表達(dá)形式為S(P7,mt-,po,ma)= (f ぃC°u、其中表示BSSRDF的函數(shù)值,表示出射光線的強(qiáng)度強(qiáng),表示入射光線的輻照度。最初利用path-tracing以及ray-tracing來模擬次表面散射效果,雖然可以得到較好的效果,但是代價(jià)太大。2001年,Jensen等在假定次表面散射表面為無限大半平面的情況下,簡化了漫散射模型,提出了偶極光源(Dipole)近似的方法將BSSRDF中光照模型分解為單次次表面散射和多次次表面散射,并在多次次表面散射中首先使用了偶極光源的方法進(jìn)行了近似計(jì)算,可以獲得較快的繪制速度。2003年,對于部分次表面散射物體都無法滿足無限大半平面的假設(shè),Craig Donner等提出了 dipole模型的修正模型multi-dipole模型,采用多個(gè)偶極子來逼近新的臨界條件。Craig Donner等在2009年提出了一種經(jīng)驗(yàn)公式的BSSRDF的多次散射計(jì)算模型,通過測量得到的大量的數(shù)據(jù)來模擬次表面散射的真實(shí)狀況,實(shí)驗(yàn)證明可以獲得很好的仿真效果。2)預(yù)計(jì)算輻射度算法代預(yù)計(jì)算輻射傳輸方法是近年來用于解決復(fù)雜光源下物體真實(shí)感繪制的實(shí)時(shí)計(jì)算框架,由Sloan等最先提出。算法的基本思想是將繪制方程中的函數(shù)分解到指定的ー組基函數(shù)上,用這組基函數(shù)的線性組合來逼近原函數(shù),在實(shí)時(shí)繪制時(shí),利用指定基函數(shù)之間的積分的良好性質(zhì)來加速繪制方程的積分運(yùn)算。Hao等人提出了種基于球面諧波的實(shí)時(shí)繪制方法。該方法是對Jensen方法的進(jìn)一步改進(jìn),算法依然采用兩遍分級的方法進(jìn)行繪制。在預(yù)計(jì)算環(huán)節(jié)算法利用球面諧波的球面徑向基函數(shù)間積分易于計(jì)算的性質(zhì)對預(yù)計(jì)算積分進(jìn)行壓縮在存儲。為了彌補(bǔ)球面諧波壓縮對高頻分量的損失,文章設(shè)計(jì)了一種相關(guān)點(diǎn)算法來保存損失的高頻分量。為了提高算法的 繪制效率,文章對BSSRDF模型進(jìn)行了適當(dāng)?shù)幕啠僭O(shè)半透明介質(zhì)是均勻介質(zhì)(BSSDF),基礎(chǔ)光照模型和繪制方程采用經(jīng)典的Jensen算法進(jìn)行模擬實(shí)現(xiàn)。文章提出了一種量化光源的概念來降低算法的時(shí)間復(fù)雜度,預(yù)計(jì)算部分主要計(jì)算量化光源的向量積分并對其進(jìn)行存儲。對于一個(gè)新的量化光源,采用采樣鄰居光源插值方式來計(jì)算其向量值。對預(yù)計(jì)算光源向量積分使用球面諧波進(jìn)行壓縮存儲,作為第二遍的直接輸入部分。算法采用Cohn等提出的三維網(wǎng)格化簡方法來得到相關(guān)點(diǎn)網(wǎng)格,得到最終全頻預(yù)計(jì)算壓縮數(shù)據(jù)。Wang于2005也提出了一種基于預(yù)計(jì)算福射傳輸全頻光線算法。文章通過對單次次表面散射進(jìn)行預(yù)計(jì)算和對相位角函數(shù)進(jìn)行相似估計(jì),很大程度的提高了最終的繪制效率。算法首先對一個(gè)的立方圖光源進(jìn)行參數(shù)化。算法把照度和光傳輸渲染到OPENGL的Pbuffer中,對于多次次表面散射,需要把實(shí)體模型的頂點(diǎn)均衡的光柵化到立方圖的六個(gè)面上,并對應(yīng)的設(shè)置模板緩沖區(qū),最后通過繪制方程得到多次次表面散射的出射光照強(qiáng)度。對于單次次表面散射,使用光線跟蹤算法對每一個(gè)采樣頂點(diǎn)預(yù)計(jì)算出其積分上限值,使用的超采樣把化簡模型渲染到pbuffer中,對于每一個(gè)片段輸出頂點(diǎn)法線和深度紋理。最后對每一個(gè)采樣頂點(diǎn)按照繪制方程進(jìn)行疊加。對于不出的相位函數(shù)采用不同的預(yù)計(jì)算方式,為了達(dá)到更高的繪制效率,上述過程均在GPU中完成。在國內(nèi),Wang也提出了一種基于預(yù)計(jì)算的半透明物體實(shí)時(shí)繪制方法。算法通過主元分析將偶極光源近似模型中的漫散射(多次次表面散射)材質(zhì)分解為與形狀相關(guān)函數(shù)和半透明材質(zhì)相關(guān)函數(shù)的乘積形式。利用此分解表示,在預(yù)計(jì)算輻射傳輸?shù)膶?shí)時(shí)真實(shí)感繪制框架下,通過對散射傳輸?shù)念A(yù)計(jì)算來實(shí)現(xiàn)在多種光源環(huán)境下對半透明物體材質(zhì)的實(shí)時(shí)編輯繪制。同時(shí)文章還提出了一種對預(yù)計(jì)算輻射傳輸?shù)臄?shù)據(jù)在空域上進(jìn)行二次小波壓縮的方法,利用表面點(diǎn)在空間分布位置的相關(guān)性,在保證繪制質(zhì)量的前提下,大大壓縮了數(shù)據(jù),提升了繪制效率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是目前所提的方法中,path-tracing以及ray-tracing雖然可以解決次表面物體的全局光照問題,但是速度難以接受,預(yù)計(jì)算的福射度算法,只能處理無限遠(yuǎn)的光以及環(huán)境光下的次表面物體的全局光照問題。而本發(fā)明可以解決任意光源光照下的次表面散射物體的全局光照效果,并速度上可以達(dá)到實(shí)時(shí)。本發(fā)明解決上述技術(shù)問題的技術(shù)方案為一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,包括如下步驟步驟(I)、利用面片均勻的場景和輻射度算法以及dipole近似多次散射模型,建立一個(gè)全局的能量傳輸矩陣;所述的全局的能量傳輸矩陣為每對面片間能量傳輸?shù)乃p變化情況,該矩陣的具體計(jì)算方法為次表面物體到次表面物體面片間的內(nèi)部能量傳輸矩陣計(jì)算利用dipole近似多次散射模型來,面片之間的外部能量傳輸矩陣則使用輻射度算法來計(jì)算;步驟(2)、從光源開始對場景做到場景的初始能量計(jì)算,再利用步驟(I)中獲取的能量矩陣,通過矩陣運(yùn)算獲得最終的能量分布計(jì)算結(jié)果;其中光源到場景的初始能量計(jì)算是利用GPU的光柵化的過程,首先將面片投影到光源坐標(biāo)系下的屏幕空間中,通過面片所占的像素點(diǎn)的個(gè)數(shù)來得到面片從光源可以獲取的初始光照值;統(tǒng)計(jì)每個(gè)面片的像素點(diǎn)總數(shù),我們利用CUDA來并行完成;而計(jì)算最終能量分布的矩陣運(yùn)算我們則利用cuSparse庫來完成;步驟(3)、將步驟(2)中獲得的每個(gè)面片包含的能量,虛擬成在面片中間的能量光子,利用已有的屏幕空間的光子收集算法進(jìn)行光子收集過程;從而計(jì)算最終能量分布。進(jìn)ー步的,所述的次表面物體到次表面物體面片的計(jì)算則利用dipole近似多次散射模型具體為計(jì)算次表面散射面片間的能量傳輸矩陣計(jì)算記為S,采用diffusionapproximation的近似模型dipole模型來計(jì)算,dipole模型將一個(gè)多維的BSSRDF函數(shù)簡化為了ー個(gè)只與距離有關(guān)的dipole模型,計(jì)算公式為
權(quán)利要求
1.一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,其特征在于包括如下步驟 步驟(I)、利用面片均勻的場景和輻射度算法以及dipole近似多次散射模型,建立一個(gè)全局的能量傳輸矩陣;所述的全局的能量傳輸矩陣為每對面片間能量傳輸?shù)乃p變化情況,該矩陣的具體計(jì)算方法為次表面物體到次表面物體面片間的內(nèi)部能量傳輸矩陣的計(jì)算利用dipole近似多次散射模型,而面片之間的外部能量傳輸矩陣則使用輻射度算法來計(jì)算; 步驟(2)、從光源開始對場景做到場景的初始能量計(jì)算,再利用步驟(I)中獲取的能量矩陣,通過矩陣運(yùn)算獲得最終的能量分布計(jì)算結(jié)果;其中光源到場景的初始能量計(jì)算是利用GPU的光柵化的過程,首先將面片投影到光源坐標(biāo)系下的屏幕空間中,通過面片所占的像素點(diǎn)的個(gè)數(shù)來得到面片從光源可以獲取的初始光照值;統(tǒng)計(jì)每個(gè)面片的像素點(diǎn)總數(shù),我們利用CUDA來并行完成;而計(jì)算最終能量分布的矩陣運(yùn)算我們則利用cuSparse庫來完成; 步驟(3)、將步驟(2)中獲得的每個(gè)面片包含的能量,虛擬成在面片中間的能量光子,利用已有的屏幕空間的光子收集算法進(jìn)行光子收集過程;從而計(jì)算最終能量分布。
2.根據(jù)權(quán)利要求I所述的一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,其特征在于所述的次表面物體到次表面物體面片的計(jì)算則利用dipole近似多次散射模型具體為計(jì)算次表面散射面片間的能量傳輸矩陣計(jì)算記為S,采用diffusionapproximation的近似模型dipole模型來計(jì)算,dipole模型將一個(gè)多維的BSSRDF函數(shù)簡化為了一個(gè)只與距離有關(guān)的dipole模型,計(jì)算公式為
3.根據(jù)權(quán)利要求I所述的一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,其特征在于所述的面片之間的外部能量傳輸矩陣的計(jì)算方法具體為使用輻射度算法中的形狀因子形狀因子的推導(dǎo)公式為
4.根據(jù)權(quán)利要求I所述的一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,其特征在于所述的計(jì)算最終能量分布具體為通過第一部分通過索引矩陣構(gòu)建次表面散射矩陣S,第二部分,用矩陣運(yùn)算獲取最終能量分布。
5.根據(jù)權(quán)利要求4所述的一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,其特征在于首先在第一個(gè)部分,通過讀入的材質(zhì),計(jì)算每個(gè)離散點(diǎn)的dipole值,通過建立的索引矩陣,利用CUDA并行計(jì)算出S矩陣中每項(xiàng)的值; 第二部分,獲得的每個(gè)面片的初始能量建立一個(gè)初始能量向量L,利用cusparse庫,以及下面的公式,用矩陣運(yùn)算模擬真正的能量傳輸過程, Lflnal = (SXFpXSXL 其中,Lflnal則為光線傳輸N次后得到的最終能量值,N的大小由光源衰弱的情況來定,設(shè)定一個(gè)閾值,當(dāng)?shù)陀谶@個(gè)閾值時(shí),則停止迭代。
全文摘要
本發(fā)明提出了一種基于輻射度算法的次表面散射物體的實(shí)時(shí)全局光照方法,主要分為三個(gè)步驟,第一步預(yù)計(jì)算,利用已有的近似dipole模型,和輻射度算法預(yù)計(jì)算出場景的能量傳輸矩陣,以稀疏矩陣的形式保存。第二步,利用GPU的快速稀疏矩陣庫計(jì)算能量傳輸過程,獲取每個(gè)面片所獲得的能力。第三步,利用快速光子收集算法,獲得最終的全局光照效果。本發(fā)明在一定的預(yù)計(jì)算基礎(chǔ)上,可以獲得實(shí)時(shí)的次表面散射物體的全局光照效果。
文檔編號G06T15/50GK102819860SQ20121029325
公開日2012年12月12日 申請日期2012年8月16日 優(yōu)先權(quán)日2012年8月16日
發(fā)明者王莉莉, 石裕隆, 王澤 , 趙沁平 申請人:北京航空航天大學(xué)