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