一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法
【技術領域】
[0001] 本發(fā)明屬于計算機圖形技術領域,具體涉及一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新 方法。
【背景技術】
[0002] 粒子系統(tǒng)是三維計算機圖形學中模擬一些特定的不規(guī)則模糊景象的技術,而這些 景象用其它傳統(tǒng)的渲染技術難以實現(xiàn)的真實感。在粒子系統(tǒng)中,景象被定義為由成千上萬 個不規(guī)則的、隨機分布的粒子所組成,而每一個粒子均有一定的生命周期,它們不斷改變形 狀、不斷運動,充分地體現(xiàn)了不規(guī)則物體的性質。經常使用粒子系統(tǒng)模擬的現(xiàn)象有火、爆炸、 煙、水流、火花、濺血、落葉、云、霧、雪、塵、流星尾跡或者發(fā)光軌跡這樣的抽象視覺效果等 等。粒子系統(tǒng)方法具有良好的隨機性和動態(tài)性,能逼真地模擬動態(tài)景物。因此,利用粒子系 統(tǒng)方法模擬自然景物,有著重要的科學意義和廣泛的應用前景,在系統(tǒng)仿真、影視特效、三 維游戲中有廣泛的應用。
[0003] 粒子系統(tǒng)更新循環(huán)劃分為兩個不同的階段:參數(shù)更新/模擬階段以及渲染階段。 參數(shù)更新/模擬階段根據(jù)粒子系統(tǒng)信息更新每個粒子的位置等屬性信息;渲染階段根據(jù)粒 子屬性重新繪制粒子。拖尾效果(如流星、刀光劍影等效果的制作)作為粒子系統(tǒng)中最重 要的一種渲染器被大量應用到各種場景中?,F(xiàn)有技術中,拖尾效果的每次繪制都需要在中 央處理器CPU上對所有粒子的歷史信息進行更新,然后把所有的信息提交到顯卡,在圖像 處理器GPU對更新后的粒子進行渲染,完成拖尾效果的繪制,而大量的數(shù)據(jù)更新及資源鎖 定操作會大大影響CPU的性能。
【發(fā)明內容】
[0004] 針對現(xiàn)有技術中存在的缺陷,本發(fā)明的目的在于提供一種粒子系統(tǒng)中粒子頂點數(shù) 據(jù)的更新方法,通過該方法能夠有效降低粒子頂點數(shù)據(jù)更新的復雜度,提高數(shù)據(jù)更新效率。
[0005] 為實現(xiàn)上述目的,本發(fā)明采用的技術方案如下:
[0006] 一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,包括以下步驟:
[0007] (1)確定當前粒子系統(tǒng)中所需的粒子的相關參數(shù),所述相關參數(shù)包括所需的粒子 數(shù)量、粒子類型、粒子寬度、粒子的繪制段數(shù)以及渲染階段所需的貼圖;所述粒子類型為三 角形,在渲染階段采用四邊形進行渲染;
[0008] (2)根據(jù)所述相關參數(shù)進行粒子系統(tǒng)的初始化,包括:生成所述粒子數(shù)量的粒子, 確定粒子的頂點數(shù)據(jù)的存儲方式;所述粒子的頂點數(shù)據(jù)包括粒子的每一段的頂點數(shù)據(jù);所 述粒子的每一段的頂點數(shù)據(jù)包括頂點變化數(shù)據(jù)VBl和頂點固定數(shù)據(jù)VB2,頂點變化數(shù)據(jù)VBl 包括頂點位置坐標和頂點朝向,頂點固定數(shù)據(jù)VB2為頂點紋理坐標UV;
[0009] 粒子的頂點變化數(shù)據(jù)VBl的存儲方式為:按照粒子的段數(shù)順序存儲每個粒子每一 段的頂點變化數(shù)據(jù)VBl,且每一段的頂點變化數(shù)據(jù)VBl連續(xù)存儲兩次,并按照存儲順序設置 每一個數(shù)據(jù)的索引;
[0010] 假設粒子數(shù)量為m、粒子的繪制段數(shù)為n,則粒子的頂點變化數(shù)據(jù)VBl存儲為:
【主權項】
1. 一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,包括以下步驟: (1) 確定當前粒子系統(tǒng)中所需的粒子的相關參數(shù),所述相關參數(shù)包括所需的粒子數(shù)量、 粒子類型、粒子寬度、粒子的繪制段數(shù)以及渲染階段所需的貼圖;所述粒子類型為三角形, 在渲染階段采用四邊形進行渲染; (2) 根據(jù)所述相關參數(shù)進行粒子系統(tǒng)的初始化,包括:生成所述粒子數(shù)量的粒子,確定 粒子的頂點數(shù)據(jù)的存儲方式;所述粒子的頂點數(shù)據(jù)包括粒子的每一段的頂點數(shù)據(jù);所述粒 子的每一段的頂點數(shù)據(jù)包括頂點變化數(shù)據(jù)VB1和頂點固定數(shù)據(jù)VB2,頂點變化數(shù)據(jù)VB1包括 頂點位置坐標和頂點朝向,頂點固定數(shù)據(jù)VB2為頂點紋理坐標UV; 粒子的頂點變化數(shù)據(jù)VB1的存儲方式為:按照粒子的段數(shù)順序存儲每個粒子每一段的 頂點變化數(shù)據(jù)VB1,且每一段的頂點變化數(shù)據(jù)VB1連續(xù)存儲兩次,并按照存儲順序設置每一 個數(shù)據(jù)的索引; 假設粒子數(shù)量為m、粒子的繪制段數(shù)為n,則粒子的頂點變化數(shù)據(jù)VB1存儲為:
其中,UPV"分別表示第m個粒子第n段的起始的頂點變化數(shù)據(jù)和結束的頂點變化 數(shù)據(jù); 粒子的頂點固定數(shù)據(jù)VB2的存儲方式為:按照粒子的段數(shù)順序存儲每個粒子每一段的 頂點固定數(shù)據(jù),完成一次存儲后,按照粒子的段數(shù)再次順序存儲每個粒子每一段的頂點固 定數(shù)據(jù);存儲完成后,按照存儲順序設置每一個數(shù)據(jù)的索引; (3) 確定需要更新的粒子的頂點數(shù)據(jù)的范圍,包括:確定需要更新的頂點變化數(shù)據(jù)VB1 和更新時的頂點固定數(shù)據(jù)VB2 ;其中,頂點朝向為當前頂點位置坐標到更新后的頂點位置 坐標的方向; 確定需要更新的頂點位置坐標的方式為:根據(jù)粒子的頂點位置坐標的存儲方式和此次 粒子更新的次數(shù),得到粒子此次需要更新的頂點位置坐標的索引范圍A,索引范圍A對應的 頂點位置坐標為此次需要更新的頂點位置坐標; 確定更新時的頂點固定數(shù)據(jù)VB2的方式為:根據(jù)粒子的頂點固定數(shù)據(jù)VB2的存儲方式 和此次粒子更新的次數(shù),確定出更新時的頂點固定數(shù)據(jù)VB2 ; (4) 根據(jù)粒子當前的頂點位置坐標、此次更新后的頂點位置坐標、粒子寬度和確定出的 需要更新的頂點變化數(shù)據(jù)VB1進行頂點變化數(shù)據(jù)VB1的更新,并根據(jù)確定出的更新時的頂 點固定數(shù)據(jù)VB2進行此次更新時的頂點固定數(shù)據(jù)VB2的更新; (5) 按照粒子的順序合并更新后的頂點變化數(shù)據(jù)VB1和更新時的頂點固定數(shù)據(jù)VB2,得 到更新后的粒子的頂點數(shù)據(jù)。
2. 根據(jù)權利要求1所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于:步 驟(3)中,所述得到粒子此次需要更新的頂點位置坐標的索引范圍A,包括: 假設粒子數(shù)量為m、粒子的繪制段數(shù)為n,記i為每次更新時的頂點變化數(shù)據(jù)的起始位 置即起始索引,索引范圍A的方式為: 當i彡n+1時,貝1」需要更新的頂點位置坐標的索引范圍A為[2m(i-l),2mi-l] 當k(n+l) <i< (k+l)(n+l)時,則需要更新的頂點位置坐標的索引范圍A為 [2m(i-km_l),2m(i_km) -1],其中,k多 1。
3. 根據(jù)權利要求1所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于:步 驟(3)中,根據(jù)粒子的頂點固定數(shù)據(jù)的存儲方式和此次粒子更新的次數(shù),確定出更新時的 頂點固定數(shù)據(jù)VB2,包括:判斷所述此次粒子更新的次數(shù)是否大于粒子的繪制段數(shù),若否, 則此次粒子更新時的頂點固定數(shù)據(jù)VB2的起始索引B為所述索引范圍A的起始索引,若是, 則此次粒子更新時的頂點固定數(shù)據(jù)VB2的起始索引B為所述索引范圍A的起始索引加上C, 其中,C= 2X粒子的數(shù)量X粒子的繪制段數(shù)。
4. 根據(jù)權利要求1所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于:當 此次粒子更新的次數(shù)大于粒子的繪制段數(shù)時,將此次更新后的粒子的頂點數(shù)據(jù)覆蓋粒子最 早更新的一段的頂點數(shù)據(jù)。
5. 根據(jù)權利要求1或4所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于: 所述方法還包括: 在粒子頂點數(shù)據(jù)的更新過程中,遍歷粒子系統(tǒng)中的所有粒子,判斷粒子的存在時間是 否大于設定時間,若是則判斷粒子死亡; 遍歷粒子系統(tǒng)中所有粒子,判斷粒子的速度是否大于設定速度,若是則判斷粒子死 亡; 遍歷粒子系統(tǒng)中所有粒子,判斷粒子所在區(qū)域是否超出生成區(qū)域,若是則判斷粒子死 亡。
6. 根據(jù)權利要求5所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于:當 粒子死亡后,該粒子所對應的所有頂點數(shù)據(jù)為無效數(shù)據(jù)。
7. 根據(jù)權利要求6所述的一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,其特征在于:當 粒子死亡后,生成新的粒子,粒子死亡后下一次的頂點數(shù)據(jù)為新的粒子的頂點數(shù)據(jù)。
【專利摘要】本發(fā)明公開了一種粒子系統(tǒng)中粒子頂點數(shù)據(jù)的更新方法,屬于圖像繪制技術領域。該方法包括:確定當前粒子系統(tǒng)中所需的粒子的相關參數(shù),并根據(jù)確定的所述相關參數(shù)進行粒子系統(tǒng)初始化,在初始化階段配置了粒子頂點數(shù)據(jù)的存儲方式,之后頂點數(shù)據(jù)更新的過程中,根據(jù)所述存儲方式確定出需要更新的粒子的頂點數(shù)據(jù)的范圍后,完成對應范圍內的頂點數(shù)據(jù)的更新。本發(fā)明所述的方法,將粒子的頂點數(shù)據(jù)分為了頂點變化數(shù)據(jù)和頂點固定數(shù)據(jù),通過使用動態(tài)頂點數(shù)據(jù)的更新方式,減少了每次繪制時的數(shù)據(jù)更新操作,大大提高了頂點數(shù)據(jù)更新的效率。
【IPC分類】G06T15-00
【公開號】CN104700446
【申請?zhí)枴緾N201510143517
【發(fā)明人】李啟虎
【申請人】境界游戲股份有限公司
【公開日】2015年6月10日
【申請日】2015年3月31日