基于粒子系統(tǒng)的全局天氣模擬方法
【專利摘要】本發(fā)明提供一種基于粒子系統(tǒng)的全局天氣模擬方法,步驟1、建立一主區(qū)域,步驟2、確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,所述當(dāng)前區(qū)域?yàn)榱W赢a(chǎn)生區(qū)域,新粒子隨機(jī)從當(dāng)前區(qū)域的上端面的任意一點(diǎn)出現(xiàn),然后開(kāi)始運(yùn)動(dòng);步驟3、當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),再次確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域。本發(fā)明設(shè)置一包裹攝像機(jī)的主區(qū)域,然后根據(jù)主區(qū)域及虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)的方向向量,確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,僅在當(dāng)前區(qū)域內(nèi)模擬全局天氣,由于視錐體包含在所述當(dāng)前區(qū)域內(nèi),給用戶帶來(lái)了豐富多變的真實(shí)天氣效果,同時(shí),減少CPU運(yùn)算開(kāi)銷,提高天氣模擬過(guò)程中程序的運(yùn)行及系統(tǒng)運(yùn)行的效率,降低特效設(shè)計(jì)和制作成本。
【專利說(shuō)明】基于粒子系統(tǒng)的全局天氣模擬方法
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及一種基于粒子系統(tǒng)的全局天氣模擬方法。
【【背景技術(shù)】】
[0002]在3D游戲中,傳統(tǒng)天氣效果模擬方案多采用全屏光效,就是通過(guò)美術(shù)制作工具(如3dmax或者maya)制作出模擬天氣的粒子特效,然后將其預(yù)渲染成平面動(dòng)畫(huà),在游戲內(nèi)使用反復(fù)播放,以達(dá)到在游戲場(chǎng)景內(nèi)營(yíng)造天氣效果的目的。這種技術(shù)就好像在鏡頭前放一塊透明玻璃,而透明玻璃上不斷重復(fù)幾張變化的圖片。玩家只能看到一種預(yù)渲染好的美術(shù)效果,沒(méi)有其他的變化,如果希望保持長(zhǎng)時(shí)間的變化,就需要預(yù)渲染大量的單幀畫(huà)面,而支持這些畫(huà)面的每張紋理需要覆蓋整個(gè)屏幕,因此對(duì)內(nèi)存的消耗非常大。
[0003]另有一種改進(jìn)方案,不使用預(yù)渲染的動(dòng)畫(huà),而是直接在游戲場(chǎng)景中使用實(shí)時(shí)的粒子系統(tǒng),解決了預(yù)渲染動(dòng)畫(huà)缺少變化的問(wèn)題,但是單純使用粒子系統(tǒng)模擬真實(shí)天氣,比如暴風(fēng)雪、雨水、風(fēng)沙等,要求在場(chǎng)景內(nèi)存在成千上萬(wàn)的粒子,而每個(gè)粒子在其生存期內(nèi)的運(yùn)動(dòng)情況都需要消耗CPU運(yùn)算,數(shù)量過(guò)多不可避免帶來(lái)額外開(kāi)銷,影響系統(tǒng)運(yùn)行速度。
【
【發(fā)明內(nèi)容】
】
[0004]本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種基于粒子系統(tǒng)的全局天氣模擬方法,以小范圍的粒子運(yùn)動(dòng)模擬達(dá)成整個(gè)場(chǎng)景同時(shí)有效的效果,減少整個(gè)3D場(chǎng)景中大量粒子運(yùn)算帶來(lái)的系統(tǒng)開(kāi)銷,提高系統(tǒng)運(yùn)行速度。
[0005]本發(fā)明是 這樣實(shí)現(xiàn)的:
[0006]基于粒子系統(tǒng)的全局天氣模擬方法,所述方法應(yīng)用于3D場(chǎng)景中,在3D場(chǎng)景中,通過(guò)一虛擬攝像機(jī)模擬人的眼睛,其可見(jiàn)區(qū)域是一個(gè)封閉的四面椎體空間,稱之為視錐體,所述方法包括如下步驟:
[0007]步驟1、建立一主區(qū)域:
[0008]所述主區(qū)域是以虛擬攝像機(jī)所在位置為中心點(diǎn)O的一正方體空間,所述主區(qū)域的邊長(zhǎng)為R,R=2(D+X),所述D為中心點(diǎn)O到四面椎體上平面的距離,所述X為自定義的變量,O < X < L,所述L為四面椎體上平面和下平面之間的垂直距離;
[0009]步驟2、確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域:
[0010]所述當(dāng)前區(qū)域?yàn)榱W赢a(chǎn)生區(qū)域,新粒子隨機(jī)從當(dāng)前區(qū)域的上端面的任意一點(diǎn)出現(xiàn),然后開(kāi)始運(yùn)動(dòng);
[0011]確定當(dāng)前區(qū)域的步驟如下:
[0012]與所述主區(qū)域邊角相鄰且與所述主區(qū)域大小相同的正方體共26個(gè),
[0013]當(dāng)所述虛擬攝像機(jī)靜止時(shí),所述主區(qū)域即為當(dāng)前區(qū)域,由主區(qū)域的上端面產(chǎn)生新粒子;
[0014]當(dāng)所述虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)時(shí),通過(guò)公式v/mod(v)*R+C得到E點(diǎn)坐標(biāo),所述E點(diǎn)為虛擬攝像機(jī)視錐體內(nèi)的探測(cè)點(diǎn),所述V是虛擬攝像機(jī)當(dāng)前移動(dòng)或旋轉(zhuǎn)的方向向量V,所述C為虛擬攝像機(jī)的當(dāng)前坐標(biāo);根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于哪一正方體內(nèi),
[0015]若E點(diǎn)還處于主區(qū)域的正方體內(nèi),則,所述主區(qū)域仍為當(dāng)前區(qū)域,由主區(qū)域的上端面產(chǎn)生新粒子;
[0016]若E點(diǎn)位于與主區(qū)域相鄰的26個(gè)正方體中的其中一個(gè)正方體內(nèi),則將該正方體確定為當(dāng)前區(qū)域,所述主區(qū)域不再產(chǎn)生新粒子;
[0017]步驟3、當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),再次確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,具體如下:
[0018]通過(guò)所述公式v/mod(v)*R+C得到E點(diǎn)坐標(biāo),根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于當(dāng)前區(qū)域的正方體內(nèi)還是與當(dāng)前區(qū)域邊角相鄰且大小相等的26個(gè)正方體中的其中一個(gè)正方體內(nèi),將E點(diǎn)所在的正方體確定為確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域;
[0019]當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),重復(fù)執(zhí)行步驟3。
[0020]本發(fā)明具有如下優(yōu)點(diǎn):
[0021]本發(fā)明設(shè)置一包裹攝像機(jī)的主區(qū)域,然后根據(jù)主區(qū)域及虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)的方向向量,確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,僅在當(dāng)前區(qū)域內(nèi)模擬全局天氣,由于視錐體包含在所述當(dāng)前區(qū)域內(nèi),給用戶帶來(lái)了豐富多變的真實(shí)天氣效果,同時(shí),減少CPU運(yùn)算開(kāi)銷,提高天氣模擬過(guò)程中程序的運(yùn)行及系統(tǒng)運(yùn)行的效率,降低特效設(shè)計(jì)和制作成本。
【【專利附圖】
【附圖說(shuō)明】】
[0022]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
[0023]圖1為本發(fā)明視錐體的示意圖。
[0024]圖2為本發(fā)明虛擬攝像機(jī)向前移動(dòng)的平面示意圖。
[0025]圖3為本發(fā)明虛擬攝像機(jī)向前移動(dòng)后當(dāng)前區(qū)域和主區(qū)域的立體示意圖。
【【具體實(shí)施方式】】
[0026]請(qǐng)參閱圖1至圖3,對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
[0027]基于粒子系統(tǒng)的全局天氣模擬方法,所述方法應(yīng)用于3D場(chǎng)景中,在3D場(chǎng)景中,通過(guò)一虛擬攝像機(jī)模擬人的眼睛,其可見(jiàn)區(qū)域是一個(gè)封閉的四面椎體空間,稱之為視錐體A(請(qǐng)參閱圖1),所述方法包括如下步驟:
[0028]步驟1、請(qǐng)參閱圖2,建立一主區(qū)域:
[0029]所述主區(qū)域B是以虛擬攝像機(jī)所在位置為中心點(diǎn)O的一正方體空間,所述主區(qū)域的邊長(zhǎng)為R,R=2 (D+X),所述D為中心點(diǎn)O到四面椎體上平面的距離,所述X為自定義的變量,O < X < L,所述L為四面椎體A上平面A1和下平面A2之間的垂直距離;X值越大,視野范圍內(nèi)的粒子數(shù)量就會(huì)越多,可獲得比較好的縱深感;
[0030]步驟2、確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域W;
[0031]所述當(dāng)前區(qū)域W粒子產(chǎn)生區(qū)域,新粒子隨機(jī)從當(dāng)前區(qū)W的上端面W1任意一點(diǎn)出現(xiàn),然后開(kāi)始運(yùn)動(dòng);所述粒子的運(yùn)動(dòng)是通過(guò)粒子系統(tǒng)進(jìn)行模擬,粒子系統(tǒng)是一種計(jì)算機(jī)圖形技術(shù),它使用了大量的非常小的圖片或其它圖形對(duì)象來(lái)模擬某些種類的“模糊”現(xiàn)象,這類現(xiàn)象是非常難以通過(guò)傳統(tǒng)的渲染技術(shù)重現(xiàn)的——通常是高度混沌系統(tǒng)以及化學(xué)反應(yīng)引起的自然現(xiàn)象或過(guò)程;[0032]確定當(dāng)前區(qū)域W步驟如下:
[0033]與所述主區(qū)域B邊角相鄰且與所述主區(qū)域大小相同的正方體共26個(gè),與所述主區(qū)域B的六個(gè)面相鄰且大小相同的正方體有6個(gè),與所述主區(qū)域的十二條邊相鄰且大小相同的正方體有12個(gè),與所述主區(qū)域的8個(gè)頂點(diǎn)相鄰且大小相同的正方體有8個(gè),所以一共有26個(gè);
[0034]當(dāng)所述虛擬攝像機(jī)靜止時(shí),所述主區(qū)域B為當(dāng)前區(qū)域W,主區(qū)域B上端面B1新粒子;
[0035]當(dāng)所述虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)時(shí),通過(guò)公式v/mod(v)*R+C得到E點(diǎn)坐標(biāo),所述E點(diǎn)為虛擬攝像機(jī)視錐體內(nèi)的探測(cè)點(diǎn),所述V是虛擬攝像機(jī)當(dāng)前移動(dòng)或旋轉(zhuǎn)的方向向量V,所述C為虛擬攝像機(jī)的當(dāng)前坐標(biāo),所述mod(v) Smod(v)為對(duì)所述方向向量v求模,根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于哪一正方體內(nèi),
[0036]若E點(diǎn)還處于主區(qū)域的正方體內(nèi),則,所述主區(qū)域B仍為當(dāng)前區(qū)域,由主區(qū)域B的上端面B1產(chǎn)生新粒子;
[0037]若E點(diǎn)位于與主區(qū)域B相鄰的26個(gè)正方體中的其中一個(gè)正方體內(nèi),則將該正方體確定為當(dāng)前區(qū)域W,所述主區(qū)域B不再產(chǎn)生新粒子;
[0038]圖2和圖3展示了虛擬攝像機(jī)向前移動(dòng),且E點(diǎn)移入位于主區(qū)域B正前方的正方體內(nèi),將其確定為當(dāng)前區(qū)域W ;
[0039]由于視錐體是一個(gè)細(xì)長(zhǎng)的錐體,上平面A1和下平面A2之間距離非常大,若當(dāng)前區(qū)域包裹整個(gè)視錐體,則粒子數(shù)量依然巨大,但實(shí)際上,粒子在經(jīng)過(guò)多層堆疊之后,人眼已經(jīng)很難分辨它們之間的層次關(guān)系,因此只需包裹部分視錐體,且由于當(dāng)前區(qū)域?yàn)樾铝W赢a(chǎn)生區(qū)域,用戶看到新的粒子進(jìn)入視野,達(dá)到真實(shí)的天氣模擬效果;
[0040]步驟3、當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),再次確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,具體如下:
[0041]通過(guò)所述公式v/mod(v)*R+C得到E點(diǎn)坐標(biāo),根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于當(dāng)前區(qū)域W的正方體內(nèi)還是與當(dāng)前區(qū)域邊角相鄰且大小相等的26個(gè)正方體中的其中一個(gè)正方體內(nèi),將E點(diǎn)所在的正方體確定為確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域;
[0042]當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),重復(fù)執(zhí)行步驟3。
[0043]本發(fā)明設(shè)置一包裹攝像機(jī)的主區(qū)域,然后根據(jù)主區(qū)域及虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)的方向向量,確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,僅在當(dāng)前區(qū)域內(nèi)模擬全局天氣,由于視錐體包含在所述當(dāng)前區(qū)域內(nèi),給用戶帶來(lái)了豐富多變的真實(shí)天氣效果,同時(shí),減少CPU運(yùn)算開(kāi)銷,提高天氣模擬過(guò)程中程序的運(yùn)行及系統(tǒng)運(yùn)行的效率,降低特效設(shè)計(jì)和制作成本。
[0044]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
【權(quán)利要求】
1.基于粒子系統(tǒng)的全局天氣模擬方法,所述方法應(yīng)用于3D場(chǎng)景中,在3D場(chǎng)景中,通過(guò)一虛擬攝像機(jī)模擬人的眼睛,其可見(jiàn)區(qū)域是一個(gè)封閉的四面椎體空間,稱之為視錐體,其特征在于,所述方法包括如下步驟: 步驟1、建立一主區(qū)域: 所述主區(qū)域是以虛擬攝像機(jī)所在位置為中心點(diǎn)O的一正方體空間,所述主區(qū)域的邊長(zhǎng)為R,R=2 (D+X),所述D為中心點(diǎn)O到四面椎體上平面的距離,所述X為自定義的變量,O < X < L,所述L為四面椎體上平面和下平面之間的垂直距離; 步驟2、確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域: 所述當(dāng)前區(qū)域?yàn)榱W赢a(chǎn)生區(qū)域,新粒子隨機(jī)從當(dāng)前區(qū)域的上端面的任意一點(diǎn)出現(xiàn),然后開(kāi)始運(yùn)動(dòng); 確定當(dāng)前區(qū)域的步驟如下: 與所述主區(qū)域邊角相鄰且與所述主區(qū)域大小相同的正方體共26個(gè), 當(dāng)所述虛擬攝像機(jī)靜止時(shí),所述主區(qū)域即為當(dāng)前區(qū)域,由主區(qū)域的上端面產(chǎn)生新粒子; 當(dāng)所述虛擬攝像機(jī)移動(dòng)或旋轉(zhuǎn)時(shí),通過(guò)公式v/mod(v)*R+C得到E點(diǎn)坐標(biāo),所述E點(diǎn)為虛擬攝像機(jī)視錐體內(nèi)的探測(cè)點(diǎn),所述V是虛擬攝像機(jī)當(dāng)前移動(dòng)或旋轉(zhuǎn)的方向向量V,所述C為虛擬攝像機(jī)的當(dāng)前坐標(biāo);根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于哪一正方體內(nèi), 若E點(diǎn)還處于主區(qū)域的正方體內(nèi),則,所述主區(qū)域仍為當(dāng)前區(qū)域,由主區(qū)域的上端面產(chǎn)生新粒子; 若E點(diǎn)位于與主區(qū)域相鄰的26個(gè)正方體中的其中一個(gè)正方體內(nèi),則將該正方體確定為當(dāng)前區(qū)域,所述主區(qū)域不再產(chǎn)生新粒子; 步驟3、當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),再次確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域,具體如下: 通過(guò)所述公式v/mod(V) *R+C得到E點(diǎn)坐標(biāo),根據(jù)所述E點(diǎn)的坐標(biāo),確定E點(diǎn)位于當(dāng)前區(qū)域的正方體內(nèi)還是與當(dāng)前區(qū)域邊角相鄰且大小相等的26個(gè)正方體中的其中一個(gè)正方體內(nèi),將E點(diǎn)所在的正方體確定為確定粒子運(yùn)動(dòng)的當(dāng)前區(qū)域; 當(dāng)所述虛擬攝像機(jī)再次移動(dòng)或者旋轉(zhuǎn)時(shí),重復(fù)執(zhí)行步驟3。
【文檔編號(hào)】G06T15/00GK103473802SQ201310388235
【公開(kāi)日】2013年12月25日 申請(qǐng)日期:2013年8月30日 優(yōu)先權(quán)日:2013年8月30日
【發(fā)明者】李臻, 劉德建, 陳宏展, 金磊 申請(qǐng)人:福建天晴數(shù)碼有限公司