湖北工業(yè)大學(xué) 劉宏
基于OpenGL的粒子系統(tǒng)的研究與實現(xiàn)
湖北工業(yè)大學(xué) 劉宏
本文設(shè)計了基于OpenGL粒子系統(tǒng)的噴泉模型,詳細(xì)討論了模型中粒子的屬性及其變化,實現(xiàn)了具有較強(qiáng)真實感的動態(tài)變化和拋物變化等噴泉特征,采用了紋理映射和視線跟蹤技術(shù)進(jìn)行三維噴泉渲染;同時,采用Line方式取代傳統(tǒng)的 Point方式渲染粒子實現(xiàn)噴泉模擬。該方式模擬噴泉比較真實,速度快,在普通的微機(jī)上可以得到令人滿意的效果。
粒子系統(tǒng);噴泉
隨著計算機(jī)仿真技術(shù)的不斷提高,人們對真實事物的模擬要求越來越高,模擬技術(shù)的重要性越來越突出,尤其在3D游戲、軍事演習(xí)和仿真實驗等方面。而尋求能準(zhǔn)確地描述客觀世界中各種現(xiàn)象與景觀的數(shù)學(xué)模型,并逼真地再現(xiàn)這些現(xiàn)象與景觀,是計算機(jī)圖形學(xué)的一個重要研究課題。
粒子系統(tǒng)[1]到底是什么?所謂的粒子系統(tǒng),就是將人們看到的物體運動和自然現(xiàn)象,用一系列運動的粒子來描述,再將這些粒子運動的軌跡映射到顯示屏上,在顯示屏上看到的就是物體運動和自然現(xiàn)象的模擬效果了。
利用粒子系統(tǒng),可以在屏幕中表現(xiàn)諸多的特殊效果,如:焰火、火苗、落葉、雪花飛舞等。不怕做不到,就怕想不到。只要你的想象力足夠豐富,就可以創(chuàng)造出意想不到的奇跡來。
在現(xiàn)實世界中,所有的物體都具有三維特征,但計算機(jī)本身只能處理數(shù)字,顯示二維的圖形,將三維物體及二維數(shù)據(jù)聯(lián)系在一起的唯一紐帶就是坐標(biāo)。
為了使被顯示的三維物體數(shù)字化,要在被顯示的物體所在的空間中定義一個坐標(biāo)系。這個坐標(biāo)系的長度單位和坐標(biāo)軸的方向要適合對被顯示物體的描述,這個坐標(biāo)系稱為世界坐標(biāo)系。世界坐標(biāo)系是始終固定不變的。OpenGL還定義了局部坐標(biāo)系的概念,所謂局部坐標(biāo)系,也就是坐標(biāo)系以物體的中心為坐標(biāo)原點,物體的旋轉(zhuǎn)或平移等操作都是圍繞局部坐標(biāo)系進(jìn)行的,這時,當(dāng)物體模型進(jìn)行旋轉(zhuǎn)或平移等操作時,局部坐標(biāo)系也執(zhí)行相應(yīng)的旋轉(zhuǎn)或平移操作。需要注意的是,如果對物體模型進(jìn)行縮放操作,則局部坐標(biāo)系也要進(jìn)行相應(yīng)的縮放,如果縮放比例在各坐標(biāo)軸上不同,那么再經(jīng)過旋轉(zhuǎn)操作后,局部坐標(biāo)軸之間可能不再相互垂直。無論是在世界坐標(biāo)系中進(jìn)行轉(zhuǎn)換還是在局部坐標(biāo)系中進(jìn)行轉(zhuǎn)換,程序代碼是相同的,只是不同的坐標(biāo)系考慮的轉(zhuǎn)換方式不同罷了。計算機(jī)對數(shù)字化的顯示物體作了加工處理后,要在圖形顯示器上顯示,這就要在圖形顯示器屏幕上定義一個二維直角坐標(biāo)系,這個坐標(biāo)系稱為屏幕坐標(biāo)系。這個坐標(biāo)系坐標(biāo)軸的方向通常取成平行于屏幕的邊緣,坐標(biāo)原點取在左下角,長度單位常取成一個像素。
為了方便粒子系統(tǒng)的運用,McAllister以O(shè)penGL為基礎(chǔ),利用C++開發(fā)了一套ParticleSystemAPI。這套API具有以下優(yōu)點:運行高效、運用靈活、參數(shù)獨立、升級方便、硬件無關(guān)、學(xué)習(xí)簡單等。
該系統(tǒng)共分為5個部分:粒子組、活動、活動列表、屬性和域。
所有的粒子都存在粒子組中,粒子組是一組具有相同作用力的粒子集合。用戶可以定義多個具有不同行為的粒子組分別進(jìn)行調(diào)用,但在某一時刻,只能有一個粒子組是活動的。
下面我們將介紹基于OpenGL的粒子系統(tǒng)的開發(fā)環(huán)境:本系統(tǒng)是在visualC++6.0下實現(xiàn)的,采用OpenGL技術(shù),并且是基于MFC框架下實現(xiàn)的。
本文闡述了基于OpenGl的粒子系統(tǒng)的模擬實現(xiàn),首先介紹了圖形學(xué)的發(fā)展以及OpenGL概述,通過對OpenGL場景坐標(biāo)系和投影基礎(chǔ)知識的介紹,讓我們對圖形學(xué)和OpenGL有了一個宏觀全面的認(rèn)識和理解,在理解的基礎(chǔ)上,我們設(shè)計并實現(xiàn)了一個基于OpenGL的噴泉粒子系統(tǒng)模型,在設(shè)計過程中,詳細(xì)地給出了粒子系統(tǒng)的算法設(shè)計、粒子的初始化、粒子的運動軌跡、粒子的消亡以及粒子的生成,并分析了紋理映射技術(shù)在粒子系統(tǒng)中的最重要作用。
[1]Reeves,William T..Particle Systems--Technique for Modeling a Class of Fuzzy Objects[A].SIGGRAPH Proceeding[C],1983.
[2]Karl Sims.Particle Animation and Rendering Using Data Parallel Computation[J].Computer Graphics,24(4):405-413,1990.
[3]IanBuck.Data Parallel Computing on Graphics Hardware.Stanford University,2003.
[4]Lutz Latta.Building a Million Particle System[A].Game Developers Conference[C],2004.
2017-10-10)