欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種虛擬舞臺環(huán)境下實時光照繪制的方法

文檔序號:6471863閱讀:170來源:國知局
專利名稱:一種虛擬舞臺環(huán)境下實時光照繪制的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種虛擬舞臺環(huán)境下實時光照繪制的方法。
背景技術(shù)
在虛擬環(huán)境系統(tǒng)中,真實性和實時性是構(gòu)造虛擬環(huán)境面臨的兩大挑戰(zhàn)。真實性強調(diào)系統(tǒng) 是否能夠構(gòu)建一個逼真的自然環(huán)境,使用戶忽略計算機系統(tǒng),達到身處自然環(huán)境中的感受。 實時性則強調(diào)系統(tǒng)是否能夠與用戶進行實時隨機交互,從而更好為各種應(yīng)用服務(wù)。
下面簡單介紹一下近年來國內(nèi)外專家對于虛擬舞臺多光源光照下的參與介質(zhì)和室內(nèi)環(huán) 境體陰影繪制的一些研究現(xiàn)狀。
光照在參與介質(zhì)中的傳輸主要受以下三個過程的影響(l)吸收(Absorption):由于光 能轉(zhuǎn)化為熱能等其它形式的能量導(dǎo)致光照在傳播過程中能量減少。(2)發(fā)射(Emission):介 質(zhì)中的粒子由于發(fā)光等因素從而增加光照在傳播過程中能量。(3)散射(Scattering):光線 由于與介質(zhì)中的粒子發(fā)生碰撞從而導(dǎo)致光線向不同的方向散射發(fā)出。散射包括內(nèi)散射 (in-scattering)和外散射(out-scattering),其中內(nèi)散射增加光照在傳播過程中的能量而 外散射則減少光照在傳播過程中的能量。
基于以上過程,Blinn[提出了可以應(yīng)用于真實感圖形繪制領(lǐng)域的模擬光照傳輸過程中光 照量變化的基本公式參考文獻Blinn JF (1982) "Light reflection functions for simulation of clouds and dusty surfaces" , In: Computer Graphics (ACM SIGGRAPH ' 82 Proceedings) 16(3) :21-29
,:。, a)
c7。(;c) + CTj(;c) JS ' 公式(1)中, (;c)和o",(;0分別表示吸收系數(shù)和散射系數(shù),p(w。,q)表示相位函數(shù),《表
示視點到模型表面像素點的距離。r(A = exp[- ( (")+ crs (的)血]稱作光學(xué)厚度(Opt i cal
thickness),表示光照值從p到x經(jīng)過參與介質(zhì)消散后的剩余光照比例。國內(nèi)外專家學(xué)者對 參與介質(zhì)的繪制模擬大都基于求解此基本公式。
體陰影繪制的研究最開始是在離線渲染的情況下進行的,典型的繪制方法是釆用蒙特卡 洛光線跟蹤方法或光子映射方法來進行散射光照值的累加計算,以此達到^J陰影的模擬。這些繪制方法的計算量巨大,無法達到實時性。
隨著圖形硬件的發(fā)展,研究人員提出了許多可交互的體陰影繪制方法。這些方法大致 可以分為兩類基于Shadow Volume的方法和基于Ray Marching的方法?;赟hadow Volume 的方法參考文獻[l]V. Biri, D. Arques, and S. .Michelin. "Real time rendering of atmospheric scattering and volumetric shadows" , in: Journal of WSCG, 1.4:65-',72, 2006.[2]R. Mech. "Hardware-accelerated real-time rendering of gaseous phenomena", in: Journal of Graphics Tools, 6(3) :1 - 16, 2001. [3]R. James. "Graphics Programming Methods, chapter True volumetric shadows" , in: pages 353 - 366. Charles River Media, 2003.需要判定出光線處于陰影錐區(qū)域中的片段,而 在判定這些片段的過程中需要在GPU中渲染出從后到前的所有陰影面片,因此引入了排序 的計算量?;赗ay Marching的方法參考文獻[l]Y. Dobashi, T. Yamamoto, and T. Nishita. "Interactive rendering of atmospheric scattering effects using graphics hardware" , in: In Graphics Hardware, pages 99 - 107, 2002. [2]T. Imagire, H. Johan, N. Tamura, and T. Nishita. "Anti-aliased and real-time rendering of scenes with light scattering effects" , in: The Visual Computer, 23(9):935 - 944, 2007.原 理是對由視點到模型表面像素點的光線進行采樣,判定每一采樣點是否被光源照射并計算 散射光照值,最后通過累加散射光照值得到體陰影的繪制效果。此類方法由于需要逐步計 算光照值,因此計算量也較大,但如果減少采樣點的數(shù)目,繪制得到的效果也就并不準(zhǔn)確。

發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服了現(xiàn)有技術(shù)的不足,提供一種可以比較真實的模擬虛擬 舞臺環(huán)境下多光源光照效果的繪制方法,并且保證了其實時性。
本發(fā)明的技術(shù)解決方案為虛擬舞臺環(huán)境下實時光照的繪制方法,步驟如下 (1)建立一棵光源層次樹,并利用該光源層次樹對虛擬舞臺環(huán)境下的多光源進行聚類; 實時繪制出多光源光照下的參與介質(zhì),所述的實時繪制方法采用了兩遍繪制流程第一遍繪 制時,利用幀緩存對象FBO將參與介質(zhì)的信息,包括密度、吸收系數(shù)或散射系數(shù)屬性保存在 一張3D紋理中;第二遍繪制從該3D紋理中讀取保存的介質(zhì)信息進行繪制;
(2)結(jié)合shadow map、 shadow volume和ray marching,實時繪制出室內(nèi)場景參與介 質(zhì)的體陰影,該部分繪制包括以下五個步驟-
a.從步驟(1)中的多個光源出發(fā)繪制整個場景深度的shadow map,即陰影圖,將其 保存至幀緩存對象FB0中;將場景中遮擋物的后表面深度信息的shadow map保存至另一幀 緩存對象FBO中;b. 從視點出發(fā)計算并繪制shadow volume,即陰影錐,將其保存至幀緩存對象FB'0中, 幀緩存對象FBO保存視點到shadow volume的最前陰影面片和最后陰影面片的距離
c. 在不考慮參與介質(zhì)散射作用的情況下,繪制整個場景并將顏色、法向、深度值信息 保存至幀緩存對象FBO中;
d. 考慮參與介質(zhì)的散射作用,計算整個場景每一像素具有的散射光照值;
e. 合并步驟c和d中生成的結(jié)果,采取基于Deferred Shading技術(shù)作為優(yōu)化策略, 生成最終的渲染效果。
所述的步驟(1)中本發(fā)明使用八叉樹這一數(shù)據(jù)結(jié)構(gòu)來建立一棵光源層次樹,并利用該 光源層次樹對虛擬舞臺環(huán)境下的多光源進行聚類,具體聚類方法為首先通過對光源空間進 行空間八叉剖分,即可得到該八叉樹的八個孩子節(jié)點,然后判斷各孩子節(jié)點的包圍盒中是否 有真實光源,若有,則繼續(xù)對其進行剖分,否則停止剖分。
所述的步驟(l)中第一遍繪制時,利用幀緩存對象FBO將參與介質(zhì)的信息,包括密度、 吸收系數(shù)或散射系數(shù)屬性保存在一張3D紋理中的方法為-
a. 將介質(zhì)空間分成寬widt^高h(yuǎn)eighW深d印th個的小格,申請的相應(yīng)3D紋理的大 小要與介質(zhì)空間的小格數(shù)相對應(yīng),每一小格介質(zhì)信息,包括密度、吸收/散射系數(shù)屬性可以 分別保存至3D紋理每一片元的不同通道中;
b. 將參與介質(zhì)空間分成深d印th個寬width+高h(yuǎn)eight的二維面片,循環(huán)深d印th個次, 每次將不同面片的介質(zhì)屬性信息寫入到幀緩存對象FBO的對應(yīng)層次中,最后加以融合,即可 得到保存介質(zhì)屬性的3D紋理。
所述步驟(2) b中在確定shadow volume的最前陰影面片和最后陰影面片之前,需要首 先構(gòu)造出該shadow volume的所有陰影面片,所述的構(gòu)造出該shadow volume的所有陰影面 片的方法為首先確定遮擋體shadow caster的輪廓邊Silhouette;然后從輪廓邊Silhouette 出發(fā),利用Geometry Shader構(gòu)建shadow volume的所有陰影面片。
所述步驟(2) d中在計算每一像素具有的散射光照值時,需要分情況進行計算對于 與視點的連線并未穿過shadow volume的像素,采用解析方法進行散射光照值的計算;對 于與視點的連線穿過shadow volume的像素,從最后面陰影片到最前面陰影片進行ray marching,采用之前保存的shadow map確定shadow volume中的某段區(qū)域是否被光照,若 是,則采用解析方法進行散射光照值的計算,若不是,則基于之前生成的shadow map,采用 光照衰減函數(shù)來計算該區(qū)域的散射光照值。 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于
首先,本發(fā)明提出的參與介質(zhì)實時繪制方法采用了兩遍—繪制的流程第一遍繪制時,通過采用FB0技術(shù)將參與介質(zhì)的屬性保存在一張3D紋理中;"第二遍繪制分為兩部分,'讀取3D 紋理中存儲的信息,進行Air Light (實時光暈)和Surface Light (參與介質(zhì))的計算。 在計算Air Light時,通過變換光照傳輸公式,査找二維特征函數(shù)數(shù)值表來簡化求解過程, 從而加快了繪制速度;在計算Surface Light時,采用基于物理的模擬方法,通過求解光照 在參與介質(zhì)中的基本傳輸公式來實現(xiàn)對參與介質(zhì)的實時繪制。這種兩遍繪制的優(yōu)勢在于利用 基于FBO的延時著色技術(shù),減少了不必要的渲染,提高了運算部件的利用率。此外,在多光 源繪制的過程中,使用了利用光源層次樹對多光源進行聚類的方法,減少了影響整個光照場 景中光源數(shù)目(實際上是將多個真實光源合并成為虛擬光源),提高了繪制速度。
其次,本發(fā)明結(jié)合了 Shadow Map、 Shadow Volume和Ray Marching等傳統(tǒng)技術(shù),提出 了一種混合的適用于室內(nèi)場景體陰影實時繪制的方法,該方法用shadow map保存深度信息, 用shadow volume保存陰影面片,并且考慮了參與介質(zhì)的散射作用,進行光照值得計算,實 現(xiàn)了對體陰影的仿真。同時對體陰影的繪制步驟中同樣使用了基于FBO的延時著色技術(shù),保 證了繪制的實時性。
綜上所述,本發(fā)明提出的虛擬舞臺環(huán)境下實時光照的繪制方法不僅保證了繪制的逼真程 度,而且解決了傳統(tǒng)方法無法做到的實時性問題,可以應(yīng)用于虛擬舞臺環(huán)境下多光源光照效 果的實時仿真。


圖l為本發(fā)明方法的流程圖2為基于3D紋理的參與介質(zhì)實時繪制算法流程;
圖3為采用FBO分層繪制技術(shù)將介質(zhì)屬性信息繪制到3D紋理;
圖4為Air Light的計算;
圖5為Surface Light的計算
圖6為shadow volume陰影面片的構(gòu)建過程,其中(a)為示意圖,(b)為流程圖; 圖7為本發(fā)明方法生成的shadow volume; 圖8為本發(fā)明方法的繪制效果圖。
具體實施例方式
如圖1所示,本發(fā)明的具體實施方法如下
(l)建立一棵光源層次樹,并利用該光源層次樹對虛擬舞臺環(huán)境下的多光源進行聚類。
為了實ia虛擬舞臺環(huán)境下多光源光照效果的實時繪制,本發(fā)明中使用了對多光源進行 聚類的方法。其基本原理是建立一棵光源層次樹,根據(jù)該光源層次樹將各個光源聚類為幾 個大的虛擬光源,來對參與介質(zhì)和場景進行渲染,從而減少了影響舞臺場景的光源數(shù)目,提高了繪制速度。
本發(fā)明使用了八叉樹的數(shù)據(jù)結(jié)構(gòu)來定義所使用的光源層次樹,所設(shè)計的光源層次樹中 的結(jié)點包含以下內(nèi)容包圍盒、所在層次、包含光源數(shù)(含孩子節(jié)點的虛擬光源)、是否是 虛擬光源等。
下面簡單介紹一下構(gòu)建并使用光源樹的方法??舷龋瑯?gòu)造光源樹的一個根節(jié)點,并用 該結(jié)點初始化一棵八叉樹結(jié)構(gòu)的光源層次樹。同時在對光源進行初始化時將光源的位置、 法線、顏色等信息存入一張光源列表中,然后將該列表傳入光源層次樹,并依此對光源空 間進行劃分。即可通過設(shè)置不同的層次參數(shù)來對光源樹進行聚合,從而達到聚合渲染效果, 提高運算速度的目的。
(2)實時繪制出多光源光照下的參與介質(zhì),所述的實時繪制方法采用了兩遍繪制流程 第一遍繪制時,利用幀緩存對象FB0將參與介質(zhì)的信息,包括密度、吸收系數(shù)或散射系數(shù) 屬性保存在一張3D紋理中;第二遍繪制從該3D紋理中讀取保存的介質(zhì)信息。
在虛擬舞臺場景中參與介質(zhì)的繪制中,本發(fā)明采用了兩遍繪制流程如圖2所示,在第 一遍繪制時,通過采用FBO技術(shù)將參與介質(zhì)的密度、吸收/散射系數(shù)等屬性保存在一張3D紋 理中;第二遍繪制從3D紋理中讀取參與介質(zhì)的屬性信息,同時進行Air Light和Surface Light的計算。在計算Air Light吋,通過變換光照傳輸公式,査找二維特征函數(shù)數(shù)值表來 簡化求解過程,從而加快了繪制速度;在計算Surface Light時,采用基于物理的模擬方法, 通過求解光照在參與介質(zhì)中的基本傳輸公式來實現(xiàn)對參與介質(zhì)的實時繪制。
本發(fā)明用3D紋理保存參與介質(zhì)的密度、吸收/散射系數(shù)等屬性,通過計算模型表面各片 元像素的顏色來模擬出場景的霧化效果,各片元像素的最終顏色受模型表面材質(zhì)、場景空間 中空氣介質(zhì)干擾等條件的影響。如圖3所示,本發(fā)明將參與介質(zhì)空間分成 width^eighMd印th份的小格,申請的相應(yīng)3D紋理的大小要與介質(zhì)空間的小格數(shù)相對應(yīng), 每一小格介質(zhì)的密度、吸收/散射系數(shù)等屬性可以分別保存至3D紋理每一片元的不同通道中。 例如, 一張256*256*256大小的RGBA16F格式大小的3D紋理,可以在其Red通道中保存密 度信息,Blue通道中保存吸收系數(shù)屬性,Green通道中保存散射系數(shù)屬性,Alpha通道作為 備用存儲通道。本文方法基于GPU實現(xiàn)參與介質(zhì)屬性信息的保存,但是到目前為止,僅有 微軟的DirectXlO SDK支持在shader中對3D紋理進行寫入,而目前僅有Windows Vista系 統(tǒng)支持DirectXlO,因此對于大多數(shù)工作在XP操作系統(tǒng)下的開發(fā)人員來說,無法直接在 shader中對3D紋理進行編輯。本文結(jié)合FBO(Frame Buffer Object)技術(shù),采取分片寫入的 方法實現(xiàn)3D紋理的寫入操作。
FBO雖然在shader中僅支持2D紋理的寫入,但是其可以綁定3D紋理??梢詫⑴c介質(zhì)
8空間分成d印th個width*height的二維面片,循環(huán)d印th次,每次將不同面片的介質(zhì)屬性 信息寫入到FB0的對應(yīng)層次中,最后加以融合,即得到保存介質(zhì)屬性的3D紋理。對于不同 層次的二維面片,可以采用Perlin噪聲等函數(shù)隨機存放不同的介質(zhì)密度、吸收/散射系數(shù)等 屬性。
采用3D紋理技術(shù)會占用較大的顯存空間,但是本發(fā)明主要研究范圍定位于室內(nèi)虛擬場 景(虛擬舞臺),場景空間較小,因此最多僅需要采用512*512*512大小的3D紋理即可滿足 需求,目前大多數(shù)的主流顯卡均可滿足這一顯存要求。
本發(fā)明在實現(xiàn)光暈的實時繪制過程,主要是Air Light的求解過程。如圖4所示,Air Light由兩部分組成, 一部分是光源通過參與介質(zhì)的消散(吸收/外散射)作用直接進入到視 點的光照值4,另一部分是光源通過參與介質(zhì)的散射(內(nèi)散射)作用進入到視點的光照值 £s 。
A/可以通過以下公式直接求得
其中為C7。吸收系數(shù), 為散射系數(shù),", 為視點到光源的距離。 A的求解公式如下
<formula>formula see original document page 9</formula>(2)
其中為相位函數(shù),Z)vp為視點到模型表面頂點的距離。
根據(jù)余弦公式d = >/化+ -2xZ),vcos6> ,再令r.=0。+o;s)A z = cos0,公式可以轉(zhuǎn)化為
<formula>formula see original document page 9</formula>(3)
再令4
4 =乙sin0 , I,的最終求解公式可變?yōu)?br> <formula>formula see original document page 9</formula>(4)
<formula>formula see original document page 9</formula> (5)
在這里,引入一個特征函數(shù)F(",v)^fexp[-wtan^^,對于每一對(",》,此函數(shù)具有
唯一的函數(shù)值。式可以轉(zhuǎn)換為A,(《+ "ctan^^)—《)〗 (6) 4 2 Cm6> 2
因此,可以預(yù)先將特征函數(shù)尸(w,力的函數(shù)值計算后加以保存,組織成1張2D紋理形式 的查找表,在shader中計算丄,時,只需依據(jù)索引查找該2D紋理,即可獲得任意位置的Z^值。
現(xiàn)在討論Surface Light的計算過程。如圖5所示,由光照在參與介質(zhì)中傳輸?shù)幕竟?式(公式7)可知,最終傳輸?shù)揭朁c的光照值由兩部分組成 一部分是模型表面上頂點反射的 光照值經(jīng)消散作用后剩余的光照值,另一部分是在光線在傳播過程中受到參與介質(zhì)的內(nèi)散射 作用而增加的光照值(積分項)。
jp ' ct w f (7) 刷 。"化"x)一嵐,
其中,rCpj)-exp[-r(cr。(") + (w))^]稱作光學(xué)厚度(Optical thickness),表示光照
值從p到x經(jīng)參與介質(zhì)消散后的剩余光照比例。
本發(fā)明采用Phone光照模型計算模型表面上頂點反射的光照值丄(;7),為了提高速度,在 計算經(jīng)介質(zhì)消散作用后剩余光照值的過程中,對于光學(xué)厚度r(p,x)并未采取積分求解,而是 將消散系數(shù)ct。(m) + r(m)看作是常量,其中
在求解光線因內(nèi)散射作用而增加的光照值(公式6的積分項)時,充分利用shader 3.0 的強大編程特性,實現(xiàn)光照計算中所涉及到的路徑積分,在積分過程中可以通過訪問生成好 的3D紋理,來獲取參與介質(zhì)中任意一點的密度、消散系數(shù)等屬性信息。由于3D紋理中保存 的參與介質(zhì)的屬性信息可以是任意取值的,因此通過計算公式的積分項,就可以得到非均勻 的參與介質(zhì)的繪制效果。
(3)結(jié)合shadow map、 shadow volume和ray marching,實時繪制出室內(nèi)場景參與介 質(zhì)的體陰影,該部分繪制包括以下五個步驟
a. 從步驟(1)中的多個光源出發(fā)繪制整個場景深度的shadow map,即陰影圖,將其 保存至幀緩存對象FB0中;將場景中遮擋物的后表面深度信息的shadow map保存至另一幀 緩存對象FBO中。
b. 從視點出發(fā)計算并繪制shadow volume,即陰影錐,將其保存至幀緩存對象FB0中, 幀緩存對象FB0保存視點到shadow vol咖e的最前陰影面片和最后陰影面片的距離。
如上述體陰影繪制步驟所述,本發(fā)明需要獲得視點到shadow volume的最前陰影面片和 最后陰影面片的距離,為了方便后續(xù)繪制流程的使用,來用'0penGL的最新擴展
10GL—TEXTURE—2D—ARRAY—EXT(二維紋理數(shù)組)來保存視點到shadow volume的最前陰影面片和 最后陰影面片的距離信息。
在確定shadow volume的最前陰影面片和最后陰影面片之前,首先需要構(gòu)造出該shadow volume的所有陰影面片,通過兩大步驟完成這一過程確定遮擋體(shadow caster)的輪廓 邊(Silhouette);從輪廓邊出發(fā),利用Geometry Shader構(gòu)建shadow volume的所有陰影面 片。
在單光源情況下,陰影面片的構(gòu)建過程如圖6所示。首先,根據(jù)預(yù)處理得到的遮擋體數(shù) 據(jù)結(jié)構(gòu)判定silhouette邊,然后從光源處沿silhouette邊向遠(yuǎn)離光源的方向投射四邊形, 形成最終的shadow volume陰影面片。
本發(fā)明采用二維紋理數(shù)組來保存視點到shadow volume前向、后向陰影面的距離。在 Geometry Shader程序中,通過判斷視點觀察方向與新生成的陰影面的法向之間的夾角大小 來確定該陰影面的朝向性;在Fragment Shader程序中,根據(jù)陰影面的朝向性,進行深度測 試,以此確定shadow volume的最前、最后陰影面并保存視點到此兩類陰影面的距離。
c.在不考慮參與介質(zhì)散射作用的情況下,繪制整個場景并將顏色、法向、深度值信息 保存至幀緩存對象FBO中。
cl.考慮參與介質(zhì)的散射作用,計算整個場景每一像素具有的散射光照值。 在計算每一像素具有的散射光照值時,需分情況計算,如圖7所示對于與視點的連 線并未穿過shadow volume的像素(如圖7中的q點),采用Sun提供的解析方法參考文獻 Sun, B., Ramamoorthi, R., Narasimhan, S. G., and Nayar, S. K., "A practical analytic single scattering model for real time rendering" , In Proceedings of the SIGGRAPH '05, ACM Press, New York, NY, 2005, pp. 1040-1049.進行散射光照值的計算;對于與 視點的連線穿過shadow volume的像素(如圖7中的p點),從最后面陰影片到最前面陰影片 進行ray marching,采用之前保存的shadow map確定shadow volume中的某段區(qū)域是否被 光照。若是則采用Sun提供的解析方法進行散射光照值的計算;若否則基于之前生成的 shadow map,采用光照衰減函數(shù)計算該區(qū)域的散射光照值。
此外,在真實場景中,處于shadow volume中且被遮擋光照的介質(zhì)空間點實際上也會受 到光照的內(nèi)散射作用,但是一般的體陰影繪制方法并未考慮這一作用,采用光照衰減函數(shù) 來計算光照經(jīng)物體遮擋衰減后,傳輸?shù)浇橘|(zhì)空間中被遮擋點的剩余光照值。
Z。=厶。*0(力=4/ *(1 —e—(8) 上式中Z。表示光源光照值經(jīng)過參與介質(zhì)的消射作用后傳輸?shù)奖徽趽醯慕橘|(zhì)空間點的光照值,d表示被遮擋的介質(zhì)空間點沿照射光線方向到遮擋物后表面的距離。"由于本發(fā)明已經(jīng) 在.shadow map中保存了遮擋物后表面的深度信息,因此可以方便地計算出被遮擋點沿照射 光線到遮擋物后表面的距離。
e.合并步驟c和d中生成的結(jié)果,采取基于Deferred Shading技術(shù)作為優(yōu)化策略, 生成最終的渲染效果。
上述步驟中使用了基于FB0的延時著色技術(shù)。傳統(tǒng)的著色方法要為世界空間中的每個頂 點(Gourand著色)或者光柵化后插值得到的每個片元(Phong著色)計算其光照的顏色。 對于多光源的場景,要為每個光源做一個光照計算并把計算結(jié)果疊加到一起,得到場景的最 終顏色值。實際上在一個場景中,存在許多"無效"片元,將會在著色之后的各個測試中被 剔除,例如深度測試將會剔除"看不見"的片元。傳統(tǒng)的著色方法,對"無效"片元也會進 行著色計算。這些計算也是"無效"的,造成了計算資源的浪費。延時著色方法中,著色計 算是在片元通過各種測試,最終形成了屏幕上的像素之后進行的,避免了 "無效"計算。隨 著圖形硬件對多重渲染目標(biāo)(Multiple Render Targets)技術(shù)的支持,延時著色技術(shù)在工 業(yè)界得到了廣泛的應(yīng)用。本發(fā)明利用NVIDIA公司的EXT—framebuffer—object擴展,使用多 重渲染到紋理(Multiple Render To Texture)技術(shù),從視點位置出發(fā)繪制整個場景,把場 景中每個片元的顏色信息和位置信息分別存入兩張4通道32位浮點數(shù)的紋理中。
最后將本發(fā)明的所繪制的參與介質(zhì)與其陰影圖進行融合,渲染效果如圖8所示,其中(a) 是對光暈及參與介質(zhì)的渲染效果,(b)是對參與介質(zhì)體陰影的渲染效果,(c)和(d)則分別是 對多光源光照場景的遠(yuǎn)景和近景的渲染效果。
本發(fā)明未詳細(xì)闡述的部分屬本領(lǐng)域技術(shù)人員公知技術(shù)。
1權(quán)利要求
1、虛擬舞臺環(huán)境下實時光照的繪制方法,其特征在于步驟如下(1)建立一棵光源層次樹,并利用該光源層次樹對虛擬舞臺環(huán)境下的多光源進行聚類;實時繪制出多光源光照下的參與介質(zhì),所述的實時繪制方法采用了兩遍繪制流程第一遍繪制時,利用幀緩存對象FBO將參與介質(zhì)的信息,包括密度、吸收系數(shù)或散射系數(shù)屬性保存在一張3D紋理中;第二遍繪制從該3D紋理中讀取保存的介質(zhì)信息進行繪制;(2)結(jié)合shadow map、shadow volume和ray marching,實時繪制出室內(nèi)場景參與介質(zhì)的體陰影,該部分繪制包括以下五個步驟a. 從步驟(1)中的多個光源出發(fā)繪制整個場景深度的shadow map,即陰影圖,將其保存至幀緩存對象FBO中;將場景中遮擋物的后表面深度信息的shadow map保存至另一幀緩存對象FBO中;b. 從視點出發(fā)計算并繪制shadow volume,即陰影錐,將其保存至幀緩存對象FBO中,幀緩存對象FBO保存視點到shadow volume的最前陰影面片和最后陰影面片的距離;c. 在不考慮參與介質(zhì)散射作用的情況下,繪制整個場景并將顏色、法向、深度值信息保存至幀緩存對象FBO中;d. 考慮參與介質(zhì)的散射作用,計算整個場景每一像素具有的散射光照值;e. 合并步驟c和d中生成的結(jié)果,采取基于Deferred Shading技術(shù)作為優(yōu)化策略,生成最終的渲染效果。
2、根據(jù)權(quán)利要求1所述的虛擬舞臺環(huán)境下實時光照的繪制方法,其特征在于所述的 步驟(1)中本發(fā)明使用八叉樹這一數(shù)據(jù)結(jié)構(gòu)來建立一棵光源層次樹,并利用該光源層次樹 對虛擬舞臺環(huán)境下的多光源進行聚類,具體聚類方法為首先通過對光源空間進行空間八叉 剖分,即可得到該八叉樹的八個孩子節(jié)點,然后判斷各孩子節(jié)點的包圍盒中是否有真實光源, 若有,則繼續(xù)對其進行剖分,否則停止剖分。
3、根據(jù)權(quán)利要求1所述的虛擬舞臺環(huán)境下實時光照的繪制方法,其特征在于所述的 步驟(1)中第一遍繪制時,利用幀緩存對象FB0將參與介質(zhì)的信息,包括密度、吸收系數(shù)或散射系數(shù)屬性保存在一張3D紋理中的方法為a. 將介質(zhì)空間分成寬widt^高h(yuǎn)eigh1^深d印th個的小格,申請的相應(yīng)3D紋理的大 小要與介質(zhì)空間的小格數(shù)相對應(yīng),每一小格介質(zhì)信息,包括密度、吸收/散射系數(shù)屬性可以 分別保存至3D紋理每一片元的不同通道中;b. 將參與介質(zhì)空間分成深d印th個寬width+高h(yuǎn)eight的二維面片,循環(huán)深d印th個次,每次將不同面片的介質(zhì)屬性信息寫入到幀緩存對象FBO的對應(yīng)層次中,最后加以融合,即可 得到保存介質(zhì)屬性的3D紋理。
4、根據(jù)權(quán)利要求1所述的虛擬舞臺環(huán)境下實時光照的繪制方法,其特征在于所述步 驟(2) b中在確定shadow volume的最前陰影面片和最后陰影面片之前,需要首先構(gòu)造出該 shadow volume的所有陰影面片,所述的構(gòu)造出該shadow volume的所有陰影面片的方法為 首先確定遮擋體shadow caster的輪廓邊Silhouette;然后從輪廓邊Silhouette出發(fā),利 用Geometry Shader構(gòu)建shadow volume的所有陰影面片。
5、根據(jù)權(quán)利要求1所述的虛擬舞臺環(huán)境下實時光照的繪制方法,—其特征在于所述步 驟(2) d中在計算每一像素具有的散射光照值時,需要分情況進行計算對于與視點的連線 并未穿過shadow volume的像素,采用解析方法進行散射光照值的計算;對于與視點的連線 穿過shadow volume的像素,從最后面陰影片到最前面陰影片進行ray marching,采用之 前保存的shadow map確定shadow volume中的某段區(qū)域是否被光照,若是,則采用解析方法 進行散射光照值的計算,若不是,則基于之前生成的shadow map,采用光照衰減函數(shù)來計算 該區(qū)域的散射光照值。
全文摘要
本發(fā)明涉及一種虛擬舞臺環(huán)境下的實時光照繪制方法,主要包括以下兩個部分結(jié)合Deferred Shading技術(shù)和聚類的方法進行優(yōu)化,通過采用3D紋理對介質(zhì)屬性信息進行組織,并將多光源聚類成虛擬光源,可以實時繪制出舞臺多光源光照下的參與介質(zhì);結(jié)合shadowmap、shadow volume和ray marching等技術(shù),提出了一種混合的適用于室內(nèi)場景體陰影實時繪制的方法。實驗結(jié)果證明,本發(fā)明可以較為真實地模擬虛擬舞臺環(huán)境下的復(fù)雜光照效果,同時具有實時性的優(yōu)點。
文檔編號G06T15/50GK101458823SQ20081024040
公開日2009年6月17日 申請日期2008年12月19日 優(yōu)先權(quán)日2008年12月19日
發(fā)明者冰 何, 磊 朱, 郝愛民, 峻 閻 申請人:北京航空航天大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
巩义市| 辉县市| 米脂县| 东阳市| 绥化市| 缙云县| 洛阳市| 崇左市| 合水县| 视频| 齐齐哈尔市| 米易县| 克什克腾旗| 宁国市| 定兴县| 宜宾市| 元氏县| 专栏| 茂名市| 晋州市| 金坛市| 名山县| 三河市| 乌兰浩特市| 沈丘县| 通渭县| 远安县| 屯留县| 宝兴县| 广饶县| 杂多县| 芜湖市| 商水县| 莎车县| 淮安市| 扎赉特旗| 淮滨县| 天台县| 钦州市| 曲阳县| 紫阳县|