[發明專利]一種產生體積陰影的方法及系統有效
| 申請號: | 200610127574.0 | 申請日: | 2006-09-14 |
| 公開(公告)號: | CN101145246A | 公開(公告)日: | 2008-03-19 |
| 發明(設計)人: | 劉皓 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06T15/60 | 分類號: | G06T15/60 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 | 代理人: | 黃志華 |
| 地址: | 518044廣東省深圳市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 產生 體積 陰影 方法 系統 | ||
技術領域
本發明涉及計算機技術領域,尤其涉及一種產生體積陰影的方法及其系統。
背景技術
當在一個物體和光源之間存在障礙物時,該物體將會處在陰影中。障礙物產生的陰影區域稱為體積陰影。體積陰影可以由輪廓邊擴展到一定距離以外或者無窮遠處得到。輪廓邊的確定方法有很多種,基本方法為確定出被朝向相反(一個面向光源,另一個背向光源)的兩個三角形所共享的邊,因為只有這樣的邊會最終成為輪廓邊,其他的邊在光源看來都在物體投影的內部而不是邊緣。圖1A所示為輪廓邊示意圖,該圖中ab邊為面V0和面V1的公共邊,n0和n1分別為V0和V1的法線,V0面向光源,而V1背向光源,則ab邊為輪廓邊。圖1B所示為非輪廓邊示意圖,該圖中的ab邊為面V0和面V1的公共邊,n0和n1分別為V0和V1的法線,V0和V1都面向光源,則ab邊為非輪廓邊。圖2所示為體積陰影的示意圖,點L為光源,ABCD為產生陰影的物體,在底板上形成的陰影為EFGH,體積陰影指AEFB,BFGC,CGHD,DHEA所組成的一個區域。只要獲得AEFB,BFGC,CGHD,DHEA,并將它們繪制出來,即可繪制出陰影EFGH。
現有技術中,產生體積陰影時需要在中央處理器CPU中對物體三維模型的各頂點添加輔助的頂點,判斷出該物體三維模型的輪廓邊頂點,根據光源的方向,將輪廓邊頂點對應的輔助頂點在反向光源的方向進行偏移,產生體積陰影,然后CPU將該體積陰影的數據傳送給圖像處理器(GPU,Graph?ProcessingUnit),由GPU對體積陰影進行渲染,繪制出體積陰影。參閱圖3所示,CPU中的預處理過程如下:
步驟301、用三角形網格建立物體的三維模型,對該模型中的每個面的每個邊的兩個頂點A和B添加上共用該邊的兩個面的法線,添加兩個輔助頂點A1和B1分別與原本兩個頂點數據A和B相同(頂點位置,兩個法線均相同),并在A和B添加上一項為1的數據,在A1和B1添加上一項為0的數據以示區別。
步驟302、遍歷三維模型的所有三角形,根據各三角形的法線方向和光源的方向計算函數dot3(light_direction,triangle_normal)的取值,用該函數值判斷各三角形是面向光源還是背向光源,當函數dot3(light_direction,triangle_normal)的取值大于零時,三角形為面向光源;當函數dot3<0(light_direction,triangle_normal)的取值小于零時,三角形為背向光源。對于面向光源的三角形,將該三角形的三條邊壓入棧內并與該棧中的其他邊進行比較,如果存在重復的邊,則將該邊刪除;對三維模型的所有三角形的所有邊進行處理后,棧中的邊則為輪廓邊。
步驟303、根據光源的方向,將輪廓邊上的各頂點對應的輔助頂點分別在反向光源的方向進行偏移,獲得體積陰影。
進行完上述預處理,CPU將處理得到的體積陰影數據傳送給GPU,GPU對體積陰影進行渲染,繪制出體積陰影。
采用上述方法,若輪廓邊數目為n,在CPU中獲得體積陰影時,需要動態生產2n個三角形,當光源產生運動時,輪廓邊需要動態重新生成,而這些都需要由CPU進行預處理后獲得體積陰影的數據,然后將體積陰影的數據傳送給GPU,不僅耗時,同時增大了系統的開銷。并且,采用該方法,當三維模型有n個頂點,平均每個頂點有m個面共有時,則該三維模型一共有mn/3個面需要進行處理,在預處理時會產生4mn個頂點,渲染體積陰影時需要處理4mn個頂點,通常m大于等于3,使得渲染時GPU資源開銷進一步增大。
發明內容
本發明提供一種體積陰影的實現方法及系統,用以解決現有技術中存在的產生體積陰影時CPU進行預處理后獲得的頂點數量較大,CPU和GPU間傳輸體積陰影數據時存在大量的數據交互,不僅耗時,也增大了系統開銷的問題。
本發明提供以下技術方案:
一種產生體積陰影的方法,包括如下步驟:
為物體的三維模型的每個頂點添加一個輔助頂點;
利用與背景顏色不同的顏色渲染所述物體的三維模型,并將渲染后的物體的三維模型的頂點轉換到屏幕空間得到各頂點的屏幕位置;
分別在各頂點的屏幕位置所對應的像素點周圍的多個像素位置對渲染后得到的紋理進行采樣,并依據采樣的紋理的顏色值確定屬于物體輪廓邊的頂點;
將屬于物體輪廓邊的頂點的輔助頂點進行偏移產生體積陰影。
其中,在中央處理器中為頂點的數據項中添加標識區分輔助頂點,并將添加了輔助頂點的物體的三維模型數據傳送給圖形處理器GPU,由GPU完成后續的步驟。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610127574.0/2.html,轉載請聲明來源鉆瓜專利網。





