用于近似繪制三維場(chǎng)景柔和陰影的方法
【專利摘要】本發(fā)明提供了一種用于近似繪制三維場(chǎng)景柔和陰影的方法。本方法通過對(duì)平面面光源的隨機(jī)采樣來(lái)估計(jì)可視場(chǎng)景區(qū)域內(nèi)的平面面光源可見性,并利用空間卷積平滑去噪濾波來(lái)減小隨機(jī)采樣引入的平面面光源可見性噪聲;利用光線投射技術(shù),根據(jù)獲得的可視場(chǎng)景點(diǎn)的平面面光源可見性數(shù)據(jù),計(jì)算出平面面光源對(duì)可視場(chǎng)景點(diǎn)的光照貢獻(xiàn),以此為依據(jù)最終計(jì)算出可視場(chǎng)景點(diǎn)的顏色值,繪制出包含柔和陰影的三維場(chǎng)景畫面。本方法能在保證三維場(chǎng)景畫面繪制質(zhì)量的同時(shí),提高繪制速度。
【專利說(shuō)明】用于近似繪制三維場(chǎng)景柔和陰影的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)三維圖形繪制【技術(shù)領(lǐng)域】,涉及一種用于近似繪制三維場(chǎng)景柔和 陰影的方法。
【背景技術(shù)】
[0002] 陰影對(duì)三維場(chǎng)景畫面的真實(shí)感具有重要影響。它是人們理解三維場(chǎng)景中幾何對(duì) 象之間的空間關(guān)系的重要線索。用理想的點(diǎn)光源照射三維場(chǎng)景時(shí),幾何對(duì)象之間的空間遮 擋會(huì)在被遮擋的幾何對(duì)象表面上形成邊界清晰的硬陰影,即陰影區(qū)域和非陰影區(qū)域之間有 明顯的分界線。然而,現(xiàn)實(shí)生活中并不存在理想的點(diǎn)光源,大多數(shù)光源都具有一定的空間尺 寸。用一個(gè)面光源照射三維場(chǎng)景時(shí),幾何對(duì)象之間的空間遮擋會(huì)在被遮擋的幾何對(duì)象表面 上形成邊界模糊的柔和陰影,即陰影區(qū)域和非陰影區(qū)域之間是平滑過渡的,沒有清晰的分 界線。Elmar Eisemann、Ulf Assarsson、Michael Schwarz 和 Michael Wimmer 共同編寫的 Siggraph Asia 2009課程講義《Casting Shadows in Real time》對(duì)柔和陰影的繪制問題 進(jìn)行了討論;通過引入一定的近似,在假設(shè)所有幾何對(duì)象表面都是郎伯漫反射面的條件下, 在數(shù)學(xué)上可將繪制方程中的著色計(jì)算和陰影計(jì)算進(jìn)行解耦,即將繪制方程簡(jiǎn)化成著色項(xiàng)和 陰影項(xiàng)之積的形式。根據(jù)Elmar Eisemann等的繪制方程簡(jiǎn)化表述,可以設(shè)計(jì)不同的技術(shù)方 案來(lái)近似繪制三維場(chǎng)景柔和陰影;已有的基于卷積的方案和基于陰影體的方案繪制出的柔 和陰影效果都很逼真。
[0003] 柔和陰影繪制問題的關(guān)鍵在于計(jì)算三維場(chǎng)景的可視場(chǎng)景點(diǎn)的光源可見性。如果 光源對(duì)可視場(chǎng)景點(diǎn)完全可見,則該可視場(chǎng)景點(diǎn)不在陰影區(qū);如果光源對(duì)可視場(chǎng)景點(diǎn)完全不 可見,則該可視場(chǎng)景點(diǎn)在本影區(qū);如果光源對(duì)可視場(chǎng)景點(diǎn)部分可見,則該可視場(chǎng)景點(diǎn)在半影 區(qū)。分析實(shí)際三維場(chǎng)景的柔和陰影可以發(fā)現(xiàn),在可視場(chǎng)景區(qū)域內(nèi),光源可見性往往是平滑變 化的,即相鄰可視場(chǎng)景點(diǎn)的光源可見性存在較強(qiáng)的相關(guān)性。本發(fā)明將充分利用這種相關(guān)性, 基于Elmar Eisemann等的繪制方程簡(jiǎn)化表述,提供一種快速近似繪制三維場(chǎng)景柔和陰影的 方法。
[0004] 對(duì)于大多數(shù)實(shí)際三維場(chǎng)景來(lái)說(shuō),只繪制直接光照產(chǎn)生的柔和陰影就可以得到足夠 真實(shí)的畫面。事實(shí)上,間接光照產(chǎn)生的柔和陰影相比于直接光照產(chǎn)生的柔和陰影在大多數(shù) 情況下都可忽略。因此,本發(fā)明將針對(duì)直接光照產(chǎn)生的柔和陰影繪制問題設(shè)計(jì)技術(shù)解決方 案。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供一種用于近似繪制三維場(chǎng)景柔和陰影的方法。本方法要求 三維場(chǎng)景的所有幾何對(duì)象的表面都是郎伯漫反射類型的表面。如圖1所示,三維場(chǎng)景受到 一個(gè)平面面光源的照射,Pi和P 2是兩個(gè)相鄰的可視場(chǎng)景點(diǎn),Pi和P2與平面面光源之間存在 部分遮擋,因此Pl和p 2都在半影區(qū);如圖2所示,平面面光源上的任意一點(diǎn)ps向平面面光 源所在平面的法向量指向的半空間內(nèi)的各個(gè)方向均勻地發(fā)射光照,平面面光源上的各點(diǎn)的 發(fā)光特性相同。三維場(chǎng)景柔和陰影繪制的關(guān)鍵是,高效地計(jì)算每個(gè)可視場(chǎng)景點(diǎn)的平面面光 源可見性。本方法的總體技術(shù)方案:使用光線投射技術(shù),從視點(diǎn)向虛擬屏幕中的各個(gè)像素發(fā) 射光線A001,判斷光線A001是否與三維場(chǎng)景中的幾何對(duì)象相交,如果光線A001與三維場(chǎng)景 中的幾何對(duì)象相交,則利用計(jì)算機(jī)系統(tǒng)求解交點(diǎn)A002處的平面面光源可見性,并計(jì)算平面 面光源對(duì)交點(diǎn)A002的光照貢獻(xiàn)A003,再根據(jù)光照貢獻(xiàn)A003計(jì)算與光線A001相對(duì)應(yīng)的像素 的顏色值,否則將與光線A001相對(duì)應(yīng)的像素的顏色值設(shè)置為背景顏色值。在光線投射過程 中,平面面光源不作為幾何對(duì)象處理。
[0006] 本方法的第一部分在計(jì)算機(jī)系統(tǒng)中計(jì)算三維場(chǎng)景可視區(qū)域內(nèi)的各個(gè)可視場(chǎng)景點(diǎn) 的平面面光源可見性,并將計(jì)算結(jié)果保存在計(jì)算機(jī)系統(tǒng)的內(nèi)存中,具體實(shí)現(xiàn)步驟如下:
[0007] StepOOl :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組V,其中M為虛擬屏幕 的像素總行數(shù),N為虛擬屏幕的像素總列數(shù);
[0008] Step002 :對(duì)虛擬屏幕中的每個(gè)像素B001,做如下操作:
[0009] St印002-1 :從視點(diǎn)發(fā)射一條穿過像素B001中心的光線B002 ;
[0010] Step002_2 :判斷光線B002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,則令 vis = -1,轉(zhuǎn)步驟 Step002_8 ;
[0011] Step002-3 :計(jì)算光線B002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn) B003 ;
[0012] St印002-4 :在平面面光源上任選一點(diǎn)ps,創(chuàng)建一個(gè)從點(diǎn)ps指向交點(diǎn)B003的向量 Vecl ;如果向量Vecl和平面面光源所在平面的法向量的夾角大于或者等于90度,令vis = 0,轉(zhuǎn)步驟St印002-8 ;
[0013] St印002-5 :令 SUM = 0 ;
[0014] Step002-6 :在平面面光源上,按均勻分布隨機(jī)地選取NUM個(gè)采樣點(diǎn),NUM彡1,對(duì)每 個(gè)采樣點(diǎn)B004,做如下操作:
[0015] St印002-6-1 :連接交點(diǎn)B003和采樣點(diǎn)B004,得到一條線段B005 ;判斷線段B005 與三維場(chǎng)景中的幾何對(duì)象之間是否還有除線段B005的端點(diǎn)外的交點(diǎn),如果有,則轉(zhuǎn)步驟 Step002 _6_3 ;
[0016] Step002-6-2 :SUM = SUM+1 ;
[0017] St印002-6-3 :針對(duì)采樣點(diǎn)B004的操作結(jié)束;
[0018] St印002-7 :令vis = SLXSUM/NUM,SL表示平面面光源的面積;
[0019] St印002-8 :計(jì)算像素B001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ;
[0020] St印002-9 :將數(shù)組V的第i行、第j列元素賦值為vis。
[0021] 本方法的第二部分對(duì)本方法的第一部分產(chǎn)生的數(shù)組V中的數(shù)據(jù)進(jìn)行濾波處理,降 低隨機(jī)采樣引入的噪聲,具體實(shí)現(xiàn)步驟如下:
[0022] SteplOl :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組乂2,其中M為虛擬屏幕 的像素總行數(shù),N為虛擬屏幕的像素總列數(shù);令i = 1 ;
[0023] Stepl02 :令 j = 1 ;
[0024] St印103 :如果i+1 > M或者i-1 < 1或者j+1 > N或者j-1 < 1,則將數(shù)組V2的 第i行、第j列元素賦值為數(shù)組V的第i行、第j列元素的值,轉(zhuǎn)步驟St印106 ;
[0025] St印104 :如果數(shù)組V的從第i-1到i+1行、從第j-1到j(luò)+1列的9個(gè)元素中的某 個(gè)元素的值為-1,則將數(shù)組v2的第i行、第j列元素賦值為數(shù)組V的第i行、第j列元素的 值,轉(zhuǎn)步驟Stepl06 ;
[0026] St印105 :用圖3所示的空間卷積模板與數(shù)組V的從第i-1到i+1行、從第j-1到 j+1列的9個(gè)元素做空間卷積,即:將數(shù)組V的第i-1行、第j-1列的元素的值與c n之積賦 值給Sn,將數(shù)組V的第i-1行、第j列的元素的值與c12之積賦值給S 12,將數(shù)組V的第i-1 行、第j+1列的元素的值與c13之積賦值給S13,將數(shù)組V的第i行、第j-1列的元素的值與 c 21之積賦值給S21,將數(shù)組V的第i行、第j列的元素的值與c22之積賦值給S 22,將數(shù)組V的 第i行、第j+1列的元素的值與c23之積賦值給S23,將數(shù)組V的第i+1行、第j-1列的元素 的值與c 31之積賦值給S31,將數(shù)組V的第i+1行、第j列的元素的值與c32之積賦值給S 32,將 數(shù)組V的第i+1行、第j+1列的元素的值與c33之積賦值給S33,將數(shù)組V 2的第i行、第j列 兀素賦值為sn+s12+s13+s21+s22+s23+s31+s32+s33;
[0027] Stepl06 : j = j+1 ;如果 j < N,轉(zhuǎn)步驟 Stepl03 ;
[0028] Stepl07 :i = i+1 ;如果 i < M,轉(zhuǎn)步驟 Stepl02 ;
[0029] 在步驟Stepl05中需要用到空間卷積模板,其用來(lái)實(shí)現(xiàn)平滑去噪,以減小隨機(jī)采 樣引入的噪聲;圖像處理【技術(shù)領(lǐng)域】中有許多不同的平滑去噪空間卷積模板可以應(yīng)用在本方 法中;例如,可以使用平滑去噪空間卷積模板SF,空間卷積模板SF的各個(gè)元素取值為:c n -C12-C13-C21-C22-C23-C31-C32-C33-1/9〇
[0030] 本方法的第三部分在本方法的前兩部分產(chǎn)生的結(jié)果基礎(chǔ)上,繪制包含柔和陰影的 三維場(chǎng)景畫面,具體實(shí)現(xiàn)步驟如下 :
[0031] St印201 :對(duì)虛擬屏幕中的每個(gè)像素C001,做如下操作:
[0032] St印201-1 :從視點(diǎn)發(fā)射一條穿過像素C001中心的光線C002 ;
[0033] Step201_2 :判斷光線C002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,轉(zhuǎn)步 驟 St印201-7 ;
[0034] Step201_3 :計(jì)算光線C002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn) C003;
[0035] St印201-4 :將J\G(p。,q) dq賦值給MG,其中p。表示交點(diǎn)C003對(duì)應(yīng)的位置向量,q 為平面面光源上的某點(diǎn)對(duì)應(yīng)的位置向量,Gb^q) = cos( 0丨)?cos( 0 2) ? Ip^ql-2, 0丨表示 交點(diǎn)C003處的法向量與由交點(diǎn)C003指向q對(duì)應(yīng)的點(diǎn)的向量之間的夾角,0 2表示q對(duì)應(yīng)的 點(diǎn)的法向量與由q對(duì)應(yīng)的點(diǎn)指向交點(diǎn)C003的向量之間的夾角,| P()-q |表示交點(diǎn)C003到q對(duì) 應(yīng)的點(diǎn)的距離,L表示平面面光源;可用蒙特卡洛方法計(jì)算/ {(p。,q)dq,也可用Schr6der 和Hanrahan發(fā)表在1993年的Siggraph會(huì)議論文集上的方法計(jì)算/ {(p。,q) dq ;
[0036] Step201-5 :計(jì)算像素C001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ;將MV賦值 為數(shù)組v2的第i行、第j列元素的值與之積,其中為平面面光源的發(fā)射光亮度;
[0037]St印201-6 :將CP賦值為MGXMVX p / 31,其中p為交點(diǎn)C003處的反射率;根據(jù) CP的值計(jì)算像素C001的顏色值;轉(zhuǎn)步驟St印201-8 ;
[0038] St印201-7 :將像素C001的顏色值賦值為背景色;
[0039] St印201-8 :針對(duì)像素C001的操作結(jié)束;
[0040]Step202 :將虛擬屏幕中的所有像素的顏色值保存為圖片,存放到計(jì)算機(jī)系統(tǒng)的磁 盤文件中。
[0041] 有益效果
[0042] 本發(fā)明提供了一種用于近似繪制三維場(chǎng)景柔和陰影的方法。本方法通過對(duì)平面面 光源進(jìn)行隨機(jī)采樣來(lái)估計(jì)可視場(chǎng)景點(diǎn)的平面面光源可見性;利用在可視場(chǎng)景區(qū)域內(nèi),平面 面光源可見性通常平滑變化的特點(diǎn),通過使用空間卷積平滑降噪濾波來(lái)減小隨機(jī)采樣引入 的噪聲。利用光線投射技術(shù),根據(jù)獲得的可視場(chǎng)景點(diǎn)的平面面光源可見性數(shù)據(jù),計(jì)算出平面 面光源對(duì)可視場(chǎng)景點(diǎn)的光照貢獻(xiàn),進(jìn)而得到可視場(chǎng)景點(diǎn)對(duì)應(yīng)的虛擬屏幕的像素的顏色值。 光線跟蹤是在光線投射基礎(chǔ)上的擴(kuò)展。因此,本方法可以很容易地與光線跟蹤相結(jié)合。本 方法通過引入對(duì)可視場(chǎng)景區(qū)域內(nèi)的平面面光源可見性的平滑濾波操作,使得可以在用較少 的平面面光源采樣點(diǎn)的條件下,得到高質(zhì)量的柔和陰影繪制結(jié)果。從而能在保證繪制質(zhì)量 的條件下,提高繪制速度。
【專利附圖】
【附圖說(shuō)明】
[0043] 圖1是用平面面光源照射三維場(chǎng)景的示意圖。圖2是平面面光源上的一點(diǎn)及對(duì)應(yīng) 的法向量指向的半空間示意圖。圖3是空間卷積模板示意圖。
【具體實(shí)施方式】
[0044] 為了使本發(fā)明的特征和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一 步的描述。
[0045] 在本實(shí)施例中,計(jì)算機(jī)系統(tǒng)的CPU選擇Intel(R)Xeon(R)CPU E3-1225 v3@3. 20GHz,內(nèi)存選擇金士頓 8GB DDR3 1333,磁盤選擇Buffalo HD-CE 1.5 TU2;計(jì)算機(jī)操 作系統(tǒng)選用Windows 7,軟件編程工具選用VC++2010。
[0046] 本發(fā)明的目的在于提供一種用于近似繪制三維場(chǎng)景柔和陰影的方法。本方法要求 三維場(chǎng)景的所有幾何對(duì)象的表面都是郎伯漫反射類型的表面。如圖1所示,三維場(chǎng)景受到 一個(gè)平面面光源的照射,Pi和P 2是兩個(gè)相鄰的可視場(chǎng)景點(diǎn),Pi和P2與平面面光源之間存在 部分遮擋,因此Pl和p 2都在半影區(qū);如圖2所示,平面面光源上的任意一點(diǎn)ps向平面面光 源所在平面的法向量指向的半空間內(nèi)的各個(gè)方向均勻地發(fā)射光照,平面面光源上的各點(diǎn)的 發(fā)光特性相同。三維場(chǎng)景柔和陰影繪制的關(guān)鍵是,高效地計(jì)算每個(gè)可視場(chǎng)景點(diǎn)的平面面光 源可見性。本方法的總體技術(shù)方案:使用光線投射技術(shù),從視點(diǎn)向虛擬屏幕中的各個(gè)像素發(fā) 射光線A001,判斷光線A001是否與三維場(chǎng)景中的幾何對(duì)象相交,如果光線A001與三維場(chǎng)景 中的幾何對(duì)象相交,則利用計(jì)算機(jī)系統(tǒng)求解交點(diǎn)A002處的平面面光源可見性,并計(jì)算平面 面光源對(duì)交點(diǎn)A002的光照貢獻(xiàn)A003,再根據(jù)光照貢獻(xiàn)A003計(jì)算與光線A001相對(duì)應(yīng)的像素 的顏色值,否則將與光線A001相對(duì)應(yīng)的像素的顏色值設(shè)置為背景顏色值。在光線投射過程 中,平面面光源不作為幾何對(duì)象處理。
[0047] 本方法的第一部分在計(jì)算機(jī)系統(tǒng)中計(jì)算三維場(chǎng)景可視區(qū)域內(nèi)的各個(gè)可視場(chǎng)景點(diǎn) 的平面面光源可見性,并將計(jì)算結(jié)果保存在計(jì)算機(jī)系統(tǒng)的內(nèi)存中,具體實(shí)現(xiàn)步驟如下:
[0048] StepOOl :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組V,其中M為虛擬屏幕 的像素總行數(shù),N為虛擬屏幕的像素總列數(shù);
[0049] Step002 :對(duì)虛擬屏幕中的每個(gè)像素B001,做如下操作:
[0050] St印002-1 :從視點(diǎn)發(fā)射一條穿過像素B001中心的光線B002 ;
[0051] Step002-2 :判斷光線B002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,則令 vis = -1,轉(zhuǎn)步驟 Step002_8 ;
[0052] Step002_3 :計(jì)算光線B002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn) B003 ;
[0053] St印002-4 :在平面面光源上任選一點(diǎn)ps,創(chuàng)建一個(gè)從點(diǎn)ps指向交點(diǎn)B003的向量 Vecl ;如果向量Vecl和平面面光源所在平面的法向量的夾角大于或者等于90度,令vis = 〇,轉(zhuǎn)步驟St印002-8 ;
[0054] St印002-5 :令 SUM = 0 ;
[0055] Step002_6 :在平面面光源上,按均勻分布隨機(jī)地選取NUM個(gè)采樣點(diǎn),NUM彡1,對(duì)每 個(gè)采樣點(diǎn)B004,做如下操作:
[0056] St印002-6-1 :連接交點(diǎn)B003和采樣點(diǎn)B004,得到一條線段B005 ;判斷線段B005 與三維場(chǎng)景中的幾何對(duì)象之間是否還有除線段B005的端點(diǎn)外的交點(diǎn),如果有,則轉(zhuǎn)步驟 Step002 _6_3 ;
[0057] Step002-6-2 :SUM = SUM+1 ;
[0058] St印002-6-3 :針對(duì)采樣點(diǎn)B004的操作結(jié)束;
[0059] St印002-7 :令vis = SLXSUM/NUM,SL表示平面面光源的面積;
[0060] St印002-8 :計(jì)算像素B001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ;
[0061] St印002-9 :將數(shù)組V的第i行、第j列元素賦值為vis。
[0062] 本方法的第二部分對(duì)本方法的第一部分產(chǎn)生的數(shù)組V中的數(shù)據(jù)進(jìn)行濾波處理,降 低隨機(jī)采樣引入的噪聲,具體實(shí)現(xiàn)步驟如下:
[0063] SteplOl :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組乂2,其中M為虛擬屏幕 的像素總行數(shù),N為虛擬屏幕的像素總列數(shù);令i = 1 ;
[0064] Stepl02 :令 j = 1 ;
[0065] St印103 :如果i+1 > M或者i-1 < 1或者j+1 > N或者j-1 < 1,則將數(shù)組V2的 第i行、第j列元素賦值為數(shù)組V的第i行、第j列元素的值,轉(zhuǎn)步驟St印106 ;
[0066] St印104 :如果數(shù)組V的從第i-1到i+1行、從第j-1到j(luò)+1列的9個(gè)元素中的某 個(gè)元素的值為-1,則將數(shù)組%的第i行、第j列元素賦值為數(shù)組V的第i行、第j列元素的 值,轉(zhuǎn)步驟Stepl06 ;
[0067] St印105 :用圖3所示的空間卷積模板與數(shù)組V的從第i-1到i+1行、從第j-1到 j+1列的9個(gè)元素做空間卷積,即:將數(shù)組V的第i-1行、第j-1列的元素的值與c n之積賦 值給Sn,將數(shù)組V的第i-1行、第j列的元素的值與c12之積賦值給S 12,將數(shù)組V的第i-1 行、第j+1列的元素的值與c13之積賦值給S13,將數(shù)組V的第i行、第j-1列的元素的值與 c 21之積賦值給S21,將數(shù)組V的第i行、第j列的元素的值與c22之積賦值給S 22,將數(shù)組V的 第i行、第j+1列的元素的值與c23之積賦值給S23,將數(shù)組V的第i+1行、第j-1列的元素 的值與c 31之積賦值給S31,將數(shù)組V的第i+1行、第j列的元素的值與c32之積賦值給S 32,將 數(shù)組V的第i+1行、第j+1列的元素的值與c33之積賦值給S33,將數(shù)組V 2的第i行、第j列 兀素賦值為sn+s12+s13+s21+s22+s23+s31+s32+s33;
[0068] Stepl06 : j = j+1 ;如果 j < N,轉(zhuǎn)步驟 Stepl03 ;
[0069] Stepl07 :i = i+1 ;如果 i < M,轉(zhuǎn)步驟 Stepl02 ;
[0070] 在步驟Stepl05中需要用到空間卷積模板,其用來(lái)實(shí)現(xiàn)平滑去噪,以減小隨機(jī)采 樣引入的噪聲;圖像處理【技術(shù)領(lǐng)域】中有許多不同的平滑去噪空間卷積模板可以應(yīng)用在本方 法中;例如,可以使用平滑去噪空間卷積模板SF,空間卷積模板SF的各個(gè)元素取值為:c n -C12-C13-C21-C22-C23-C31-C32-C33-1/9〇
[0071] 本方法的第三部分在本方法的前兩部分產(chǎn)生的結(jié)果基礎(chǔ)上,繪制包含柔和陰影的 三維場(chǎng)景畫面,具體實(shí)現(xiàn)步驟如下 :
[0072] St印201 :對(duì)虛擬屏幕中的每個(gè)像素C001,做如下操作:
[0073] St印201-1 :從視點(diǎn)發(fā)射一條穿過像素C001中心的光線C002 ;
[0074] Step201_2 :判斷光線C002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,轉(zhuǎn)步 驟 St印201-7 ;
[0075] Step201_3 :計(jì)算光線C002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn) C003;
[0076] St印201-4 :將J\G(p。,q) dq賦值給MG,其中p。表示交點(diǎn)C003對(duì)應(yīng)的位置向量,q 為平面面光源上的某點(diǎn)對(duì)應(yīng)的位置向量,Gb^q) = cos( 0丨)?cos( 0 2) ? Ip^ql-2, 0丨表示 交點(diǎn)C003處的法向量與由交點(diǎn)C003指向q對(duì)應(yīng)的點(diǎn)的向量之間的夾角,0 2表示q對(duì)應(yīng)的 點(diǎn)的法向量與由q對(duì)應(yīng)的點(diǎn)指向交點(diǎn)C003的向量之間的夾角,| P()-q |表示交點(diǎn)C003到q對(duì) 應(yīng)的點(diǎn)的距離,L表示平面面光源;可用蒙特卡洛方法計(jì)算/ {(p。,q)dq,也可用Schrader 和Hanrahan發(fā)表在1993年的Siggraph會(huì)議論文集上的方法計(jì)算/ {(p。,q) dq ;
[0077] St印201-5 :計(jì)算像素C001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ;將MV賦值 為數(shù)組V2的第i行、第j列元素的值與;之積,其中為平面面光源的發(fā)射光亮度;
[0078]St印201-6 :將CP賦值為MGXMVX p / 31,其中p為交點(diǎn)C003處的反射率;根據(jù) CP的值計(jì)算像素C001的顏色值;轉(zhuǎn)步驟St印201-8 ;
[0079] St印201-7 :將像素C001的顏色值賦值為背景色;
[0080] St印201-8 :針對(duì)像素C001的操作結(jié)束;
[0081] Step202 :將虛擬屏幕中的所有像素的顏色值保存為圖片,存放到計(jì)算機(jī)系統(tǒng)的磁 盤文件中。
[0082]本方法中的平面面光源采樣點(diǎn)個(gè)數(shù)NUM應(yīng)當(dāng)大于或者等于1,一般取3?5之間的 整數(shù)可繪制出較好的柔和陰影效果。在本實(shí)施例中,NUM取值為4。
【權(quán)利要求】
1.用于近似繪制三維場(chǎng)景柔和陰影的方法,其特征在于,所需的設(shè)備、數(shù)據(jù)結(jié)構(gòu)以及實(shí) 現(xiàn)步驟如下: 提供一種用于近似繪制三維場(chǎng)景柔和陰影的方法;本方法要求三維場(chǎng)景的所有幾何對(duì) 象的表面都是郎伯漫反射類型的表面;平面面光源上的任意一點(diǎn)ps向平面面光源所在平 面的法向量指向的半空間內(nèi)的各個(gè)方向均勻地發(fā)射光照,平面面光源上的各點(diǎn)的發(fā)光特性 相同;三維場(chǎng)景柔和陰影繪制的關(guān)鍵是,高效地計(jì)算每個(gè)可視場(chǎng)景點(diǎn)的平面面光源可見性; 本方法使用光線投射技術(shù),從視點(diǎn)向虛擬屏幕中的各個(gè)像素發(fā)射光線A001,判斷光線A001 是否與三維場(chǎng)景中的幾何對(duì)象相交,如果光線A001與三維場(chǎng)景中的幾何對(duì)象相交,則利用 計(jì)算機(jī)系統(tǒng)求解交點(diǎn)A002處的平面面光源可見性,并計(jì)算平面面光源對(duì)交點(diǎn)A002的光照 貢獻(xiàn)A003,再根據(jù)光照貢獻(xiàn)A003計(jì)算與光線A001相對(duì)應(yīng)的像素的顏色值,否則將與光線 A001相對(duì)應(yīng)的像素的顏色值設(shè)置為背景顏色值;在光線投射過程中,平面面光源不作為幾 何對(duì)象處理; 本方法的第一部分在計(jì)算機(jī)系統(tǒng)中計(jì)算三維場(chǎng)景可視區(qū)域內(nèi)的各個(gè)可視場(chǎng)景點(diǎn)的平 面面光源可見性,并將計(jì)算結(jié)果保存在計(jì)算機(jī)系統(tǒng)的內(nèi)存中,具體實(shí)現(xiàn)步驟如下: StepOOl :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組V,其中M為虛擬屏幕的像 素總行數(shù),N為虛擬屏幕的像素總列數(shù); Step002 :對(duì)虛擬屏幕中的每個(gè)像素 B001,做如下操作: St印002-1 :從視點(diǎn)發(fā)射一條穿過像素 B001中心的光線B002 ; Step002-2 :判斷光線B002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,則令vis =-1,轉(zhuǎn)步驟St印002-8 ; Step002-3 :計(jì)算光線B002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn)B003 ; St印002-4 :在平面面光源上任選一點(diǎn)ps,創(chuàng)建一個(gè)從點(diǎn)口3指向交點(diǎn)B003的向量Vecl ; 如果向量Vecl和平面面光源所在平面的法向量的夾角大于或者等于90度,令vis = 0,轉(zhuǎn) 步驟St印002-8 ; St印002-5 :令 SUM = 0 ; Step002-6 :在平面面光源上,按均勻分布隨機(jī)地選取NUM個(gè)采樣點(diǎn),NUM3 1,對(duì)每個(gè)采 樣點(diǎn)B004,做如下操作: St印002-6-1 :連接交點(diǎn)B003和采樣點(diǎn)B004,得到一條線段B005 ;判斷線段B005與 三維場(chǎng)景中的幾何對(duì)象之間是否還有除線段B00 5的端點(diǎn)外的交點(diǎn),如果有,則轉(zhuǎn)步驟 Step002_6_3 ; Step002-6-2 :SUM = SUM+1 ; St印002-6-3 :針對(duì)采樣點(diǎn)B004的操作結(jié)束; Step002-7 :令vis = SLXSUM/NUM,SL表示平面面光源的面積; Step002-8 :計(jì)算像素 B001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ; St印002-9 :將數(shù)組V的第i行、第j列元素賦值為vis ; 本方法的第二部分對(duì)本方法的第一部分產(chǎn)生的數(shù)組V中的數(shù)據(jù)進(jìn)行濾波處理,降低隨 機(jī)采樣引入的噪聲,具體實(shí)現(xiàn)步驟如下: Step 101 :在計(jì)算機(jī)系統(tǒng)的內(nèi)存中創(chuàng)建一個(gè)M行N列的數(shù)組V2,其中M為虛擬屏幕的像 素總行數(shù),N為虛擬屏幕的像素總列數(shù);令i = 1 ; Stepl02 :令 j = 1 ; St印103 :如果i+1 > M或者i-1 < 1或者j+1 > N或者j-1 < 1,則將數(shù)組V2的第i 行、第j列元素賦值為數(shù)組V的第i行、第j列元素的值,轉(zhuǎn)步驟St印106 ; St印104 :如果數(shù)組V的從第i-1到i+1行、從第j-1到j(luò)+1列的9個(gè)元素中的某個(gè)元 素的值為-1,則將數(shù)組V2的第i行、第j列元素賦值為數(shù)組V的第i行、第j列元素的值, 轉(zhuǎn)步驟Stepl06 ; St印105 :用3行3列的空間卷積模板與數(shù)組V的從第i-1到i+1行、從第j-1到j(luò)+1 列的9個(gè)元素做空間卷積,Cmn為空間卷積模板的第m行、第n列元素,S卩:將數(shù)組V的第i-1 行、第j_l列的元素的值與ell之積賦值給Sn,將數(shù)組V的第i-1行、第j列的元素的值與 c12之積賦值給S12,將數(shù)組V的第i-1行、第j+1列的元素的值與c13之積賦值給S 13,將數(shù)組 V的第i行、第j_l列的元素的值與c21之積賦值給S21,將數(shù)組V的第i行、第j列的元素的 值與c22之積賦值給S22,將數(shù)組V的第i行、第j+1列的元素的值與c23之積賦值給S 23,將數(shù) 組V的第i+1行、第j-1列的元素的值與c31之積賦值給S31,將數(shù)組V的第i+1行、第j列 的元素的值與c32之積賦值給S32,將數(shù)組V的第i+1行、第j+1列的元素的值與c 33之積賦 值給S33,將數(shù)組V2的第i行、第j列元素賦值為Sn+S12+S 13+S21+S22+S23+S31+S 32+S33 ; Stepl06 :j = j+1 ;如果 j < N,轉(zhuǎn)步驟 Stepl03 ; St印107 :i = i+1 ;如果i彡M,轉(zhuǎn)步驟St印102 ; 在步驟Stepl05中需要用到空間卷積模板,其用來(lái)實(shí)現(xiàn)平滑去噪,以減小隨機(jī)采樣引 入的噪聲;圖像處理【技術(shù)領(lǐng)域】中有許多不同的平滑去噪空間卷積模板可以應(yīng)用在本方法 中;例如,可以使用平滑去噪空間卷積模板SF,空間卷積模板SF的各個(gè)元素取值為:cn = C12 - C13 - C21 - C22 - C23 - C31 - C32 - C33 - 1/9 ; 本方法的第三部分在本方法的前兩部分產(chǎn)生的結(jié)果基礎(chǔ)上,繪制包含柔和陰影的三維 場(chǎng)景畫面,具體實(shí)現(xiàn)步驟如下: Step201 :對(duì)虛擬屏幕中的每個(gè)像素 C001,做如下操作: St印201-1 :從視點(diǎn)發(fā)射一條穿過像素 C001中心的光線C002 ; Step201-2 :判斷光線C002是否與三維場(chǎng)景中的幾何對(duì)象相交,如果不相交,轉(zhuǎn)步驟 Step201-7 ; Step201-3 :計(jì)算光線C002與三維場(chǎng)景中的幾何對(duì)象之間的離視點(diǎn)最近的交點(diǎn)C003 ; St印201-4 :將J\G (p。,q) dq賦值給MG,其中p。表示交點(diǎn)C003對(duì)應(yīng)的位置向量,q為平 面面光源上的某點(diǎn)對(duì)應(yīng)的位置向量,Gb^q) =008(0) ?cospj ? Ip^qH 表示交 點(diǎn)C003處的法向量與由交點(diǎn)C003指向q對(duì)應(yīng)的點(diǎn)的向量之間的夾角,0 2表示q對(duì)應(yīng)的點(diǎn) 的法向量與由q對(duì)應(yīng)的點(diǎn)指向交點(diǎn)⑶03的向量之間的夾角,|P()-q|表示交點(diǎn)C003到q對(duì) 應(yīng)的點(diǎn)的距離,L表示平面面光源;可用蒙特卡洛方法計(jì)算J\G(p。,q)dq,也可用SchrSder 和Hanrahan發(fā)表在1993年的Siggraph會(huì)議論文集上的方法計(jì)算/ {(p。,q) dq ; St印201-5 :計(jì)算像素 C001在虛擬屏幕中所處的行序號(hào)i和列序號(hào)j ;將MV賦值為數(shù) 組%的第i行、第j列元素的值與;之積,其中忍為平面面光源的發(fā)射光亮度; St印201-6 :將CP賦值為MGXMVX p / 31,其中p為交點(diǎn)C003處的反射率;根據(jù)CP的 值計(jì)算像素 C001的顏色值;轉(zhuǎn)步驟St印201-8 ; Step201-7 :將像素 C001的顏色值賦值為背景色; St印201-8 :針對(duì)像素 C001的操作結(jié)束; Step202 :將虛擬屏幕中的所有像素的顏色值保存為圖片,存放到計(jì)算機(jī)系統(tǒng)的磁盤文 件中。
【文檔編號(hào)】G06T17/00GK104346831SQ201410636705
【公開日】2015年2月11日 申請(qǐng)日期:2014年11月1日 優(yōu)先權(quán)日:2014年11月1日
【發(fā)明者】陳純毅, 楊華民, 李華, 蔣振剛, 曲福恒, 李巖芳 申請(qǐng)人:長(zhǎng)春理工大學(xué)