《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于粒子系統的位置可控有聲煙花模擬
基于粒子系統的位置可控有聲煙花模擬
來源:微型機與應用2013年第9期
李 海,汪繼文
(安徽大學 計算機科學與技術學院,安徽 合肥 230601)
摘要: 對煙花粒子系統模型和燃放原理進行了詳細的分析,在VC++和OpenGL開發工具基礎上,利用紋理映射、色彩混合等技術對動態煙花進行仿真模擬。加入了音頻技術,并通過鼠標注冊回調函數對煙花燃放的位置加以控制。實驗結果表明,煙花模型的實時性逼真性、可控性和靈活性得以加強。
Abstract:
Key words :

摘  要: 對煙花粒子系統模型和燃放原理進行了詳細的分析,在VC++和OpenGL開發工具基礎上,利用紋理映射、色彩混合等技術對動態煙花進行仿真模擬。加入了音頻技術,并通過鼠標注冊回調函數對煙花燃放的位置加以控制。實驗結果表明,煙花模型的實時性逼真性、可控性和靈活性得以加強。
關鍵詞: 粒子系統;位置可控;音頻效果

 1983年,由REEVES W T等人提出的粒子系統繪制算法被認為是迄今為止模擬不規則模糊物體最為成功的算法[1],使得具有不規則幾何形狀、內在不確定性且運動具有隨機性的模糊物體的虛擬仿真模擬上了一個新的臺階。目前,國內已經有很多研究者采用粒子系統對自然景物進行成功模擬,如王曉娟對禮花進行了模擬[2],肖何等人成功地進行了噴泉仿真[3]。本文在以上理論的基礎上,通過VC++和OpenGL開發工具,利用鼠標注冊回調等函數[4]對煙花燃放的位置加以控制,并加入了音頻技術,從視覺和聽覺兩個方面上進一步增強了煙花爆炸模擬的靈活性、逼真性和沉浸感。
1 粒子系統基本原理
 粒子系統不是一個簡單的靜態模型,而是一種過程計算模型。粒子系統是由許多簡單形狀的微小粒子(如球體、橢球、立方體、點、線等)作為基本元素聚集起來形成一個不規則的模糊物體,并以這些粒子充滿物體,使其呈現各式各樣的形狀,從而構成的一個封閉的系統。
組成粒子系統的每個粒子都有一組屬性,包括位置、運動速度、運動加速度、形狀、大小、顏色、透明度、運動方向和生命周期等,這些屬性隨著時間的推移在不斷地變化。一個粒子究竟有什么樣的屬性主要取決于其實現的具體應用。
 一般情況下,系統中的每個粒子都會隨著虛擬世界時間的流逝經歷一個產生—活動—消亡3個階段的流程[5],如圖1所示。

2 煙花粒子系統建模
2.1 建立坐標系

 本文建立的坐標系以屏幕的中心為坐標原點,從左到右的方向為X軸的正方向,從下到上為Y軸的正方向,從屏幕里面指向外面的方向為Z軸正方向[6]。
2.2 煙花及粒子的數據結構
 煙花粒子的數據結構如下:
 typedef struct
 {
        GLfloat    x,y,z;    //粒子位置
        GLfloat    xSpeed,ySpeed,zSpeed;    //粒子的速度
        GLfloat    xg,yg,zg;//粒子的運動加速度
        GLfloat    r,g,b;    //粒子的顏色
}PARTICLES;//粒子
煙花則是由一組具有相似性質的煙花粒子組成的,其數據結構如下:
typedef struct
{
      PARTICLES particle[MAX_PARTICLES][MAX_TAIL];
      GLfloat life,fade,rad;
}Fire;//煙花
2.3 煙花粒子系統的初始化
 煙花粒子系統的初始化就是賦予煙花粒子屬性初始狀態。在煙花系統中,每個煙花由一組具有相似性質的煙花粒子組成,每一幀煙花的更新就是這組煙花粒子的更新。這里把每組粒子數定義為一個常數MAX_PARTICLES,這個常數的選擇很重要[7],如果過大,會影響系統的實時性;如果過小,則會影響煙花模擬的真實性。
 #define MAX_PARTICLES 96 //煙花小粒子個數
 #define MAX_TAIL 30 //煙花尾部的長度
 通過隨機函數rand()和參數控制煙花的初始位置、初始顏色、速度、加速度、生命周期及衰減速率。其中, 顏色的初始化可以在模型中定義各種顏色到一個顏色數組中,然后通過隨機函數rand()調用。粒子的運動受到各種外力的影響,包括重力和空氣阻力等,在本實驗中,只考慮垂直方向重力所產生的加速度。
 fire.life=1.0f;
 fire.rad=rand()%K1+P1;   //K1、P1為參數
 fire.fade=(float)(rand()%K2)/K3+P2;
   //K2、K3、P1為參數
2.4 煙花粒子的運動更新
 煙花粒子運動更新是整個煙花系統中最重要的組成部分,就是確定每一時刻當前粒子的運動狀態,包括該時刻粒子的位置、速度和生命值等各種屬性值。而這些屬性又是由上一幀屬性狀態和運動的規律決定的。粒子下一幀的位置為:


3 位置可控煙花模擬
 OpenGL應用工具包GLUT中封裝有鼠標消息注冊回調函數,利用此函數可以很好地控制煙花的位置,從而進一步增強煙花模擬的可控性和靈活性。
 鼠標的按下、松開或移動等操作都可以產生相應的鼠標消息,這些消息在應用程序開發中出現,常常需要處理。GLUT對這幾種常用的鼠標消息進行了封裝,glutMontionFunc(void(*func)(int button,int state,int x,int y))可以實現對鼠標左鍵、右鍵或中鍵的按下、松開等操作的消息響應。其中,button是左鍵、右鍵和中鍵的標志,state是按下、松開的標志。
 用鼠標單擊屏幕,系統把單擊的位置傳送給鼠標消息注冊回調函數glutMontionFunc(mouseFunc),通過一系列的坐標轉換生成最終需要的OpenGL坐標,然后煙花在此位置上發生爆炸。主要實現的代碼如下:
GLdouble w [3]={0};//最終的OpenGL坐標
GLint viewport[4];
    GLdouble mv[16],proj[16];
GLfloat winX,winY,winZ;//視景體坐標及深度坐標
glPushMatrix();
glGetIntegerv(GL_VIEWPORT,viewport);    
//取得當前視口的狀態值
glGetDoublev(GL_MODELVIEW_MATRIX,mv);
//取得當前模型視點的最大值
glGetDoublev(GL_PROJECTION_MATRIX,proj);
//取得當前投影的最大值
glPopMatrix();
winX=x;
winY=viewport[3]-y;
glReadPixels(winX,winY,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winZ);
gluUnProject(winX,winY,winZ,mv,proj,viewport,w,w+1,w+2);//取得最終的OpenGL坐標
4 音頻與煙花爆炸同步
 OpenGL本身不支持音頻,本文使用了Win32的API函數庫中的PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound)函數實現音頻與煙花爆炸的同步。引入windows.h頭文件(#include<windows.h>),后面加上如下代碼:
 #include<mmsystem.h>
 #pragma comment(lib,"WINMM.LIB")
 PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound)只能實現WAV格式的文件,其他音頻文件可以通過別的軟件進行剪切并轉化為WAV格式。參數pszSound是指定了要播放聲音的字符串,本實驗中設為WAVE文件的名字;參數fdwSound是標志的組合,為實現同步和引入音頻文件,將其設為SND_FILENAME| SND_SYNC。主要實現的代碼如下:
 if(button==GLUT_LEFT_BUTTON&&action==GLUT_DOWN)
 {
 獲取鼠標點擊的位置
 繪制煙花的代碼
 PlaySound("煙花聲音.wav",NULL,SND_ASYNC|SND_FILENAME);
 }
5 實驗結果評估與分析
 實驗利用粒子系統對煙花生成的過程進行仿真,應用了OpenGL的紋理映射、色彩混合、顯示列表、加入背景圖片、插入音頻和控制位置等技術,結果如圖3所示。圖3是運用可以截取鼠標位置的紅蜻蜓截圖工具截取的實驗結果圖片,從圖中可以清晰地看見在鼠標的位置上煙花發生了爆炸。

 運用粒子系統對不規則模糊物體進行模擬是一個有效的方法。本實驗從系統的實時性、簡單性、靈活性和逼真性角度出發實現了煙花模型模擬,采用了紋理映射和顯示列表技術,提高了系統的實時性;采用了色彩融合技術,增強了系統的逼真性;加入了背景圖,提高了模擬的真實感;通過提取鼠標位置,實現了對煙花爆炸位置的控制,增強了系統的靈活性;加入了音頻技術,實現煙花爆炸和聲音的同步,增強了系統的沉浸感。
參考文獻
[1] REEVES W T. Particle systems-a technique for modeling a class of fuzzy objects[J].  Computer Graphics,1983,17(3):359-376.    
[2] 王曉娟.基于粒子系統動態煙花的模擬[J].青海大學學報,2009(4):29-32.
[3] 肖何,何明耘,白忠建.OpenGL中基于粒子系統的噴泉模擬實現[J].計算機仿真,2007(12):201-204.
[4] SHREINER D.OpenGL編程指南[M].李軍,徐波,譯.北京:機械工業出版社,2010.
[5] 葛芳,張成,韋穗,等.基于粒子系統的煙花動畫設計[J].計算機技術與發展,2010,20(8):180-183.
[6] 汪繼文,胡文平,金余鋒.基于粒子系統的8字動態煙花仿真[J].計算機仿真,2010,27(10):211-214.
[7] 丁紀云,陳利平,李思昆.基于OpenGL的煙花動態模擬方法的研究與實現[J].計算機工程,2002,20(4):233-250.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲天堂网在线观看| 久久综合福利| 国产精品黄页免费高清在线观看| 洋洋av久久久久久久一区| 一个人看的www久久| 黄色工厂这里只有精品| 国产老女人精品毛片久久| 99精品国产在热久久婷婷| 亚洲午夜国产一区99re久久| 欧美日韩高清免费| 亚洲国产精品久久人人爱蜜臀| 欧美影院成年免费版| 裸体丰满少妇做受久久99精品| 欧美freesex8一10精品| 欧美一区二区三区在线| 99国产精品久久久久老师| 亚洲激情六月丁香| 亚洲丰满少妇videoshd| 欧美国产一区在线| 韩日精品视频一区| 狂野欧美性猛交xxxx巴西| 久久久久久999| 欧美日本视频在线| 久久精品2019中文字幕| 亚洲精品视频免费观看| 欧美日韩在线播放一区二区| 亚洲国产女人aaa毛片在线| 国产无遮挡一区二区三区毛片日本| 国产精品美腿一区在线看| 麻豆久久久9性大片| 欧美欧美午夜aⅴ在线观看| 久久久久久久一区| 欧美中日韩免费视频| 亚洲国产福利在线| 精品成人在线观看| 亚洲精品裸体| 欧美中文字幕在线视频| 蜜臀91精品一区二区三区| 欧美午夜激情在线| 国产欧美一区二区精品仙草咪| 亚洲欧美日韩在线不卡| 好看的av在线不卡观看| 裸体一区二区| 亚洲欧美日韩一区在线| 欧美四级电影网站| 国产欧美va欧美va香蕉在| 老司机午夜精品| 亚洲综合久久久久| 亚洲国产成人午夜在线一区| 狠狠入ady亚洲精品经典电影| 亚洲人成在线观看网站高清| 国外成人在线| 免费毛片一区二区三区久久久| 亚洲欧美日韩国产综合| 欧美日韩成人综合天天影院| 久久精品国产69国产精品亚洲| 亚洲激情视频在线播放| 鲁鲁狠狠狠7777一区二区| 亚洲视频综合| 国产精品午夜电影| 久久久久久久综合日本| 亚洲一区二区三区高清| 国产精品99久久不卡二区| 亚洲精品日韩久久| 亚洲人成欧美中文字幕| 毛片基地黄久久久久久天堂| 亚洲精品欧美日韩专区| 欧美电影打屁股sp| 国产私拍一区| 欧美日韩精品在线播放| 国产日韩精品电影| 黑丝一区二区三区| 久久成年人视频| 亚洲精品在线看| 亚洲一区二区三区免费观看| 亚洲日本黄色| 蜜月aⅴ免费一区二区三区| 久久综合狠狠综合久久激情| 久久人人看视频| 欧美精品 国产精品| 亚洲人成亚洲人成在线观看图片| 欧美激情精品久久久六区热门| 欧美日韩国产一区| 国产综合第一页| 久久久91精品国产一区二区三区| 欧美v国产在线一区二区三区| 国产一区二区按摩在线观看| 99re66热这里只有精品3直播| 久久裸体艺术| 欧美日韩国产一区精品一区| 国内精品久久国产| 国产夜色精品一区二区av| 国产亚洲精品综合一区91| 欧美日韩国产页| 欧美日韩国产精品一区| 国产精品青草久久久久福利99| 9久草视频在线视频精品| 99精品国产在热久久| 亚洲毛片在线观看.| 一区二区三区在线视频免费观看| 国产欧美在线观看| 亚洲精品乱码久久久久久蜜桃91| 国产欧美日韩精品丝袜高跟鞋| 欧美激情乱人伦| 99精品免费网| 99国产精品国产精品久久| 正在播放欧美一区| 国产视频在线一区二区| 亚洲欧美电影在线观看| 欧美伦理91i| 亚洲裸体俱乐部裸体舞表演av| 亚洲国产精品电影| 99这里只有精品| 一区二区三区四区蜜桃| 欧美三级精品| 亚洲日韩第九十九页| 美女999久久久精品视频| 久久久久国色av免费看影院| 在线看国产一区| 国产精品久久久久久久一区探花| 亚洲国产日韩一区二区| 国产精品一国产精品k频道56| 久久综合伊人| 日韩一级网站| 精品成人一区二区三区| 亚洲电影免费观看高清完整版在线| 欧美精品一区三区在线观看| 国产欧美一区二区在线观看| 国产精品免费久久久久久| 欧美三级免费| 女人色偷偷aa久久天堂| 日韩午夜中文字幕| 黑丝一区二区三区| 欧美精品九九| 亚洲精品精选| 欧美日韩三级视频| 亚洲视频axxx| 久久久久久久网站| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲成人资源| 中日韩在线视频| 欧美午夜精品一区| 国产一区二区成人| 欧美一区在线直播| 欧美三级黄美女| 国内精品嫩模av私拍在线观看| 韩国视频理论视频久久| 亚洲狼人精品一区二区三区| 欧美日韩在线免费观看| 亚洲精品自在久久| 欧美成年人在线观看| 午夜精品久久久久影视| 亚洲国产二区| 国产农村妇女精品一区二区| 在线观看视频一区二区| 精品成人国产在线观看男人呻吟| 欧美成人一区二区三区| 欧美天堂亚洲电影院在线观看| 一区二区三区高清不卡| 日韩亚洲一区在线播放| 日韩亚洲一区在线播放| 亚洲精品视频一区二区三区| 欧美精品成人91久久久久久久| 欧美精品一区二区久久婷婷| 日韩午夜激情电影| 国产一区二区成人| 日韩亚洲视频| 伊甸园精品99久久久久久| 亚洲欧美日韩在线播放| 性欧美xxxx视频在线观看| 国产精品免费看久久久香蕉| 国产精品电影网站| 好吊日精品视频| 嫩模写真一区二区三区三州| 国产日本欧美一区二区三区在线| 欧美日韩国产首页在线观看| 伊甸园精品99久久久久久| 国产一区日韩二区欧美三区| 欧美成人一区二免费视频软件| 亚洲精品中文字幕女同| 在线观看日韩av| 午夜精品福利视频| 欧美电影资源| 国产精品男gay被猛男狂揉视频| 正在播放欧美一区| 国产亚洲人成a一在线v站| 国产精品日韩一区| 欧美日韩理论| 欧美国产日韩一区二区在线观看| 欧美乱人伦中文字幕在线| 亚洲天堂成人在线观看| 久久精品国产第一区二区三区最新章节| 亚洲乱码一区二区| 国产一区二区三区久久久| 欧美日韩麻豆| 欧美日韩美女在线观看| 日韩亚洲一区在线播放| 亚洲精品欧洲精品| 伊人久久婷婷| 久久精品夜色噜噜亚洲aⅴ| 久久精品一区二区三区中文字幕| 欧美好吊妞视频| 亚洲资源av| 欧美金8天国| 国产午夜精品一区二区三区欧美| 老色鬼久久亚洲一区二区| aⅴ色国产欧美| 国产精品海角社区在线观看| 91久久精品国产91性色| 亚洲欧美综合一区| 欧美gay视频| 日韩天堂在线观看| 欧美一级在线亚洲天堂| 国产精品每日更新在线播放网址| 欧美亚州在线观看| 日韩午夜激情| 欧美精品亚洲一区二区在线播放| 性高湖久久久久久久久| 欧美国产第二页| 在线观看欧美成人| 国产一区二区三区在线观看视频| 亚洲精品自在在线观看| 欧美精品一区二区精品网| 日韩午夜电影在线观看| 欧美成人免费大片| 欧美日韩1区2区3区| 亚洲视频欧洲视频| 国产精品成人免费精品自在线观看| 亚洲日本一区二区| 欧美日韩视频一区二区| 99ri日韩精品视频| 国产一区二区三区在线观看网站| 欧美视频福利| 亚洲欧美一区二区三区在线| 国产精品制服诱惑| 91久久国产综合久久蜜月精品| 国产精品av久久久久久麻豆网| 午夜影视日本亚洲欧洲精品| 在线一区二区日韩| 久久久噜噜噜久久久| 亚洲国产成人91精品| 久久精品一区二区国产| 好吊色欧美一区二区三区四区| 日韩视频中文字幕| 国产欧美日韩一区二区三区| 国产精品久线观看视频| 国产午夜亚洲精品理论片色戒| 男同欧美伦乱| 欧美国产三级| 亚洲精品影院在线观看| 欧美午夜不卡视频| 日韩一区二区精品在线观看| 黄网动漫久久久| 欧美精品日韩一区| 亚洲校园激情| 影音先锋日韩资源| 亚洲第一综合天堂另类专| 国产精品毛片一区二区三区| 亚洲午夜在线| 国产精品中文字幕在线观看| 国产精品亚洲第一区在线暖暖韩国| 国产精品99久久久久久www| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产中文字幕在线观看| 国产视频精品免费播放| 久久精品视频播放| 国产精品自在线| 亚洲精品免费一区二区三区| 免费中文字幕日韩欧美| 欧美激情综合五月色丁香小说| 精品成人一区二区三区四区| 亚洲无限乱码一二三四麻| 在线欧美日韩国产| 欧美日产国产成人免费图片| 国产精品专区第二| 国产日韩欧美一区二区| 国产精品欧美一区二区三区奶水| 在线观看国产欧美| 国产亚洲视频在线观看| 精品成人一区| 欧美另类变人与禽xxxxx| 亚洲精品亚洲人成人网| 国产免费亚洲高清| 亚洲精品美女久久久久| 99ri日韩精品视频| 激情久久一区| 在线免费观看一区二区三区| 欧美日本精品一区二区三区| 国产亚洲精品福利| 狠狠88综合久久久久综合网| 欧美片在线观看| 欧美亚洲成人免费| 国产精品一区视频| 欧美午夜影院| 欧美在线观看天堂一区二区三区| 国产精品高精视频免费| 亚洲黄色影片| 午夜精品美女自拍福到在线| 欧美日韩成人免费| 亚洲一区国产一区| 欧美亚一区二区| 99国产精品久久久久久久| 一本高清dvd不卡在线观看| 欧美日本国产在线| 免费黄网站欧美| 国产精品99久久久久久有的能看| 欧美精品一区视频| 亚洲一区二区三区精品视频| 欧美日韩精品二区第二页| 国外成人在线视频网站| 韩国成人理伦片免费播放| 亚洲日本一区二区三区| 欧美精品在线视频观看| 亚洲少妇自拍| 国产日韩欧美另类| 亚洲国产欧美日韩精品| 欧美精品亚洲一区二区在线播放| 免费日韩av电影| 久久久久91| 午夜一区二区三区不卡视频| 国产亚洲va综合人人澡精品| 亚洲三级视频在线观看| 永久久久久久| 欧美成人综合一区| 午夜精品一区二区三区四区| 久久婷婷国产综合尤物精品| 女主播福利一区| 国产亚洲精品v|