一種基于方向光輻射度的微結構表面全局光照繪制方法

文檔序號:6621990
一種基于方向光輻射度的微結構表面全局光照繪制方法
【專利摘要】本發明公開了一種基于方向光輻射度的微結構表面全局光照繪制方法,該方法包括以下步驟:對微結構表面建立一簇入射方向光和出射方向光,基于高度圖和法線圖使用漸進輻射度算法模擬微結構表面場景的光能傳輸,并對出射方向光進行能量重分配,能量傳輸完成后對入射方向光進行聚類,對于空間方向大致相同的方向光作為一組進行面片入射光到頂點入射光的平滑處理,基于屏幕空間計算每個像素點中頂點方向光的插值系數,用聚類后的頂點方向光在基于Relief?Mapping算法使用插值系數對場景進行渲染,使用基于高度圖的預計算可見性算法來繪制微結構單元間的全局光照效果。
【專利說明】
一種基于方向光輻射度的微結構表面全局光照繪制方法

【技術領域】
[0001]本發明屬于真實感渲染及微結構全局光照【技術領域】,具體涉及基于方向光輻射度的微結構表面的全局光照繪制方法。

【背景技術】
[0002]在真實感渲染中,基于輻射度理論在物理逼真渲染中占有很重要的地位,他將光的傳播看成了一種能量的傳播,將光解釋成為離散的粒子態能量從而具有了很好的物理基礎,通過各種改進手段可以逼真實現除了光的衍射和干涉之外的任意效果。
[0003]物體表面的光學現象是生活中常見的自然現象。其光學效果在視景仿真領域有著廣泛的應用需求。它們的實時逼真繪制對提升虛擬場景的逼真性具有十分重要的意義。實時逼真繪制的關鍵因素在于光照。首先,對于給定的虛擬環境,給定的觀察位置和角度,光照強度、光照角度以及光照波長等因素都將對最終繪制結果產生重要影響。為了得到逼真的繪制結果,必須盡量采用能夠反映真實物理世界的光照模型(Lighting Model)。但是,越符合真實物理世界的光照模型,勢必越復雜,計算量勢必越大,實時性越難保證。其次,虛擬場景中的光源類型和物體的材質屬性存在多樣性和復雜性,場景中可能包含點光源、方向光源、面光源、環境光源甚至體光源等多種類型的光源,場景中物體的材質特性可能表現為漫射、鏡面反射、透射及次表面散射等,這給實時逼真模擬光源與材質間的交互影響帶來了巨大的挑戰。再次,動態場景的數據量往往比較大,并且光源與物體都可能存在著復雜的可運動特性和可變形特性,從而使得光源與物體、物體與物體以及同一個物體不同部分之間的相對位置、相互遮擋關系也具有時變特性,這進一步增加了光照效果實時逼真繪制的難度。
[0004]現實場景中存在大量具有崎嶇表面的復雜對象,這些微結構表面將對光線傳播產生影響,會表現出細粒度的自陰影、環境光遮擋、間接光照等光照效果。而對于擁有多種漫反射和反射材質物體的復雜場景,各個物體會因各自材質屬性的不同而表現出不同的光學效果。因此,描述復雜對象和場景與光線的交互,真實再現這些對象的光學效果,可以使得圖像細節更為豐富、細膩,極大地提高繪制效果的逼真性。
[0005]對于微結構表面的繪制算法人們已經做了大量的研究,兩種經典的繪制方法:凹凸貼圖(bump mapping)和雙向紋理函數(bidirect1nal texture funct1n, BTF)。這兩種算法均是使用面片數較少的光滑模型(低精度模型)來代替面片數較多的表面帶有微結構的原始模型(高精度模型)并在其上增加凹凸貼圖或者雙向紋理函數來實現微結構物體的光照效果繪制,但凹凸貼圖方法不能實現自陰影和自遮擋等效果、雙向紋理函數的存儲量太大。為了克服上述缺點,近年來又出現了一系列的改進算法。主要是基于紋理貼圖的微結構物體光照繪制技術和基于預計算的微結構物體光照繪制技術。
[0006]基于紋理貼圖的微結構光照繪制主要是基于凹凸貼圖算法的改進和變形。法線貼圖(Normal Mapping)是使用多通道圖像紋理貼圖存儲法線,從而更加細致的模擬出物體表面的法線。視差貼圖算法(Parallax Mapping)可以近似的計算出微結構間的自遮擋關系。視差遮擋貼圖算法(Parallax occlus1n Mapping)是對視差貼圖的改進,能夠的得到更為精確的效果。精細貼圖算法(Relief Mapping)使用圖像變形和材質逐像素深度加強技術在平坦的多邊形上表現復雜的幾何細節。它比視差貼圖算法更加精確,且支持自遮擋、自陰影等效果。位移貼圖(Displacement Mapping)是使用高度圖將經過紋理化的表面上實際幾何點位置沿著表面法線根據保存在紋理中的數值進行移位的技術。與以上算法不同的是,位移貼圖可以使曲面的幾何體產生位移,實際上更改了曲面的幾何體或面片細分。視相關DM算法(View-Dependent Displacement Mapping, VDM)預計算不同視點方向與不同曲率表面下的VDM紋理,可實時渲染微結構表面的陰影和遮擋效果?;诟叨葓D的預計算可見性算法是在高度圖上預計算點的可見性,累加平行光對當前像素點的全局光照效果,可以實現微結構單元內的全局光照效果。
[0007]基于預計算的微結構光照繪制主要是針對BTF的改進。因為BTF是一個6D函數,它的存儲量巨大,因此簡化其存儲是一個改進的方向?;贐TF,Tong等提出了使用表面紋理元來將BTF合成到任意形狀的低精度模型表面,能夠較好地表現微結構隨視點和光源變化的光照效果。為了提高渲染效率,Suykens等將BTF表示為一系列的ABRDF (apparentbidirect1nal reflectance distribut1n funct1ns)的集合,然后使用 CMF(chainedmatrix factorizat1n)方法將ABRDF因數分解為三個因子,并將相似的進行聚類。這樣做既減少了存儲開銷,也便于存儲,可實現微結構表面光照的交互式渲染。雙尺度的輻射度傳輸算法是將輻射度分為全局和局部尺度。全局和局部尺度的傳輸分別采用預計算輻射度傳輸(Precomputed Radiance Transfer, PRT)和BTF,使繪制后的BTF材質表面呈現全局福射傳輸光照效果。但網格上的頂點分布稠密、計算量較大,而且只能處理低頻光照,并且默認光源處于無限遠處。為了計算非均勻半透明微結構模型光照,Chen等引入了 STF(shelltexture funct1n)計算薄殼層的表面福射度。在此基礎上又出現了預計算的SRTF,與STF相比,SRTF更直接的將入射光照與表面光照強度相關聯,在運行階段直接用于計算模型表面輻射度,實現實時渲染。
[0008]基于傳統的輻射度思想的全局光照算法人們也做大量的研究和改進。MichaelF.Cohen等提出了漸進式輻射度思想,每次選擇能量最大的面片作為發射面片,避免了對場景所有面片都計算形狀因子,減少了計算時間,此算法中的形狀因子使用半立方體算法(Hem1-cube)計算。Keller提出了即時福射度算法,通過將福射場用一系列的虛擬點光源來表示,將計算間接光照的問題轉化為一系列的計算直接光照的問題。Georgiev等提出了一種對虛擬點光源進行采樣的簡化算法,通過漸近地對采樣點周圍的虛擬點光源進行收集,可以在僅增加少量存儲空間的前提下,對多遍繪制中的虛擬點光源屬性進行自動采樣。為了處理虛擬點光源數目較多的情況,Walter等提出了 LightCuts算法,采集過程不是對每個單獨的虛擬點光源計算,而是用一個虛擬光源簇來代替一組光源的貢獻。Ritschel提出了不完備陰影貼圖算法(Imperfect Shadow Maps, ISM),利用一系列場景代表點生成一些不完備的陰影圖,模擬動態場景的實時全局光照。
[0009]綜上,基于紋理貼圖的微結構光照算法和基于預計算的微結構光照算法均是針對單個物體或者模型的光照繪制算法,他們能夠繪制出直接光照或者本身微結構內部的光照效果,但對于較為復雜的場景,場景中所含物體不唯一,物體和物體之間會有間接光照效果,上述算法均不能處理。本發明中的方法可以在低精度模型的基礎上模擬出高精度模型的微結構光照效果,并實現不同物體之間的全局光照效果,實現微結構物體全局光照的逼真繪制。


【發明內容】

[0010]本發明要解決的問題:克服現有技術的不足,為模擬不同微結構物體之間的全局光照效果,提供一種微結構表面全局光照計算與繪制的方法,減少了預計算時間,該方法主要利用將標量輻射度轉化為帶有顏色和方向信息的方向光輻射度,用低精度模型模擬高精度模型微結構表面的光能傳輸與繪制效果。
[0011]本發明解決上述技術問題的技術方案為:基于方向光福射度的微結構表面全局光照繪制方法,包括如下步驟:
[0012](I)使用面片數較少(I萬-9萬)的光滑模型即低精度模型來代替面片數較多(100萬-900萬)的表面帶有微結構的原始模型即高精度模型,并為低精度模型面片建立方向光,方向光包含入射方向光和出射方向光,同時根據光源類型初始化場景面片的能量值;使用漸進輻射算法,基于高度圖和法線圖模擬微結構場景的光能傳遞,同時根據面片的法向貼圖對出射方向光進行能量重分配;
[0013](2)將基于面片的方向光按角度權重平滑到頂點上,同時根據物理空間位置對空間方向大致相同的方向光進行聚類;
[0014](3)基于屏幕空間求各像素點頂點方向光的插值系數,并使用步驟(2)中聚類后的方向光采用Relief Mapping算法繪制微結構表面,同時計算微結構自陰影、自遮擋效果。
[0015](4)在步驟(3)的繪制結果上,采用基于高度圖的預計算可見性算法來繪制微結構單元內的間接光照,實現微結構單元內的間接光照的逼真繪制。
[0016]所述步驟(I)具體實現如下:
[0017](11)用面片數較少的光滑模型代替面片數較多的帶有微結構的原始模型,用以減少整個光能傳輸的時間,為每個場景面片求切線空間,在切線坐標系下建立球面坐標,基于球面坐標為每個面片建立一組均勻分布的入射方向光和出射方向光;
[0018](12)根據光源初始化場景面片的輻射能量值:按照hem1-cube算法,將場景映射到hem1-cube上,根據各個像素的法線信息和高度信息單獨計算光照,并將此光照添加到步驟(11)中對應的入射方向光上;
[0019](13)使用步驟(11)和(12)中的結果,使用漸進輻射度算法模擬光能傳輸,取能量值最大的面片作為發射面片,根據hem1-cube算法,利用其高度圖和法線圖計算每個像素的光能,累加到該像素所在的面片上,同時根據此像素點的法向貼圖信息,更新其所在面片位于該點法線方向半球內的出射方向光,完成對其能量進行重分配。
[0020]所述步驟(2)具體實現如下:
[0021](21)將基于面片的方向光按角度權重平滑到頂點上:在面片的最終渲染中為了實現平滑的效果,需要將基于面片的方向光平滑處理到頂點上,對于每個頂點,根據其所在的所有面片的入射方向光,根據每個面片在該頂點所占權重,將入射方向光進行累加,該權重根據面片在該頂點所占夾角的比例而確定;
[0022](22)根據物理空間位置對空間方向大致相同的方向光進行聚類:對于步驟(21)中獲得的基于頂點的入射方向光和出射方向光,對于空間位置大致相同的一組方向光,將他們看做一組,標記為離散的多條平行光,對單個三角面片進行渲染時分別取聚為一類的方向光進行渲染。
[0023]所述步驟(3)具體實現如下:
[0024](31)基于屏幕空間求各像素點頂點方向光的插值系數:計算屏幕空間中頂點對像素點的權重系數,對每個面片的三個頂點分別標記紅、綠、藍三個顏色,渲染一遍場景,獲得像素對應面片三個定點的插值系數,根據插值系數,在GPU中插值計算每條入射方向光在該像素點的真正顏色值,用于后續渲染;
[0025](32)使用步驟(2)中聚類后的方向光采用Relief Mapping算法繪制微結構表面,同時計算微結構自陰影、自遮擋效果:利用獲取的頂點入射方向光,使用Relief Mapping算法,基于(31)中的插值系數,在法線圖和高度圖的基礎上進行渲染,計算直接光照、自陰影、自遮擋效果,然后根據屏幕空間插值所得的平行光系數依次渲染當前像素點,得到初步全局光照效果。
[0026]所述步驟(4)具體實現如下:
[0027](41)基于高度圖,在預計算階段計算出各個像素間的可見性關系,對當前像素的每條平行光,累加其可見像素點當前平行光光照效果,保存到紋理中,用于微結構單元內間接光照的渲染;
[0028](42)在步驟(41)中,取得了高度圖中每個像素的每條平行光通過預計算可見性而累加到當前像素點的光照系數,根據此系數計算出間接光照值,累加到步驟(3)中的計算結果中,便可得到最終的繪制效果。
[0029]本發明與現有技術相比的優點在于:本發明能夠以低精度模型的時間復雜度模擬出高精度模型的微結構全局光照并且能夠得到較好的繪制效果。本發明主要有三點貢獻:第一,采用低精度模型來模擬高精度模型的光照傳輸。第二,使用多向方向光來表示微結構表面所接收的光照情況。第三,采用基于圖像空間的方法借助多向方向光來完成微結構表面物體的全局光照效果繪制。

【專利附圖】

【附圖說明】
[0030]圖1為本發明整體流程圖;
[0031]圖2入射方向光和出射方向光不意圖;其中a為入射方向光,b為出射方向光;
[0032]圖3為傳統漸進輻射度和各向異性漸進輻射度對比圖,其中a為傳統漸進輻射度,b為各向異性漸進輻射度;
[0033]圖4為能量重分布示意圖;
[0034]圖5為頂點入射方向光不意圖;
[0035]圖6為平行光渲染示意圖;
[0036]圖7為基于高度圖的預計算可見性示意圖;
[0037]圖8為本發明效果圖;
[0038]圖9為本發明與傳統漸進輻射度方法對比圖。

【具體實施方式】
[0039]下面結合附圖以及本發明的【具體實施方式】進一步說明本發明。
[0040]如圖1所示,本發明具體實現如下:
[0041]步驟(I)首先為場景的每個面片求切線坐標系,因為從法線貼圖中獲取的法線值是固定的RGBA通道值,當模型視圖矩陣發生變化時,法線不會隨之變化,這與實際不相符合,當使用切線空間時就可以解決上述問題。根據三角面片的紋理坐標和法線計算出tangant軸(T)、binormal軸(B)和normal (N)軸,這三個向量組成矩陣作用于貼圖法線,就可以獲取當前模型視圖下法線值。
[0042]為面片建立入射方向光和出射方向光(如圖2, a為入射方向光不意圖,b為出射方向光示意圖,不同的灰度值表示不同的光照信息。利用切線空間在面片法線所在半球內均勻建立入射方向光和出射方向光,用于方向光福射度的能量傳輸和渲染。方向光所在的顏色信息用RGBA通道表示,方向根據其球面坐標確定。
[0043]傳統的漸進輻射度算法是面片的每個方向的出射光強都相同,本發明是用多條出射方向光模擬微結構表面凹凸不平的輻射情況如圖3所示,a是傳統漸進輻射度算法,其中各個方向的出射輻射能都相同,b是本發明方法,其中各個方向的出射輻射能不同。
[0044]步驟(2)使用漸進輻射度進行能量傳輸,每次取能量值最大的面片進行輻射。傳統的輻射度算法假設所有的面片都是理想漫反射面片,因此對于面片j它往各個方向上發射的光能的權重都是一樣的,對于面片i,作為收集對象的話,它的輻射度Bi可以表示為如下。
[0045]B1 = E1 + P么BiFij (I)


J=I
[0046]其中Ei表示面片的初始能量值,P i表示面片的反射系數,Fij表示i面片和j面片的的形狀因子,也即遮擋關系。
[0047]漸進輻射度算法中,面片i作為發射面片。因此,輻射能從面片i到面片j的傳輸可以用如下兩個式子表示。
[0048]ARad= P j Δ BiFijAiAj (2)
[0049]Δ Bj = Δ B」+ Δ Rad (3)
[0050]在本發明中,如果發射面片i和接收面片j均含有微結構,那么對于面片j除了要計算ARad(表示面片的出射福射能)還要計算不同出射方向上的ARadkt;表示第k出射方向光所增加的輻射能),以便于當j作為發射面片時保證各出射方向光的更新。又因為i面片含有微結構信息,它的發射光線是各向異性的。
[0051]在式(2)中,傳統的漸進輻射度算法是根據Hem1-cube方法計算形狀因子Fijtl記Δ Fq為像素q在Hem1-cube上所對應的微形狀因子,R是面片j所投射像素的總個數,則Fij可以按如下表示。
[0052](4)

戶I
[0053]其中Fu表示i面片和j面片的的形狀因子,也即遮擋關系;Λ Fq表示第q像素的的形狀因子。
[0054]對于面片j的投影像素q,所增加的入射輻射能可以如下表示。
[0055]Δ Irradq = Δ Biq Δ FqAiAj (5)
[0056]式中的Λ Iiradq表示該像素點所增加的輻射能也即面片i和q像素的連線在j面片上對應的入射方向光增加的輻射度能量。ABiq如圖3(b)所示,表示i面片在iq方向上的出射輻射度能量。
[0057]

【權利要求】
1.一種基于方向光福射度的微結構表面全局光照繪制方法,其特征在于包括如下步驟: (1)使用面片數較少的光滑模型即低精度模型來代替面片數較多的表面帶有微結構的原始模型即高精度模型,并為低精度模型面片建立方向光,方向光包含入射方向光和出射方向光,同時根據光源類型初始化場景面片的能量值;使用漸進輻射算法,基于高度圖和法線圖模擬微結構場景的光能傳遞,同時根據面片的法向貼圖對出射方向光進行能量重分配; (2)將基于面片的方向光按角度權重平滑到頂點上,同時根據物理空間位置對空間方向大致相同的方向光進行聚類; (3)基于屏幕空間求各像素點頂點方向光的插值系數,并使用步驟(2)中聚類后的方向光采用Relief Mapping算法繪制微結構表面,同時計算微結構自陰影、自遮擋效果。 (4)在步驟(3)的繪制結果上,采用基于高度圖的預計算可見性算法來繪制微結構單元內的間接光照,實現微結構單元內的間接光照的逼真繪制。
2.根據權利要求1所述的基于方向光福射度的微結構表面全局光照繪制方法,其特征在于步驟(I)具體實現如下: (11)用面片數較少的光滑模型代替面片數較多的帶有微結構的原始模型,用以減少整個光能傳輸的時間,為每個場景面片求切線空間,在切線坐標系下建立球面坐標,基于球面坐標為每個面片建立一組均勻分布的入射方向光和出射方向光; (12)根據光源初始化場景面片的輻射能量值:按照hem1-cube算法,將場景映射到hem1-cube上,根據各個像素的法線信息和高度信息單獨計算光照,并將此光照添加到步驟(11)中對應的入射方向光上; (13)使用步驟(11)和(12)中的結果,使用漸進輻射度算法模擬光能傳輸,取能量值最大的面片作為發射面片,根據hem1-cube算法,利用其高度圖和法線圖計算每個像素的光能,累加到該像素所在的面片上,同時根據此像素點的法向貼圖信息,更新其所在面片位于該點法線方向半球內的出射方向光,完成對其能量進行重分配。
3.根據權利要求1所述的基于方向光福射度的微結構表面全局光照繪制方法,其特征在于:所述步驟(2)具體實現如下: (21)將基于面片的方向光按角度權重平滑到頂點上:在面片的最終渲染中為了實現平滑的效果,需要將基于面片的方向光平滑處理到頂點上,對于每個頂點,根據其所在的所有面片的入射方向光,根據每個面片在該頂點所占權重,將入射方向光進行累加,該權重根據面片在該頂點所占夾角的比例而確定; (22)根據物理空間位置對空間方向大致相同的方向光進行聚類:對于步驟(21)中獲得的基于頂點的入射方向光和出射方向光,對于空間位置大致相同的一組方向光,將他們看做一組,標記為離散的多條平行光,對單個三角面片進行渲染時分別取聚為一類的方向光進行渲染。
4.根據權利要求1所述的基于方向光福射度的微結構表面全局光照繪制方法,其特征在于:所述步驟(3)具體實現如下: (31)基于屏幕空間求各像素點頂點方向光的插值系數:計算屏幕空間中頂點對像素點的權重系數,對每個面片的三個頂點分別標記紅、綠、藍三個顏色,渲染一遍場景,獲得像素對應面片三個定點的插值系數,根據插值系數,在GPU中插值計算每條入射方向光在該像素點的真正顏色值,用于后續渲染; (32)使用步驟(2)中聚類后的方向光采用Relief Mapping算法繪制微結構表面,同時計算微結構自陰影、自遮擋效果:利用獲取的頂點入射方向光,使用Relief Mapping算法,基于(31)中的插值系數,在法線圖和高度圖的基礎上進行渲染,計算直接光照、自陰影、自遮擋效果,然后根據屏幕空間插值所得的平行光系數依次渲染當前像素點,得到初步全局光照效果。
5.根據權利要求1所述的基于方向光福射度的微結構表面全局光照繪制方法,其特征在于:所述步驟(4)具體實現如下: (41)基于高度圖,在預計算階段計算出各個像素間的可見性關系,對當前像素的每條平行光,累加其可見像素點當前平行光光照效果,保存到紋理中,用于微結構單元內間接光照的渲染; (42)在步驟(41)中,取得了高度圖中每個像素的每條平行光通過預計算可見性而累加到當前像素點的光照系數,根據此系數計算出間接光照值,累加到步驟(3)中的計算結果中,便可得到最終的繪制效果。
【文檔編號】G06T15/00GK104167011SQ201410370963
【公開日】2014年11月26日 申請日期:2014年7月30日 優先權日:2014年7月30日
【發明者】王莉莉, 彭通, 謝乃聞, 周士恒, 趙沁平 申請人:北京航空航天大學
再多了解一些
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1