[發明專利]一種基于粒子系統的火焰模擬加速改進算法有效
| 申請號: | 201110063186.1 | 申請日: | 2011-03-16 |
| 公開(公告)號: | CN102147928A | 公開(公告)日: | 2011-08-10 |
| 發明(設計)人: | 吳慶標;張尋;李冬平;劉春玲 | 申請(專利權)人: | 美通日用品(杭州)有限公司 |
| 主分類號: | G06T15/00 | 分類號: | G06T15/00;G06T13/60 |
| 代理公司: | 杭州宇信知識產權代理事務所(普通合伙) 33231 | 代理人: | 張宇娟 |
| 地址: | 310024 浙江*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 粒子 系統 火焰 模擬 加速 改進 算法 | ||
1.一種基于粒子系統的火焰模擬加速改進算法,其特征在于包括如下步驟:
假定當前系統模擬的火焰需要n個粒子和m條軌跡;
步驟1:預處理
對n個粒子進行模擬計算,直到所有m個粒子都完成一整個生命周期,并且在模擬過程中記錄下粒子每一幀的屬性,從而形成軌跡,所述軌跡包括以下屬性:加速度、顏色、生命值;模擬計算的具體操作包括:由作用力管理器生產下一幀的加速度,生命值=生命值-更新時間×系數,顏色=初始顏色+(最終顏色-初始顏色)×生命值;預處理后得到m條軌跡;
步驟2:生成粒子
由粒子發射器按照定義的規則隨機產生n個粒子的初始位移和速度;
步驟3:分配粒子軌跡
對于生成的每一個粒子,為其選擇一條軌跡;
步驟4:更新和渲染
(1)更新粒子屬性:對于每個粒子,拷貝其所屬軌跡中對應當前幀的屬性作為粒子當前屬性,即粒子加速度=軌跡加速度,粒子顏色=軌跡顏色,粒子生命值=軌跡生命值,然后更新粒子其他屬性,若粒子已經到達軌跡的最后一幀,則進入步驟5;
(2)渲染粒子;
(3)更新軌跡生命值屬性,即生命值=生命值-更新時間×系數,其中系數為步驟1中所述的系數,如果軌跡的生命小于0,進入步驟6;
(4)循環步驟4,直到系統退出;
步驟5:重新生成粒子
若有1個粒子完成了生命周期,則粒子發射器重新生成一個粒子,具體操作如步驟2;
步驟6:重新計算軌跡
若有1條軌跡完成了生命周期,則用1個粒子重新進行一次模擬計算,具體操作如步驟1,完成后得到一條新的軌跡,將新的軌跡的屬性覆蓋原有軌跡的屬性,然后將原粒子鏈表中的粒子全部進行一次重新生成,具體操作如步驟4。
2.如權利要求1所述的基于粒子系統的火焰模擬加速改進算法,其特征在于,步驟2中,粒子的位移是依據選定的概率模型在發射器的表面或內部隨機產生的,而粒子的速度則是依據發射方向和發射角形成的圓錐內隨機選擇發射方向。
3.如權利要求1所述的基于粒子系統的火焰模擬加速改進算法,其特征在于,步驟3中,為一個粒子選擇一條軌跡對應的具體操作如下:將該粒子的地址添加進這條軌跡的結構中的粒子鏈表里,同時在粒子自身的屬性里添加上該軌跡的編號,并把當前幀數設為第一幀;在步驟5中,不再為該新生成的粒子分配新的軌跡,而是將舊粒子從原軌跡的粒子鏈表中刪除,把新粒子添加進粒子鏈表中,同時在新粒子的屬性中添加該軌跡的編號,并把當前幀數設為第一幀,然后返回步驟4。
4.如權利要求1所述的基于粒子系統的火焰模擬加速改進算法,其特征在于:步驟4的更新粒子屬性中,所述其他屬性包括粒子速度、粒子位移和幀數,具體更新方式如下:粒子速度=粒子速度+粒子加速度×時間;粒子位移=粒子位移+粒子速度×時間;幀數=幀數+1。
5.如權利要求1所述的基于粒子系統的火焰模擬加速改進算法,其特征在于:
所述步驟4中渲染粒子的具體方法如下:
使用VBO技術進行渲染,每個粒子的頂點數據分為三部分:正方形曲面片的頂點坐標,共4個三維數據;四個頂點的RGBA顏色值,共4個四維數據;四個頂點對應的紋理坐標,共4個二維數據;其中紋理坐標對于每個粒子在每一時刻都是不變的,即從右上角頂點開始沿逆時針依次為:(1,1),(0,1),(1,0),(0,0);
使用VBO渲染的具體操作如下:
1)對頂點坐標數據和顏色數據,分別調用glBindBufferARB和glBufferDataARB函數將緩沖區和數據進行綁定,然后調用glMapBufferARB函數獲得緩沖區的指針;
2)假定上一步中得到的頂點數據緩沖區指針為p,粒子的位置坐標為(x,y,z),粒子半徑為r,則對第n個粒子數據的賦值如下:
p[4n].x=x+r;p[4n].y=y+r;p[4n].z=z;
p[4n+1].x=x-r;p[4n+1].y=y+r;p[4n+1].z=z;
p[4n+2].x=x-r;p[4n+2].y=y-r;p[4n+2].z=z;
p[4n+3].x=x+r;p[4n+3].y=y-r;p[4n+3].z=z;
假定上一步獲得的顏色數據緩沖區指針為c,更新后粒子的顏色屬性為(R,G,B),生命值為life,則對第n個粒子數據的賦值如下:
c[4n].R=c[4n+1].R=c[4n+2].R=c[4n+3].R=R;
c[4n].G=c[4n+1].G=c[4n+2].G=c[4n+3].G=G;
c[4n].B=c[4n+1].B=c[4n+2].B=c[4n+3].B=B;
c[4n].A=c[4n+1].A=c[4n+2].A=c[4n+3].A=life;
3)當全部的緩沖區的數據都被更新過后,調用glBindBufferARB和glUnmapBufferARB函數將頂點坐標數據和顏色數據從緩沖區刷新到顯卡,然后調用glEnableClientState函數開啟頂點坐標、顏色和紋理坐標的指針用于渲染,再依次調用glBindBufferARB函數和頂點坐標、顏色和紋理坐標對應的指針函數,將開啟的指針指向相應的數據;
4)最后,調用glDrawArrays函數進行渲染,渲染結束后調用glDisableClientState函數來關閉頂點、顏色和紋理坐標指針。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于美通日用品(杭州)有限公司,未經美通日用品(杭州)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110063186.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:維持和改善肌肉功能的方法
- 下一篇:食品





