專利名稱:基于高度圖的微結(jié)構(gòu)表面全局光照實(shí)時(shí)繪制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高度圖的微結(jié)構(gòu)表面全局光照實(shí)時(shí)繪制。
背景技術(shù):
現(xiàn)實(shí)場(chǎng)景中存在大量具有不平滑表面的對(duì)象,這些微結(jié)構(gòu)表面將對(duì)光線傳播產(chǎn)生 影響,會(huì)表現(xiàn)出細(xì)粒度的自陰影、環(huán)境光遮擋、滲色等全局光照效果。因此,描述局部微結(jié)構(gòu) 細(xì)節(jié)與光線的交互,真實(shí)再現(xiàn)這類對(duì)象的光照效果,可以使得圖像細(xì)節(jié)更為豐富、細(xì)膩,極 大地提高繪制效果的逼真性。微結(jié)構(gòu)表面對(duì)象細(xì)節(jié)多、幾何結(jié)構(gòu)復(fù)雜,光線跟蹤等傳統(tǒng)的全局光照方法存在 著計(jì)算量大,難以用于實(shí)時(shí)繪制等問題。Tong等提出將雙向紋理函數(shù)(Bidirectional texturefunction, BTF)合成到任意表面上的方法,通過預(yù)計(jì)算微結(jié)構(gòu)表面樣本的BTF,并 建立對(duì)象表面與BTF的映射關(guān)系,可根據(jù)光源和視點(diǎn)運(yùn)動(dòng)情況進(jìn)行實(shí)時(shí)快速采樣。在此 基礎(chǔ)之上,雙尺度輻射度傳遞(Bi-Scale Radiance Transfer, BRT),殼紋理函數(shù)(Shell texture function, STF)和薄殼福射度紋理函數(shù)(Shell Radiance texture function, SRTF)等方法也對(duì)微結(jié)構(gòu)表面對(duì)象的光照計(jì)算方法進(jìn)行了深入的研究。但由于大量預(yù)計(jì)算 和紋理合成的存在,這類方法很難實(shí)時(shí)模擬動(dòng)態(tài)可變形物體的光照效果。1)微結(jié)構(gòu)表面光照計(jì)算的方法有Tong等提出使用表面紋理元來合成低精度模型表面BTF的方法,能夠較好地表現(xiàn) 表面微結(jié)構(gòu)隨視點(diǎn)和光源變化的光照效果。但對(duì)于不能使用3D紋理元來表示的材質(zhì),不能 使用這種單尺度的方法。Sloan等提出了一種雙尺度的輻射度傳輸方法,將輻射度分為全局和局部尺度。全 局和局部尺度的傳輸分別采用預(yù)計(jì)算輻射度傳輸(Precomputed Radiance Transfer,PRT) 和BTF,使繪制后的BTF材質(zhì)表面呈現(xiàn)全局輻射傳輸光照效果。但網(wǎng)格上的頂點(diǎn)分布稠密、 計(jì)算量較大,而且只能處理低頻光照。為了計(jì)算非均勻半透明微結(jié)構(gòu)模型光照,Chen等建立一個(gè)包括薄殼層和均勻內(nèi)核 的模型,并引入STF計(jì)算薄殼層的表面輻射度,來呈現(xiàn)非均勻半透明物體表面微結(jié)構(gòu)的自 陰影、遮擋、鏡面反射、輪廓及次表面的散射。但運(yùn)行階段計(jì)算量較大,無法達(dá)到實(shí)時(shí)。為了能夠?qū)崟r(shí)渲染非均勻半透明物體,Song等提出的預(yù)計(jì)算基本量的SRTF,在運(yùn) 行階段直接用于計(jì)算模型表面輻射度,實(shí)現(xiàn)實(shí)時(shí)渲染。但在渲染時(shí)忽略了由表面微結(jié)構(gòu)形 成的細(xì)節(jié)輪廓。2)環(huán)境光遮擋的計(jì)算方法有Kontkanen等于2005年提出了環(huán)境光遮擋場(chǎng),并基于此來預(yù)計(jì)算物體間的環(huán)境光 遮擋,從而實(shí)現(xiàn)陰影的實(shí)時(shí)繪制。2006年,Hegeman等提出了一種近似環(huán)境光遮擋方法,可滿足復(fù)雜動(dòng)態(tài)場(chǎng)景的交 互渲染需要,但渲染質(zhì)量不是很高。為了提高繪制效率和渲染質(zhì)量,Shanmugam等于2007年提出了一種硬件加速的環(huán)境光遮擋方法,將環(huán)境光遮擋分解為能夠獨(dú)立計(jì)算的高頻和低頻兩部分,實(shí)現(xiàn)了復(fù)雜動(dòng)態(tài) 場(chǎng)景的高質(zhì)量實(shí)時(shí)渲染。為了進(jìn)一步提高繪制效率,近年來越來越多的研究工作轉(zhuǎn)向基于屏幕空間的環(huán)境 光遮擋近似計(jì)算。Bavoil等于2008年首次提出了基于屏幕空間的環(huán)境光遮擋(Screen SpaceAmbient Occlusion, SSA0)方法,通過比較當(dāng)前點(diǎn)與周圍點(diǎn)深度,來確定環(huán)境光被遮 擋的比率。但該方法需要人工設(shè)置采樣數(shù)目,并且在改變物體的和視點(diǎn)的相對(duì)位置時(shí)會(huì)產(chǎn) 生視覺上的跳躍現(xiàn)象。同年,Bavoil等提出圖像空間地平線環(huán)境光遮擋方法,基于視點(diǎn)坐標(biāo)下的場(chǎng)景深 度圖,計(jì)算被遮擋點(diǎn)周圍的地平角關(guān)系來得到該點(diǎn)的被遮擋程度。Dimitrov等提出了地平 角分裂的環(huán)境光遮擋方法,該方法通過計(jì)算屏幕空間下點(diǎn)的地平角遮擋關(guān)系與實(shí)際法線遮 擋關(guān)系的和,來得到最終的遮擋關(guān)系。Ritschel等于2009年提出了屏幕空間方向光遮擋(Screen Space DirectionalOcclusion, SSD0)方法,在SSAO中加入方向光遮擋和一次交互漫反射,實(shí)現(xiàn)全 局光照在復(fù)雜動(dòng)態(tài)場(chǎng)景中的實(shí)時(shí)繪制。3)圖像空間光照計(jì)算的方法有Wyman于2005年提出基于圖像空間的透明對(duì)象二次折射方法,在繪制一遍模型的 基礎(chǔ)上,采用迭代插值方法來逼近二次折射點(diǎn)的空間位置,實(shí)現(xiàn)對(duì)透明對(duì)象的實(shí)時(shí)渲染。但 需要對(duì)模型進(jìn)行預(yù)處理,不適用于可變形物體。為了消除預(yù)處理,Davis等于2007年提出計(jì)算折射光線在模型內(nèi)部全反射的方 法,通過折半查找法來查找圖像空間下光線在模型內(nèi)部與模型多次反射的交點(diǎn),在模型內(nèi) 部遞歸式追蹤光線直到光線射出模型或遞歸跟蹤的深度達(dá)到規(guī)定的閾值。Manuel等也給出了適用于可變形透明對(duì)象的二次折射實(shí)時(shí)繪制方法,該方法不需 要任何預(yù)處理,結(jié)合動(dòng)態(tài)深度圖和折半查找法來有效地處理圖像空間下光線在模型內(nèi)的全 反射?;趫D像空間的焦散繪制也是光照繪制的一項(xiàng)主要研究?jī)?nèi)容。Wyman等于2006年 最早提出圖像空間的焦散繪制方法,采用光子映射的方法,實(shí)現(xiàn)焦散的實(shí)時(shí)繪制。但是通過 建立大規(guī)模均勻柵格點(diǎn)來跟蹤光子,會(huì)導(dǎo)致繪制效率低,并且在非焦散匯聚點(diǎn)區(qū)域會(huì)產(chǎn)生 比較嚴(yán)重的噪聲。2007年,Musawir等提出焦散映射方法,該方法主要包括兩個(gè)部分生成焦散圖紋 理和使用焦散圖將焦散渲染到焦散接受體上。由于需要對(duì)折射幾何體進(jìn)行計(jì)算,這兩種方 法都無法直接用于可變形物體的焦散渲染。Pankaj等采用焦散圖和兩表面折射相結(jié)合的方 法,實(shí)現(xiàn)了對(duì)可變形物體的實(shí)時(shí)焦散渲染。為了提高實(shí)時(shí)渲染的質(zhì)量,Wyman采用分層的焦 散圖方法,可以實(shí)時(shí)渲染高質(zhì)量的焦散效果。2009年,Wyman又提出了使用延遲著色的自適應(yīng)焦散映射方法。采用延遲著色思 想來自適應(yīng)的發(fā)射光子,產(chǎn)生只包含相關(guān)光子的焦散圖,而不需要渲染大量無關(guān)的密集光 子,極大提高了繪制效率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是通過一種基于微結(jié)構(gòu)高度梯度圖的全局光照實(shí)時(shí)繪
4制方法,實(shí)現(xiàn)對(duì)可變形物體微結(jié)構(gòu)表面的實(shí)時(shí)全局光照的計(jì)算。本發(fā)明的技術(shù)解決方案為(1)全局光照計(jì)算模型,根據(jù)James Kajiya的渲染等式,幾何對(duì)象上任意一個(gè)點(diǎn)P 的在wo方向的出射光照度Lo可以根據(jù)該點(diǎn)在各個(gè)方向上入射輻射度的積分求得,具體形 式見公式(1)。L0(P) = p(P) jQL,(P,Wi^Wl · n)dw(1)其中Li是入射光強(qiáng)度,wi是入射方向,η是P點(diǎn)的法線方向,P是對(duì)象表面的材 質(zhì)屬性BRDF,Ω是以計(jì)算點(diǎn)為中心,以該點(diǎn)所在平面為底面的單位半球。微結(jié)構(gòu)表面對(duì)象幾何細(xì)節(jié)豐富,局部區(qū)域就可能存在上萬個(gè)微面。如果直接根據(jù) 該渲染公式計(jì)算幾何關(guān)系和求取積分,計(jì)算量過大,方法難以實(shí)時(shí)。針對(duì)這個(gè)問題,本發(fā)明 給出一種微結(jié)構(gòu)表面光照計(jì)算模型,將微結(jié)構(gòu)表面的入射光近似分解為三個(gè)分量環(huán)境光 La,高頻光源光照度Ls和一次交互漫反射光照度Ld。對(duì)于微結(jié)構(gòu)表面,環(huán)境光La是指周圍 環(huán)境對(duì)當(dāng)前點(diǎn)的照亮程度,由于微結(jié)構(gòu)表面細(xì)粒度的高度起伏較多,La需要根據(jù)當(dāng)前點(diǎn)與 周圍點(diǎn)的遮擋關(guān)系計(jì)算得到。高頻光源光照度Ls是指方向光源或點(diǎn)光源對(duì)微結(jié)構(gòu)表面點(diǎn) 的照明,需要考慮其對(duì)局部自陰影的影響。一次交互漫反射光照度Ld主要描述了周圍微結(jié) 構(gòu)區(qū)域?qū)Ξ?dāng)前點(diǎn)的漫反射效果的影響。本發(fā)明通過公式(2)將上述入射分量進(jìn)行疊加,來 近似計(jì)算微結(jié)構(gòu)表面的入射光。
Α(Λ^) = (^La(P,w,) + AsLXP^,)) · ViP^i) + XciLd(P^i) · (1 - V(P,w,))(2)其中λ a,λ s和λ d分為環(huán)境光La,直接光照Ls和一次滲色光照Ld的權(quán)重系數(shù), 具體跟物體表面的材質(zhì)屬性相關(guān)。V則表示P點(diǎn)在Wi方向是否被遮擋,它可用一個(gè)二值函 數(shù)來表示,取值為O時(shí)表示被遮擋,否則表示未被遮擋。根據(jù)微結(jié)構(gòu)高度梯度分布情況,我們?cè)趫D像空間給出各個(gè)分量的求解方法。對(duì)于 入射環(huán)境光,給出一種基于微結(jié)構(gòu)高度梯度圖的自適應(yīng)環(huán)境光遮擋方法,與其他SSAO方 法相比,它不需要預(yù)先定義采樣的步長,能夠自適應(yīng)地快速搜索到局部區(qū)域內(nèi)對(duì)當(dāng)前點(diǎn)最 有可能造成遮擋的點(diǎn),從而可以減少采樣數(shù)量。對(duì)于高頻光源直接光照,結(jié)合經(jīng)典Shadow Mapping方法,給出一種面向微結(jié)構(gòu)表面的陰影區(qū)域修正方法,通過多方向梯度局部最高點(diǎn) 來近似計(jì)算微結(jié)構(gòu)的光線遮擋,可以較好地描述細(xì)微幾何結(jié)構(gòu)的精細(xì)陰影。對(duì)于交互漫反 射入射分量,則通過對(duì)局部最高點(diǎn)和其內(nèi)側(cè)點(diǎn)進(jìn)行采樣,計(jì)算幾何關(guān)系,實(shí)現(xiàn)一次交互漫反 射效果。在各個(gè)入射分量的計(jì)算中,我們充分融入了延遲著色的思想,提高計(jì)算的有效性, 使整個(gè)光照模型的解算能夠達(dá)到實(shí)時(shí)性要求。(2)屏幕空間微結(jié)構(gòu)表面高度梯度圖1)微結(jié)構(gòu)表面高度梯度圖,當(dāng)光線入射到物體表面時(shí),表面微結(jié)構(gòu)的分布和形 狀將影響光線傳播的路徑,產(chǎn)生陰影、遮擋、交互漫射等光照效果。求取微結(jié)構(gòu)高度的梯 度,可以較好地描述局部高低起伏變化,方便遮擋關(guān)系的計(jì)算,提高遮擋點(diǎn)的搜索速度, 因此,針對(duì)微結(jié)構(gòu)表面,我們提出一種屏幕空間的微結(jié)構(gòu)高度梯度圖(Meso-structure HeightGradient Map, MHGM),可以通過下述方法構(gòu)造。假定帶有微結(jié)構(gòu)表面的物體是由微結(jié)構(gòu)高度場(chǎng)和內(nèi)核模型構(gòu)成,微結(jié)構(gòu)高度場(chǎng)通 過紋理合成和紋理映射方法與內(nèi)核預(yù)先綁定。假設(shè)低精度模型M表面任一頂點(diǎn)C均有微結(jié)
5構(gòu)高度場(chǎng)的紋理坐標(biāo)為T。= (Uc, V。),當(dāng)我們?cè)谝朁c(diǎn)V下繪制M時(shí),可以得到該視點(diǎn)下的二 維視圖V',在V'中微結(jié)構(gòu)對(duì)象M的可見部分所占區(qū)域記為M',根據(jù)微結(jié)構(gòu)高度場(chǎng)的映射 關(guān)系,M任一頂點(diǎn)C在M'中的投影點(diǎn)C'都能依據(jù)紋理坐標(biāo)T。取到微結(jié)構(gòu)高度值H。。V' 中M'以外部分的高度值設(shè)置為零。我們將由這些高度值形成的二維圖像稱之為屏幕空間 微結(jié)構(gòu)表面高度圖(Meso-structure Height Map,MHM)。對(duì)MHM求取梯度,我們把生成的 矢量圖像稱為屏幕空間的MHGM。MHGM在圖像空間近似給出了微結(jié)構(gòu)表面起伏變化程度的 描述。2)局部最高點(diǎn)集合的構(gòu)造,具有微結(jié)構(gòu)表面的物體是由微結(jié)構(gòu)高度場(chǎng)和內(nèi)核模型 構(gòu)成,假定微結(jié)構(gòu)變化劇烈程度遠(yuǎn)大于內(nèi)核模型結(jié)構(gòu),那么對(duì)于局部范圍內(nèi)的微結(jié)構(gòu)來說, 其所對(duì)應(yīng)的內(nèi)核模型區(qū)域可近似為平面。由于標(biāo)量場(chǎng)的梯度是一個(gè)向量場(chǎng),梯度的方向指 向標(biāo)量場(chǎng)增長最快的方向,因此我們可以將梯度分析應(yīng)用到上面構(gòu)造的MHGM中,近似計(jì)算 局部微結(jié)構(gòu)的輻射度傳遞。在MHGM中,存在著一些梯度為零的點(diǎn),周圍點(diǎn)的梯度都指向這些點(diǎn)。根據(jù)梯度的 物理含義,這些點(diǎn)的高度值大于其周圍點(diǎn),在本發(fā)明中,我們將其稱之為局部最高點(diǎn)(Local Apex) 0另外,我們將在MHGM上,位于物體可見區(qū)域M'邊界上的點(diǎn)稱之為梯度圖邊界點(diǎn) (BoundaryPoint)。為了計(jì)算微結(jié)構(gòu)上的光照傳播,我們需要根據(jù)局部最高點(diǎn)和梯度圖邊界 點(diǎn)的分布,為每個(gè)可見點(diǎn)構(gòu)造局部最高點(diǎn)集合。在視點(diǎn)V下的二維視圖V'中,給定任意一個(gè)可見點(diǎn)C' (C'是C在V'中的投 影),我們根據(jù)如下方法為其構(gòu)造局部最高點(diǎn)集合f (C')。在該視點(diǎn)下生成的MHGM中,以 C'位置為起始點(diǎn),沿著梯度方向,搜索到距離該點(diǎn)最近的局部最高點(diǎn),我們把該點(diǎn)稱為C' 的直接局部最高點(diǎn),記做H。,,并將它加入f (C')中。由于H。,只是C'在某一個(gè)方向上的 局部最高點(diǎn),其他方向也同樣存在著局部最高點(diǎn),對(duì)C'點(diǎn)的光照計(jì)算有影響。為了得到這 些局部最高點(diǎn),我們?cè)贑'點(diǎn)周圍采樣,當(dāng)某一方向的采樣點(diǎn)SCi時(shí),可以以CiS起始點(diǎn) 沿梯度方向搜索到的局部最高點(diǎn)〃 ·,我們把這樣的點(diǎn)稱為C'的間接局部最高點(diǎn),加入到 f(C')中。同理,我們可以搜索C'點(diǎn)其它方向的局部最高點(diǎn),使得f (C')包含C'的多 方向局部最高點(diǎn)。另外,如果C'位于M'邊界附近,沿梯度方向可能搜索到的點(diǎn)為邊界點(diǎn) Be,,我們將這樣的點(diǎn)也作為局部最高點(diǎn),放入f (C')中。f(C')中所有局部最高點(diǎn)將對(duì) 微結(jié)構(gòu)表面光照度傳播產(chǎn)生較大的作用,應(yīng)用于隨后的光照分量計(jì)算之中。(3)局部微結(jié)構(gòu)光照計(jì)算方法1)環(huán)境光遮擋計(jì)算方法,本發(fā)明提出一種基于微結(jié)構(gòu)高度梯度圖的環(huán)境光遮擋計(jì) 算方法,不同于其他屏幕空間方法沿著所有方向計(jì)算環(huán)境光遮擋值,我們的方法利用上節(jié) 所述的局部最高點(diǎn)集合來自適應(yīng)地計(jì)算微結(jié)構(gòu)模型的環(huán)境光遮擋。對(duì)于給定一點(diǎn)P,P點(diǎn)周圍存在的點(diǎn)會(huì)對(duì)它產(chǎn)生遮擋。P的點(diǎn)環(huán)境光遮擋計(jì)算公式 如下。A(P,n) = ^~lv(P,0W^)da(幻其中η是P點(diǎn)的法線方向,Ω是以P點(diǎn)為中心,以η為正方向的單位半球,V是該 半球上的光線的可見性函數(shù),如果為1則表示該方向可見,O則表示該方向被遮擋。W為權(quán)
重函數(shù)。
我們以P點(diǎn)所對(duì)應(yīng)的內(nèi)核的模型頂點(diǎn)法線方向作為極軸,以方位角θ和傾斜角α 建立球面坐標(biāo)系。則公式(3)可轉(zhuǎn)化為 對(duì)于每一方向θ,若我們找到一個(gè)最大遮擋角h( θ ),當(dāng)α >h(6)時(shí),r(P;) = l, 則可以得到公式(5)
可分別得到公式 權(quán)重函數(shù)見-、有很多種給法,如令、--,、或
(6)和公式(7)。在環(huán)境光遮擋的計(jì)算中,我們采用了公式(7)。成八
本發(fā)明的方法通過兩張輸入紋理eyeDisTexture和heighestTexture來計(jì)算環(huán)境 光遮擋值。eyeDisTexture紋理中存儲(chǔ)了微結(jié)構(gòu)模型頂點(diǎn)所對(duì)應(yīng)的空間坐標(biāo)值,即對(duì)于其上 任意一個(gè)像素點(diǎn),其對(duì)應(yīng)的空間坐標(biāo)值有公式(8)計(jì)算得出。 其中Pci^分別為模型主內(nèi)核上點(diǎn)的空間坐標(biāo)值和法向量,dis為其對(duì)應(yīng)的微結(jié)構(gòu) 高度場(chǎng)的高度值,k為放縮量。heighestTexture紋理中存儲(chǔ)了頂點(diǎn)由梯度圖搜索得到的局 部最高點(diǎn)所對(duì)應(yīng)的紋理坐標(biāo)。在微結(jié)構(gòu)模型中,對(duì)于模型表面的頂點(diǎn)P,若其某方向范圍內(nèi)存在一局部最高點(diǎn) <,則我們可以近似的認(rèn)為,點(diǎn)即是該方向范圍內(nèi)對(duì)P點(diǎn)遮擋角度最大的點(diǎn),我們利用<
Ah
點(diǎn)對(duì)P點(diǎn)的遮擋角度晰)^^ th( . p ) (Ah為兩點(diǎn)的高度差)來表示該方向范圍上的
IengthQHp - P)
遮擋角度,用公式(7)計(jì)算環(huán)境光遮擋值。同時(shí),如果點(diǎn)P某一方向范圍內(nèi)不存在局部最高 點(diǎn),則我們可以認(rèn)為點(diǎn)P在該方向上基本不受遮擋。這樣,微結(jié)構(gòu)模型上頂點(diǎn)P的環(huán)境光遮 擋計(jì)算就轉(zhuǎn)化為了計(jì)算其局部最高點(diǎn)集合對(duì)它的遮擋。本發(fā)明方法借助微結(jié)構(gòu)高度場(chǎng)梯度 分布搜索遮擋點(diǎn),遮擋計(jì)算是在微結(jié)構(gòu)高度場(chǎng)所在的對(duì)象空間完成的,因此不會(huì)隨視點(diǎn)的 變化而變化,方法是自適應(yīng)的,不需要設(shè)定采樣范圍和間隔參數(shù),并且搜索到的點(diǎn)均為對(duì)遮 擋有影響的有效點(diǎn)。2)高頻光源光照效果計(jì)算方法,我們采用Phong模型來計(jì)算微結(jié)構(gòu)表面接受 到的高頻直接光照。在計(jì)算光照強(qiáng)度之前,需要判斷模型上點(diǎn)是否被照亮,即是否會(huì)因 為遮擋關(guān)系而產(chǎn)生自陰影效果。要精確描繪微結(jié)構(gòu)表面的陰影,需要使用位移貼圖方法 (DisplacementMapping)將微結(jié)構(gòu)高度場(chǎng)中的高度值作用于對(duì)象的頂點(diǎn),產(chǎn)生實(shí)際頂點(diǎn)的 位移,生成新的高細(xì)節(jié)模型,然后借助陰影繪制方法對(duì)該模型進(jìn)行陰影計(jì)算。這樣做存在幾 個(gè)問題。第一,當(dāng)內(nèi)核模型網(wǎng)格精度不夠時(shí),首先需要網(wǎng)格鑲嵌提高模型頂點(diǎn)數(shù)目,然后才
7能進(jìn)行頂點(diǎn)位移。第二,直接在新生成的高精度模型上采用光線跟蹤類方法,由于模型局部 幾何細(xì)節(jié)過多,計(jì)算量大。即使采用效率較高的陰影映射方法,也需要繪制兩遍帶有微結(jié)構(gòu) 表面的幾何模型,影響方法時(shí)間性能。在本發(fā)明中,為了提高繪制效率,我們使用的帶有微結(jié)構(gòu)表面的幾何模型是在內(nèi) 核模型上綁定微結(jié)構(gòu)高度場(chǎng)映射信息,沒有實(shí)際的頂點(diǎn)位移,因而模型表面沒有微結(jié)構(gòu)的 形變,無法用Shadow Mapping方法直接計(jì)算陰影位置。為了解決上述問題,本發(fā)明給出一 種基于梯度空間局部最高點(diǎn)的微結(jié)構(gòu)表面陰影圖修正方法,在采用經(jīng)典Shadow Mapping方 法對(duì)內(nèi)核結(jié)構(gòu)模型計(jì)算大尺度陰影的基礎(chǔ)上,對(duì)由微結(jié)構(gòu)高度場(chǎng)產(chǎn)生的局部表面細(xì)節(jié)進(jìn)行 遮擋計(jì)算,對(duì)原陰影區(qū)域進(jìn)行修正。3) 一次交互漫反射計(jì)算方法,與方向光效果的計(jì)算類似,對(duì)于微結(jié)構(gòu)表面對(duì)象,如 采用頂點(diǎn)位移后的高精度模型,通過輻射度方法計(jì)算對(duì)象各個(gè)部分間的一次交互漫反射效 果,計(jì)算開銷過大,方法很難達(dá)到實(shí)時(shí)。Ritschel等在SSDO中,給出在屏幕空間計(jì)算一次交 互漫反射的方法。本發(fā)明方法仍基于在圖像空間采樣的思路,但與SSDO主要有兩點(diǎn)區(qū)別。 第一,SSDO是在一個(gè)預(yù)定義半徑的半球內(nèi)進(jìn)行采樣,本發(fā)明方法的采樣以當(dāng)前點(diǎn)的局部最 高點(diǎn)集合為邊界,是自適應(yīng)的,不需要手工設(shè)定。第二,SSDO采樣每個(gè)點(diǎn)后,需要首先判斷 是否遮擋,之后才能進(jìn)行計(jì)算。我們則是在已知會(huì)被遮擋的的范圍內(nèi)取點(diǎn)進(jìn)行計(jì)算,減少了 遮擋計(jì)算次數(shù),提高測(cè)試點(diǎn)的有效性比率。對(duì)于P點(diǎn)周圍的所有局部最高點(diǎn),P點(diǎn)會(huì)被這些局部最高點(diǎn)所遮擋。我們首先沿 著P的梯度爬升方向進(jìn)行采樣,直至P的直接局部最高點(diǎn)HP,在此路徑上進(jìn)行一次交互漫反 射入射光照度采樣。之后,我們?cè)赑點(diǎn)附近尋找中介點(diǎn)P',沿著P'的梯度爬升方向至其 直接局部最高點(diǎn)Hp,,同樣也在此路徑上進(jìn)行交互漫反射入射光照度采樣。如圖8所示,我 們可以沿著P點(diǎn)和中介點(diǎn)P'的梯度方向,逐點(diǎn)采樣,通過采樣點(diǎn)的顏色,計(jì)算P點(diǎn)的一次交 互漫反射。同時(shí)為了避免采樣點(diǎn)S無法滲色到P點(diǎn)的情況,還需要考慮到巧與i的夾角和$ 與^;的夾角是否小于90度。如圖8中的中介點(diǎn)P'點(diǎn),它顯然無法滲色到P點(diǎn)。最后得到 一次交互漫反射的計(jì)算公式如下 其中ρ為材質(zhì)的BSDF參數(shù),Si為采樣點(diǎn)。
圖1本發(fā)明方法繪制的微結(jié)構(gòu)表面全局光照效果圖;圖2微結(jié)構(gòu)表面對(duì)象的構(gòu)成圖;圖3MHGM生成過程示意圖;圖4a和圖4b局部最高點(diǎn)提取方法示意圖(一表示梯度、一表示搜索路 徑);圖5環(huán)境光遮擋計(jì)算示意圖;圖6微結(jié)構(gòu)陰影修正示意圖;圖7光線方向近似剖面示意圖8 —次交互漫反射采樣示意圖;圖 9PaSS2 的輸入紋理 shadowMap 和輸出紋理 eyeColorTexture、eyeDisTexture 圖(ashadowMap 紋理,b eyeColorTexture 紋理,c eyeDisTexture 紋理);圖 10Pass3 的輸出紋理 eyeDisNormalTexture、gradientTexture 禾口 Pass4 的輸 出紋理 heighestTexture 圖(a eyeDisNormalTexture 紋理,b eyeColorTexture 紋理, cgradientTexture 紋理);圖llPass5輸出紋理IightingTexture的r、g、b、a分量圖(a環(huán)境光遮擋值,b點(diǎn) 光源漫反射強(qiáng)度值,c高光強(qiáng)度值,d陰影值);圖12微結(jié)構(gòu)表面環(huán)境光遮擋繪制效果及對(duì)比圖(a我們的基于高度梯度圖的方 法,b我們的方法+SSAO方法,c Bavoil的方法);圖13微結(jié)構(gòu)表面點(diǎn)光源陰影繪制效果及對(duì)比圖(a經(jīng)典Shadow Mapping方法效 果,bShadow Mapping+微結(jié)構(gòu)表面陰影修正);圖14 一次交互漫反射繪制效果及對(duì)比圖(a無交互漫反射效果,b有交互漫反射 效果);圖15使用本發(fā)明方法靜態(tài)模型繪制效果圖(a Teapot的全局光照效果,b Torus 的全局光照效果,c Elephant的全局光照效果,d Dinosaur的全局光照效果);圖16本發(fā)明方法對(duì)動(dòng)態(tài)模型的繪制效果圖;圖17不同面片數(shù)模型在不同紋理分辨率下的繪制幀率折線圖。
具體實(shí)施例方式本發(fā)明的方法具體實(shí)現(xiàn)過程如下本發(fā)明方法使用了 Shadow Mapping方法,所以對(duì)整個(gè)場(chǎng)景進(jìn)行了兩遍繪制。其他 計(jì)算所在的渲染過程,都采用了延遲著色思想,通過畫滿屏的四邊形來實(shí)現(xiàn)的,因此方法引 入的計(jì)算開銷與場(chǎng)景中對(duì)象幾何模型的復(fù)雜度關(guān)系較小。方法在計(jì)算過程中用到的紋理較多,紋理組織如下(1) disTexture 對(duì)象表面的微結(jié)構(gòu)高度紋理。初始化時(shí)輸入,Pass2使用。(2)modelTexture 對(duì)象表面的顏色紋理。初始化時(shí)輸入,Pass2使用。(3) shadowMap 以光源為視點(diǎn)下場(chǎng)景的深度圖。Passl生成,Pass2使用。(4) eyeDisTexture :r、g、b分量存儲(chǔ)視點(diǎn)下對(duì)象表面根據(jù)disTexture沿法向量 偏移后的坐標(biāo)值,a分量存儲(chǔ)對(duì)象表面上點(diǎn)對(duì)應(yīng)的disTexture中的偏移量。Pass2生成, Pass3> Pass5> Pass6 iJM。(5) eyeColorTexture :r、g、b分量存儲(chǔ)視點(diǎn)下對(duì)象表面的顏色值,a分量存儲(chǔ)其是 否在陰影中(0或1)。Pass2生成,Pass5、Pass6使用。(6) eyeDisNormalTexture 存儲(chǔ)由偏移后的帶有微結(jié)構(gòu)表面的對(duì)象頂點(diǎn)坐標(biāo)計(jì)算 得到的新法向量。Pass3生成,Pass5、Pass6使用。(7) gradientTexture 存儲(chǔ)計(jì)算得到的對(duì)象微結(jié)構(gòu)表面的高度梯度圖。Pass3生 成,Pass4使用。(8)heighestTexture 存儲(chǔ)對(duì)象表面頂點(diǎn)由梯度圖搜索得到的局部最高點(diǎn)所對(duì)應(yīng) 的紋理坐標(biāo)。Pass4生成,Pass5、Pass6使用。
(9) IightingTexture 四個(gè)分量分別用于存儲(chǔ)環(huán)境光遮擋值、點(diǎn)光源漫反射值、高 光值、陰影值。Pass5生成,Pass6使用。方法具體繪制步驟Passl采用傳統(tǒng)Shadow Mapping方法,從光源位置繪制場(chǎng)景,將光源視空間下三 維模型表面頂點(diǎn)的深度值繪制到shadowMap中。Pass2 從視點(diǎn)位置繪制模型,以 shadowMap、modelTexture 和 disTexture 三張 紋理作為輸入,將視空間下三維模型表面頂點(diǎn)的坐標(biāo)值沿法線偏移(偏移量由高度紋理 disTexture獲得),將偏移后的坐標(biāo)值及偏移量繪制到eyeDisTexture紋理中;將三維模型 表面頂點(diǎn)的顏色值繪制到eyeColorTexture紋理的r、g、b分量中;判斷頂點(diǎn)是否處于陰影 中,將陰影值(0或1)繪制到eyeColorTexture紋理的a分量中,見圖9。采用多目標(biāo)渲染 (Multiple Render Target, MRT)方式一遍繪制完成。Pass3基于延遲著色的思想,繪制滿屏的四邊形,以eyeDisTexture紋理作為輸 入,利用偏移后的頂點(diǎn)坐標(biāo)值,計(jì)算頂點(diǎn)的法向量,將結(jié)果繪制到eyeDisNormalTexture紋 理中;將偏移量作為高度值,計(jì)算每一頂點(diǎn)的梯度方向(即對(duì)應(yīng)的紋理坐標(biāo)),將結(jié)果繪制 到gradientTexture紋理中,見圖10(a) (b)。采用MRT的方式一遍繪制完成。Pass4繪制一個(gè)滿屏的四邊形,以gradientTexture紋理作為輸入,對(duì)于每一個(gè) 頂點(diǎn),沿梯度方向搜索,可找到一局部最高點(diǎn),并記錄下其對(duì)應(yīng)的紋理坐標(biāo),將結(jié)果繪制到 heighestTexture 紋理中,見圖 10(c)Pass5 繪制一個(gè) 薛屏的四邊形,以 heighestTexture、eyeDisTexture、 eyeColorTexture和eyeDisNormalTexture四張紋理作為輸入,由每一頂點(diǎn)周圍的局 部最高點(diǎn)集,計(jì)算環(huán)境光遮擋值、點(diǎn)光源漫反射強(qiáng)度值、高光強(qiáng)度值和陰影值,繪制到 IightingTexture紋理的四個(gè)通道中,見圖11。Pass6繪制一個(gè)滿屏的四邊形,以立方圖作為環(huán)境光源,以lightingTexture、 heighestTexture>eyeDisTexture>eyeColorTexture 禾口 eyeDisNormalTexture 四張紋理作 為輸入,由每一頂點(diǎn)周圍的局部最高點(diǎn)集,計(jì)算一次交互漫反射,與之前的計(jì)算結(jié)果結(jié)合, 將最終顏色值輸出到屏幕上。本發(fā)明方法的實(shí)驗(yàn)環(huán)境為Inter Core (TM) 23. OGHz CPU、2G 內(nèi)存、NVIDIA GeForce GTX2601G顯示卡、運(yùn)行Windows XP操作系統(tǒng)的PC機(jī)。實(shí)驗(yàn)程序基于OpenGL 3. 0API,Shader 程序使用Shader Model 3.0方式編譯。為了驗(yàn)證微結(jié)構(gòu)表面光照模型的有效性,我們首先 使用了 Teapot、El印hant、Torus、Dinosaur等多個(gè)模型對(duì)各個(gè)分量計(jì)算的繪制效果進(jìn)行了 對(duì)比分析,然后給出本發(fā)明法繪制的帶有微結(jié)構(gòu)表面對(duì)象的全局光照效果,最后進(jìn)行了性 能測(cè)試實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)P蛢H包含微結(jié)構(gòu)高度場(chǎng)映射的二維坐標(biāo)(類似紋理映射),模型頂點(diǎn)本 身不包含微結(jié)構(gòu)幾何信息。本發(fā)明方法屬于圖像空間方法,在進(jìn)行直接光照分量的計(jì)算中,由于采用了傳統(tǒng) 的Shadow Mapping,對(duì)整個(gè)場(chǎng)景繪制兩遍,其余計(jì)算與繪制只是針對(duì)滿屏矩形的填充,因此 幾何模型的復(fù)雜度和計(jì)算中間過程所選用的紋理緩存的分辨率都對(duì)整個(gè)方法的效率有所 影響。為了對(duì)不同復(fù)雜度的幾何模型進(jìn)行測(cè)試,我們對(duì)更多的模型進(jìn)行了測(cè)試。實(shí)驗(yàn)?zāi)P?均來自于從斯坦福大學(xué)三維模型庫。表1給出了對(duì)于不同復(fù)雜度的實(shí)驗(yàn)?zāi)P驮?56*256, 512*512、1024*1024三個(gè)不同分辨率紋理緩存下的計(jì)算速度。窗口大小設(shè)為1024*1024。
根據(jù)表1數(shù)據(jù),可以畫出如圖17所示的折線圖,從該圖可以看出本發(fā)明方法繪制 效率較高,對(duì)于100萬面片數(shù)的復(fù)雜模型,在256*256和512*512分辨率下,繪制幀率可達(dá) 到60幀/秒以上。即使是在1024*1024分辨率下,其繪制幀率仍能達(dá)到50幀/秒,可保證 實(shí)時(shí)繪制的需要。其次,對(duì)比圖中三條折線,可以發(fā)現(xiàn)渲染紋理分辨率對(duì)本發(fā)明方法影響較 大。尤其是在模型面片數(shù)較少時(shí),繪制幀率隨著紋理分辨率的不同成倍下降,隨著模型面片 數(shù)的增多,下降幅度逐漸減小。此外,圖中黃色折線比較平穩(wěn),粉色和藍(lán)色折線雖然平穩(wěn)性 要差一些,但繪制效率與模型面片數(shù)之間也遠(yuǎn)遠(yuǎn)構(gòu)不成反比關(guān)系。這說明隨著紋理分辨率 的增大,本發(fā)明方法受模型復(fù)雜度的影響也越來越小。本發(fā)明方法充分發(fā)揮了延遲著色的 優(yōu)點(diǎn)只繪制兩遍模型,繪制多遍紋理。因此方法的繪制效率受模型復(fù)雜度影響較小,受紋 理分辨率影響較大。當(dāng)然,在較大的紋理分辨率下,最終的圖像繪制質(zhì)量也會(huì)較好。
1權(quán)利要求
一種基于高度圖的微結(jié)構(gòu)表面全局光照實(shí)時(shí)繪制方法,其步驟依次為(1)針對(duì)物體表面幾何細(xì)節(jié)特點(diǎn)給出一種全局光照分解計(jì)算方法,以分別近似計(jì)算環(huán)境光、反射和一次交互漫反射等光照分量;(2)基于屏幕空間創(chuàng)建物體微結(jié)構(gòu)表面的高度梯度圖,然后根據(jù)微結(jié)構(gòu)表面梯度的方向及其大小的分布來搜索對(duì)局部細(xì)節(jié)光照影響最大的方向和遮擋點(diǎn),并建立局部最高點(diǎn)集合以指導(dǎo)各個(gè)光照分量的自適應(yīng)地采樣計(jì)算;(3)采用微結(jié)構(gòu)表面陰影修正方法,通過紋理坐標(biāo)將微結(jié)構(gòu)高度場(chǎng)綁定在低精度模型表面,將帶有微結(jié)構(gòu)表面的對(duì)象的陰影計(jì)算分為兩步首先利用Shadow Mapping計(jì)算低精度網(wǎng)格的陰影,接著采用梯度空間局部最高點(diǎn)集合遮擋計(jì)算來生成細(xì)節(jié)陰影。
2.根據(jù)權(quán)利要求1的方法,具體包括(1)使用對(duì)象的低精度幾何模型和微結(jié)構(gòu)細(xì)節(jié)高度圖,表現(xiàn)帶有微結(jié)構(gòu)表面的高精度 幾何模型的全局光照效果;(2)消除預(yù)計(jì)算,方法達(dá)到實(shí)時(shí)性能,適用于動(dòng)態(tài)場(chǎng)景和可變形對(duì)象,所述可變形對(duì)象 包括微結(jié)構(gòu)和低精度模型;(3)所述微結(jié)構(gòu)表面的全局光照近似方法進(jìn)一步包括使用環(huán)境光、高頻光源入射光 和一次交互漫反射來模擬局部細(xì)節(jié)的光照度傳遞的方法來計(jì)算全局光照;(4)所述微結(jié)構(gòu)表面陰影修正方法進(jìn)一步包括提出屏幕空間微結(jié)構(gòu)高度梯度圖,并 構(gòu)建可見點(diǎn)的局部最高點(diǎn)集合,自適應(yīng)確定采樣范圍,消除人工設(shè)定參數(shù),高效準(zhǔn)確。
全文摘要
本發(fā)明提出一種基于高度梯度圖分析的全局光照實(shí)時(shí)繪制方法。給出面向微結(jié)構(gòu)表面對(duì)象實(shí)時(shí)繪制的全局光照計(jì)算模型,將光照計(jì)算近似分解為環(huán)境光入射、光源直接光照和一次交互漫反射等三個(gè)分量的計(jì)算。定義微結(jié)構(gòu)高度梯度圖,并據(jù)此構(gòu)建可見點(diǎn)的局部最高點(diǎn)集合。在環(huán)境光計(jì)算中,本發(fā)明提出一種自適應(yīng)環(huán)境光遮擋計(jì)算,借助局部最高點(diǎn)集合計(jì)算遮擋角。在直接光照中,給出一種微結(jié)構(gòu)陰影的修正方法,搜索入射光方向的最近局部最高點(diǎn)剖面,通過比較剖面內(nèi)光線投影與局部最高點(diǎn)的遮擋角,近似確定由微結(jié)構(gòu)造成的陰影區(qū)域。最后根據(jù)可見點(diǎn)的局部最高點(diǎn)集合確定一次交互漫反射的采樣范圍,進(jìn)行滲色處理。整個(gè)全局光照計(jì)算方法在圖像空間完成。
文檔編號(hào)G06T15/50GK101882323SQ20101018208
公開日2010年11月10日 申請(qǐng)日期2010年5月19日 優(yōu)先權(quán)日2010年5月19日
發(fā)明者楊崢, 王莉莉, 趙沁平, 馬志強(qiáng) 申請(qǐng)人:北京航空航天大學(xué)