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

在3d動畫繪制中利用幀間時間相關(guān)的方法

文檔序號:6438817閱讀:189來源:國知局
專利名稱:在3d動畫繪制中利用幀間時間相關(guān)的方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機三維動畫技術(shù)領(lǐng)域,涉及一種在3D動畫繪制中利用幀間時間相關(guān)的方法。
背景技術(shù)
當(dāng)前,3D動畫在實際中的應(yīng)用越來越廣泛,然而高質(zhì)量3D動畫的繪制時間卻依然非常長,這影響了 3D動畫產(chǎn)業(yè)的快速發(fā)展。連續(xù)的3D動畫幀之間存在較強的相關(guān)性,即時間相關(guān);利用幀間時間相關(guān)可以明顯地加快3D動畫的繪制速度。為了生成真實感強的3D動畫,必須在動畫繪制中實現(xiàn)全局光照。對大多數(shù)3D場景而言,往往僅實現(xiàn)一次反射間接光照就可以得到真實感較強的繪制結(jié)果。從光源出發(fā),發(fā)射一系列光線,在其與3D場景相交的地方生成一系列虛擬點光源;再利用這些虛擬點光源照射3D場景,即可模擬一次反射間接光照。3D動畫的各幀對應(yīng)的3D場景會發(fā)生變化,這些變化可能包括光源位置變化、幾何面片變化、視點變化等。如果利用虛擬點光源來模擬間接光照,視點變化對虛擬點光源的位置、照射方向等屬性沒有影響。然而,光源位置變化和幾何面片變化對虛擬點光源的位置、照射方向等屬性會產(chǎn)生明顯的影響。由于連續(xù)的3D動畫幀之間存在明顯的時間相關(guān),因此在連續(xù)的兩幀之間,會有很多虛擬點光源幾乎不發(fā)生變化。如果在連續(xù)的兩幀之間能夠重用這些未發(fā)生變化的虛擬點光源,則可以顯著提高3D動畫的繪制速度。

發(fā)明內(nèi)容
本發(fā)明方法的目的在于提供一種在3D動畫繪制中利用幀間時間相關(guān)的方法。本發(fā)明方法的技術(shù)解決方案首先從光源向3D場景隨機發(fā)射一系列光線,并計算其與3D場景的交點;在這些交點位置處創(chuàng)建虛擬點光源來照射3D場景,以模擬間接光照;為各虛擬點光源創(chuàng)建陰影圖來實現(xiàn)間接光照的可見性計算;當(dāng)繪制連續(xù)的動畫幀時,在當(dāng)前幀中重用前一幀中的一部分虛擬點光源及其陰影圖,即利用幀間虛擬點光源的時間相關(guān)來提高繪制 3D動畫的速度和質(zhì)量。另外,在當(dāng)前幀中還需要更新一部分已失效的虛擬點光源,以反映場景的變化;如圖1所示,第i幀對應(yīng)的3D場景中有虛擬點光源A(IOl)、虛擬點光源B (102)、 面片C(103)、面片D(IOO);在第i+Ι幀中,面片C(103)移動到了一個新位置,此時第i幀中的虛擬點光源A (101)仍然有效,在第i+Ι幀中可以被重用,但是第i幀中的虛擬點光源 B (102)在第i+Ι幀中因被遮擋而失效,因此需要重新生成一個虛擬點光源D (104)。本發(fā)明方法首先提供一種數(shù)據(jù)結(jié)構(gòu)DS,用于存儲虛擬點光源的相關(guān)數(shù)據(jù);數(shù)據(jù)結(jié)構(gòu)DS包括虛擬點光源的光照入射方向、虛擬點光源所在面片的雙向反射分布函數(shù)BRDF、虛擬點光源所在面片的面片號、虛擬點光源的陰影圖、幀間虛擬點光源陰影圖變化累計量、虛擬點光源的位置、虛擬點光源所在位置的法線方向等成員變量。本發(fā)明方法的第一部分計算3D動畫的第一幀對應(yīng)的3D場景的所有虛擬點光源及其相關(guān)數(shù)據(jù),并繪制第一幀畫面,具體步驟如下
SteplOl 對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成一系列光源光線A001, 計算每條光源光線AOOl與3D場景的交點A002,在各交點A002位置處生成虛擬點光源 A003,將所有虛擬點光源A003存放在一個列表A004中;St印102 對列表A004中的每個虛擬點光源A005,做如下計算根據(jù)第一幀對應(yīng)的光源的位置和虛擬點光源A005的位置,計算虛擬點光源A005 的光照入射方向A006 ;計算虛擬點光源A005所在位置的法線方向A007 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS類型的變量V1,將光照入射方向A006賦值給變量V1的虛擬點光源的光照入射方向成員變量,將法線方向A007賦值給變量V1的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源A005所在面片的雙向反射分布函數(shù)BRDF賦值給變量V1的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源A005所在面片的面片號賦值給變量V1 的虛擬點光源所在面片的面片號成員變量,將虛擬點光源A005的位置賦值給變量V1的虛擬點光源的位置成員變量,將變量V1的幀間虛擬點光源陰影圖變化累計量成員變量賦值為 0 ;以虛擬點光源A005所在位置為視點,對虛擬點光源A005所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源A005的拋物投影陰影圖A008 ;將拋物投影陰影圖A008賦值給變量V1的虛擬點光源的陰影圖成員變量;將變量V1和虛擬點光源A005相關(guān)聯(lián);St印103 用光線投射算法計算第一幀動畫對應(yīng)的3D場景的直接光照結(jié)果,并將其保存在變量V2中;St印104 對列表A004中的每個虛擬點光源A009,做如下計算用虛擬點光源A009照射第一幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V2中;乂印105:將變量V2中的光照數(shù)據(jù)轉(zhuǎn)換為第一幀的幀畫面圖像數(shù)據(jù)輸出到文件中。本發(fā)明方法的第二部分逐幀繪制3D動畫,具體步驟如下St印201 將幀編號變量ID賦值為2 ;St印202 計算出在第ID幀和第ID-I幀之間發(fā)生變化的所有幾何面片,并存放到一個列表BOOl中;Step203 對列表A004中的每個虛擬點光源B002,做如下計算連接虛擬點光源B002和第ID幀對應(yīng)的光源的位置,生成一條線段B003,測試線段 B003與第ID幀對應(yīng)的3D場景是否相交,如果相交,則進一步判斷與線段B003相交的面片的面片號是否等于與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的面片號成員變量的值,如果不相等,則標(biāo)記虛擬點光源B002為失效;Step204 對列表A004中的每個虛擬點光源B002,做如下計算如果虛擬點光源B002沒有失效,則以虛擬點光源B002所在位置為視點,對列表 BOOl中的位于虛擬點光源B002所在位置的正法線方向半空間中的所有幾何面片按拋物投影方式進行投影,計算各投影的幾何面片在虛擬點光源B002的陰影圖上覆蓋的各像素 B003的位置;根據(jù)各像素B003的位置,計算與各像素B003相對應(yīng)的列表BOOl中的幾何面片上的點的位置B004 ;連接光源B002所在位置與位置B004,得到一個方向向量B005 ;將方向向量B005和與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源的光照入射方向成員變量代入與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量表示的雙向反射分布函數(shù)BRDF中,計算出 BRDF值B006,將計算出的所有BRDF值B006進行累加,并賦給變量V3 ;將變量V3和與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值相加,將相加之和再賦值給與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量;如果與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu) DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值大于閾值C,則標(biāo)記虛擬點光源B002失效;St印205 統(tǒng)計列表A004中的失效虛擬點光源的個數(shù),將統(tǒng)計結(jié)果賦值給變量N ; 對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成N條光源光線B007,計算每條光源光線 B007與3D場景的交點B008,在各交點B008位置處生成虛擬點光源B009,將所有虛擬點光源B009存放在一個列表BOlO中;Step206 對列表BOlO中的每個虛擬點光源BOl 1,做如下計算根據(jù)第ID幀對應(yīng)的光源的位置和虛擬點光源BOll的位置,計算虛擬點光源BOll 的光照入射方向B012 ;計算虛擬點光源BOll所在位置的法線方向B013 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS類型的變量V4,將光照入射方向B012賦值給變量V4的虛擬點光源的光照入射方向成員變量,將法線方向B013賦值給變量V4的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源BOll所在面片的雙向反射分布函數(shù)BRDF賦值給變量V4的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源BOll所在面片的面片號賦值給變量V4 的虛擬點光源所在面片的面片號成員變量,將虛擬點光源BOll的位置賦值給變量V4的虛擬點光源的位置成員變量,將變量V4的幀間虛擬點光源陰影圖變化累計量成員變量賦值為 0 ;以虛擬點光源BOll所在位置為視點,對虛擬點光源BOll所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源BOll的拋物投影陰影圖B014 ;將拋物投影陰影圖B014賦值給變量V4的虛擬點光源的陰影圖成員變量;將變量V4和虛擬點光源BOll相關(guān)聯(lián);St印207 刪掉列表A004中的所有失效的虛擬點光源;將列表BOlO中的所有虛擬點光源添加到列表A004中;St印208 用光線投射算法計算第ID幀對應(yīng)的3D場景的直接光照結(jié)果,并保存在
變量V5中;Step209 對列表A004中的每個虛擬點光源B015,做如下計算用虛擬點光源B015照射第ID幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V5中;St印210 將變量V5中的光照數(shù)據(jù)轉(zhuǎn)換為第ID幀的幀畫面圖像數(shù)據(jù)輸出到文件中;St印211 將變量ID的值加1。有益效果本發(fā)明提供了一種在3D動畫繪制中利用幀間時間相關(guān)的方法。本發(fā)明方法可以支持3D動畫幀間的光源位置、幾何面片、視點等變化。通過在連續(xù)的幀間重用虛擬點光源, 本發(fā)明方法大大地提高了間接光照的計算速度。通過刪除失效的虛擬點光源,并在每幀中生成一小部分新的虛擬點光源,實現(xiàn)了虛擬點光源的更新。此外,由于在連續(xù)的幀間重用了大量虛擬點光源,因此解決了隨機生成虛擬點光源造成的畫面光照不穩(wěn)定問題。在3D動畫繪制中使用本發(fā)明方法,可以大大縮短3D動畫的整體制片時間。


圖1為相鄰幀間對應(yīng)的3D場景的虛擬點光源更新示意圖。
具體實施例方式為了使本發(fā)明的特征和優(yōu)點更加清楚明白,下面結(jié)合具體實施例對本發(fā)明作進一步的描述。在本實施例中,利用GLSL來實現(xiàn)虛擬點光源照射3D場景時的著色器,利用 NVIDIACUDA來編寫運行在GPU上的光線投射程序,使用Metropolis隨機采樣算法來實現(xiàn)蒙特卡洛隨機采樣。本發(fā)明方法的目的在于提供一種在3D動畫繪制中利用幀間時間相關(guān)的方法。本發(fā)明方法的技術(shù)解決方案首先從光源向3D場景隨機發(fā)射一系列光線,并計算其與3D場景的交點;在這些交點位置處創(chuàng)建虛擬點光源來照射3D場景,以模擬間接光照; 為各虛擬點光源創(chuàng)建陰影圖來實現(xiàn)間接光照的可見性計算;當(dāng)繪制連續(xù)的動畫幀時,在當(dāng)前幀中重用前一幀中的一部分虛擬點光源及其陰影圖,即利用幀間虛擬點光源的時間相關(guān)來提高繪制3D動畫的速度和質(zhì)量。另外,在當(dāng)前幀中還需要更新一部分已失效的虛擬點光源,以反映場景的變化。本發(fā)明方法首先提供一種數(shù)據(jù)結(jié)構(gòu)DS,用于存儲虛擬點光源的相關(guān)數(shù)據(jù);數(shù)據(jù)結(jié)構(gòu)DS包括虛擬點光源的光照入射方向、虛擬點光源所在面片的雙向反射分布函數(shù)BRDF、虛擬點光源所在面片的面片號、虛擬點光源的陰影圖、幀間虛擬點光源陰影圖變化累計量、虛擬點光源的位置、虛擬點光源所在位置的法線方向等成員變量。本發(fā)明方法的第一部分計算3D動畫的第一幀對應(yīng)的3D場景的所有虛擬點光源及其相關(guān)數(shù)據(jù),并繪制第一幀畫面,具體步驟如下SteplOl 對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成一系列光源光線A001, 計算每條光源光線AOOl與3D場景的交點A002,在各交點A002位置處生成虛擬點光源 A003,將所有虛擬點光源A003存放在一個列表A004中;St印102 對列表A004中的每個虛擬點光源A005,做如下計算根據(jù)第一幀對應(yīng)的光源的位置和虛擬點光源A005的位置,計算虛擬點光源A005 的光照入射方向A006 ;計算虛擬點光源A005所在位置的法線方向A007 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS類型的變量V1,將光照入射方向A006賦值給變量V1的虛擬點光源的光照入射方向成員變量,將法線方向A007賦值給變量V1的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源A005所在面片的雙向反射分布函數(shù)BRDF賦值給變量V1的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源A005所在面片的面片號賦值給變量V1 的虛擬點光源所在面片的面片號成員變量,將虛擬點光源A005的位置賦值給變量V1的虛擬點光源的位置成員變量,將變量V1的幀間虛擬點光源陰影圖變化累計量成員變量賦值為 0 ;以虛擬點光源A005所在位置為視點,對虛擬點光源A005所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源A005的拋物投影陰影圖A008 ;將拋物投影陰影圖A008賦值給變量V1的虛擬點光源的陰影圖成員變量;將變量V1和虛擬點光源A005相關(guān)聯(lián);St印103 用光線投射算法計算第一幀動畫對應(yīng)的3D場景的直接光照結(jié)果,并將其保存在變量V2中;St印104 對列表A004中的每個虛擬點光源A009,做如下計算用虛擬點光源A009照射第一幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V2中;St印105 將變量V2中的光照數(shù)據(jù)轉(zhuǎn)換為第一幀的幀畫面圖像數(shù)據(jù)輸出到文件中。本發(fā)明方法的第二部分逐幀繪制3D動畫,具體步驟如下St印201 將幀編號變量ID賦值為2 ;St印202 計算出在第ID幀和第ID-1幀之間發(fā)生變化的所有幾何面片,并存放到一個列表BOOl中;Step203 對列表A004中的每個虛擬點光源B002,做如下計算連接虛擬點光源B002和第ID幀對應(yīng)的光源的位置,生成一條線段B003,測試線段 B003與第ID幀對應(yīng)的3D場景是否相交,如果相交,則進一步判斷與線段B003相交的面片的面片號是否等于與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的面片號成員變量的值,如果不相等,則標(biāo)記虛擬點光源B002為失效;Step204 對列表A004中的每個虛擬點光源B002,做如下計算如果虛擬點光源B002沒有失效,則以虛擬點光源B002所在位置為視點,對列表 BOOl中的位于虛擬點光源B002所在位置的正法線方向半空間中的所有幾何面片按拋物投影方式進行投影,計算各投影的幾何面片在虛擬點光源B002的陰影圖上覆蓋的各像素 B003的位置;根據(jù)各像素B003的位置,計算與各像素B003相對應(yīng)的列表BOOl中的幾何面片上的點的位置B004 ;連接光源B002所在位置與位置B004,得到一個方向向量B005 ;將方向向量B005和與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源的光照入射方向成員變量代入與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量表示的雙向反射分布函數(shù)BRDF中,計算出 BRDF值B006,將計算出的所有BRDF值B006進行累加,并賦給變量V3 ;將變量V3和與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值相加,將相加之和再賦值給與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量;如果與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu) DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值大于閾值C,則標(biāo)記虛擬點光源B002失效;St印205 統(tǒng)計列表A004中的失效虛擬點光源的個數(shù),將統(tǒng)計結(jié)果賦值給變量N ; 對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成N條光源光線B007,計算每條光源光線 B007與3D場景的交點B008,在各交點B008位置處生成虛擬點光源B009,將所有虛擬點光源B009存放在一個列表BOlO中;Step206 對列表BOlO中的每個虛擬點光源BOl 1,做如下計算根據(jù)第ID幀對應(yīng)的光源的位置和虛擬點光源BOll的位置,計算虛擬點光源BOll 的光照入射方向B012 ;計算虛擬點光源BOll所在位置的法線方向B013 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS類型的變量V4,將光照入射方向B012賦值給變量V4的虛擬點光源的光照入射方向成員變量,將法線方向B013賦值給變量V4的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源BOll所在面片的雙向反射分布函數(shù)BRDF賦值給變量V4的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源BOll所在面片的面片號賦值給變量V4 的虛擬點光源所在面片的面片號成員變量,將虛擬點光源BOll的位置賦值給變量V4的虛擬點光源的位置成員變量,將變量V4的幀間虛擬點光源陰影圖變化累計量成員變量賦值為 0 ;以虛擬點光源BOll所在位置為視點,對虛擬點光源BOll所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源BOll的拋物投影陰影圖B014 ;將拋物投影陰影圖B014賦值給變量V4的虛擬點光源的陰影圖成員變量;將變量V4和虛擬點光源BOll相關(guān)聯(lián);St印207 刪掉列表A004中的所有失效的虛擬點光源;將列表BOlO中的所有虛擬點光源添加到列表A004中;St印208 用光線投射算法計算第ID幀對應(yīng)的3D場景的直接光照結(jié)果,并保存在
變量V5中;Step209 對列表A004中的每個虛擬點光源B015,做如下計算用虛擬點光源B015照射第ID幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V5中;St印210 將變量V5中的光照數(shù)據(jù)轉(zhuǎn)換為第ID幀的幀畫面圖像數(shù)據(jù)輸出到文件中;St印211 將變量ID的值加1。
權(quán)利要求
1.在3D動畫繪制中利用幀間時間相關(guān)的方法,其特征在于,所需的數(shù)據(jù)結(jié)構(gòu)以及實現(xiàn)步驟如下本發(fā)明方法的目的在于提供一種在3D動畫繪制中利用幀間時間相關(guān)的方法;本發(fā)明方法的技術(shù)解決方案首先從光源向3D場景隨機發(fā)射一系列光線,并計算其與3D場景的交點;在這些交點位置處創(chuàng)建虛擬點光源來照射3D場景,以模擬間接光照;為各虛擬點光源創(chuàng)建陰影圖來實現(xiàn)間接光照的可見性計算;當(dāng)繪制連續(xù)的動畫幀時,在當(dāng)前幀中重用前一幀中的一部分虛擬點光源及其陰影圖,即利用幀間虛擬點光源的時間相關(guān)來提高繪制3D 動畫的速度和質(zhì)量;另外,在當(dāng)前幀中還需要更新一部分已失效的虛擬點光源,以反映場景的變化;本發(fā)明方法首先提供一種數(shù)據(jù)結(jié)構(gòu)DS,用于存儲虛擬點光源的相關(guān)數(shù)據(jù);數(shù)據(jù)結(jié)構(gòu)DS 包括虛擬點光源的光照入射方向、虛擬點光源所在面片的雙向反射分布函數(shù)BRDF、虛擬點光源所在面片的面片號、虛擬點光源的陰影圖、幀間虛擬點光源陰影圖變化累計量、虛擬點光源的位置、虛擬點光源所在位置的法線方向等成員變量;本發(fā)明方法的第一部分計算3D動畫的第一幀對應(yīng)的3D場景的所有虛擬點光源及其相關(guān)數(shù)據(jù),并繪制第一幀畫面,具體步驟如下SteplOl 對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成一系列光源光線A001,計算每條光源光線AOOl與3D場景的交點A002,在各交點A002位置處生成虛擬點光源A003,將所有虛擬點光源A003存放在一個列表A004中;St印102 對列表A004中的每個虛擬點光源A005,做如下計算 根據(jù)第一幀對應(yīng)的光源的位置和虛擬點光源A005的位置,計算虛擬點光源A005的光照入射方向A006 ;計算虛擬點光源A005所在位置的法線方向A007 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS 類型的變量V1,將光照入射方向A006賦值給變量V1的虛擬點光源的光照入射方向成員變量,將法線方向A007賦值給變量V1的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源A005所在面片的雙向反射分布函數(shù)BRDF賦值給變量V1的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源A005所在面片的面片號賦值給變量V1的虛擬點光源所在面片的面片號成員變量,將虛擬點光源A005的位置賦值給變量V1的虛擬點光源的位置成員變量,將變量V1的幀間虛擬點光源陰影圖變化累計量成員變量賦值為0 ;以虛擬點光源A005所在位置為視點,對虛擬點光源A005所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源A005的拋物投影陰影圖A008 ;將拋物投影陰影圖A008賦值給變量V1的虛擬點光源的陰影圖成員變量;將變量V1和虛擬點光源 A005相關(guān)聯(lián);St印103 用光線投射算法計算第一幀動畫對應(yīng)的3D場景的直接光照結(jié)果,并將其保存在變量V2中;St印104 對列表A004中的每個虛擬點光源A009,做如下計算 用虛擬點光源A009照射第一幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V2中;St印105 將變量V2中的光照數(shù)據(jù)轉(zhuǎn)換為第一幀的幀畫面圖像數(shù)據(jù)輸出到文件中; 本發(fā)明方法的第二部分逐幀繪制3D動畫,具體步驟如下 St印201 將幀編號變量ID賦值為2 ;St印202 計算出在第ID幀和第ID-I幀之間發(fā)生變化的所有幾何面片,并存放到一個列表BOOl中;St印203 對列表A004中的每個虛擬點光源B002,做如下計算 連接虛擬點光源B002和第ID幀對應(yīng)的光源的位置,生成一條線段B003,測試線段 B003與第ID幀對應(yīng)的3D場景是否相交,如果相交,則進一步判斷與線段B003相交的面片的面片號是否等于與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的面片號成員變量的值,如果不相等,則標(biāo)記虛擬點光源B002為失效; St印204 對列表A004中的每個虛擬點光源B002,做如下計算 如果虛擬點光源B002沒有失效,則以虛擬點光源B002所在位置為視點,對列表BOOl 中的位于虛擬點光源B002所在位置的正法線方向半空間中的所有幾何面片按拋物投影方式進行投影,計算各投影的幾何面片在虛擬點光源B002的陰影圖上覆蓋的各像素B003的位置;根據(jù)各像素B003的位置,計算與各像素B003相對應(yīng)的列表BOOl中的幾何面片上的點的位置B004 ;連接光源B002所在位置與位置B004,得到一個方向向量B005 ;將方向向量B005和與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源的光照入射方向成員變量代入與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量表示的雙向反射分布函數(shù)BRDF中,計算出BRDF 值B006,將計算出的所有BRDF值B006進行累加,并賦給變量V3 ;將變量V3和與虛擬點光源 B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值相加,將相加之和再賦值給與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量;如果與虛擬點光源B002相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)DS類型的變量的幀間虛擬點光源陰影圖變化累計量成員變量的值大于閾值C,則標(biāo)記虛擬點光源 B002失效;St印205 統(tǒng)計列表A004中的失效虛擬點光源的個數(shù),將統(tǒng)計結(jié)果賦值給變量N;對光源的光線發(fā)射方向進行蒙特卡洛采樣,生成N條光源光線B007,計算每條光源光線B007與 3D場景的交點B008,在各交點B008位置處生成虛擬點光源B009,將所有虛擬點光源B009 存放在一個列表BOlO中;Step206 對列表BOlO中的每個虛擬點光源B011,做如下計算 根據(jù)第ID幀對應(yīng)的光源的位置和虛擬點光源BOll的位置,計算虛擬點光源BOll的光照入射方向B012 ;計算虛擬點光源BOll所在位置的法線方向B013 ;創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)DS 類型的變量V4,將光照入射方向B012賦值給變量V4的虛擬點光源的光照入射方向成員變量,將法線方向B013賦值給變量V4的虛擬點光源所在位置的法線方向成員變量,將虛擬點光源BOll所在面片的雙向反射分布函數(shù)BRDF賦值給變量V4的虛擬點光源所在面片的雙向反射分布函數(shù)BRDF成員變量,將虛擬點光源BOll所在面片的面片號賦值給變量V4的虛擬點光源所在面片的面片號成員變量,將虛擬點光源BOll的位置賦值給變量V4的虛擬點光源的位置成員變量,將變量V4的幀間虛擬點光源陰影圖變化累計量成員變量賦值為0 ;以虛擬點光源BOll所在位置為視點,對虛擬點光源BOll所在位置的正法線方向半空間中的幾何面片按拋物投影方式進行投影,計算虛擬點光源BOll的拋物投影陰影圖B014 ;將拋物投影陰影圖B014賦值給變量V4的虛擬點光源的陰影圖成員變量;將變量V4和虛擬點光源 BOll相關(guān)聯(lián);St印207 刪掉列表A004中的所有失效的虛擬點光源;將列表BOlO中的所有虛擬點光源添加到列表A004中;St印208 用光線投射算法計算第ID幀對應(yīng)的3D場景的直接光照結(jié)果,并保存在變量 V5中;St印209 對列表A004中的每個虛擬點光源B015,做如下計算 用虛擬點光源B015照射第ID幀對應(yīng)的3D場景,用陰影映射方法計算可見性,編寫著色器計算3D場景的光照結(jié)果,并將其累加到變量V5中;Step210 將變量V5中的光照數(shù)據(jù)轉(zhuǎn)換為第ID幀的幀畫面圖像數(shù)據(jù)輸出到文件中; St印211 將變量ID的值加1。
全文摘要
本發(fā)明公開一種在3D動畫繪制中利用幀間時間相關(guān)的方法,屬于計算機三維動畫技術(shù)領(lǐng)域。本發(fā)明方法在連續(xù)的動畫幀間重用大部分虛擬點光源,同時更新一小部分失效的虛擬點光源,實現(xiàn)了利用虛擬點光源的幀間時間相關(guān)來加速3D動畫的繪制。此外,由于在連續(xù)的幀間重用了大量虛擬點光源,因此解決了隨機生成虛擬點光源造成的畫面光照不穩(wěn)定問題。在3D動畫繪制中使用本發(fā)明方法,可以大大縮短3D動畫的整體制片時間。
文檔編號G06T15/50GK102346919SQ20111036938
公開日2012年2月8日 申請日期2011年11月21日 優(yōu)先權(quán)日2011年11月21日
發(fā)明者馮欣, 底曉強, 李華, 李巖芳, 楊華民, 范靜濤, 蔣振剛, 陳占芳, 陳純毅 申請人:長春理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
三江| 巫溪县| 宣威市| 普陀区| 望奎县| 太谷县| 叶城县| 绍兴市| 宣武区| 福海县| 健康| 周口市| 汤原县| 宝兴县| 都匀市| 蕲春县| 吴旗县| 德化县| 郑州市| 江西省| 斗六市| 句容市| 唐海县| 牟定县| 海门市| 浦北县| 贵德县| 阿拉善右旗| 清镇市| 高碑店市| 淅川县| 珠海市| 罗平县| 岱山县| 永善县| 德格县| 普兰县| 芮城县| 泰州市| 西贡区| 雷波县|