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