湖北工業大學 劉宏
基于OpenGL的粒子系統的研究與實現
湖北工業大學 劉宏
本文設計了基于OpenGL粒子系統的噴泉模型,詳細討論了模型中粒子的屬性及其變化,實現了具有較強真實感的動態變化和拋物變化等噴泉特征,采用了紋理映射和視線跟蹤技術進行三維噴泉渲染;同時,采用Line方式取代傳統的 Point方式渲染粒子實現噴泉模擬。該方式模擬噴泉比較真實,速度快,在普通的微機上可以得到令人滿意的效果。
粒子系統;噴泉
隨著計算機仿真技術的不斷提高,人們對真實事物的模擬要求越來越高,模擬技術的重要性越來越突出,尤其在3D游戲、軍事演習和仿真實驗等方面。而尋求能準確地描述客觀世界中各種現象與景觀的數學模型,并逼真地再現這些現象與景觀,是計算機圖形學的一個重要研究課題。
粒子系統[1]到底是什么?所謂的粒子系統,就是將人們看到的物體運動和自然現象,用一系列運動的粒子來描述,再將這些粒子運動的軌跡映射到顯示屏上,在顯示屏上看到的就是物體運動和自然現象的模擬效果了。
利用粒子系統,可以在屏幕中表現諸多的特殊效果,如:焰火、火苗、落葉、雪花飛舞等。不怕做不到,就怕想不到。只要你的想象力足夠豐富,就可以創造出意想不到的奇跡來。
在現實世界中,所有的物體都具有三維特征,但計算機本身只能處理數字,顯示二維的圖形,將三維物體及二維數據聯系在一起的唯一紐帶就是坐標。
為了使被顯示的三維物體數字化,要在被顯示的物體所在的空間中定義一個坐標系。這個坐標系的長度單位和坐標軸的方向要適合對被顯示物體的描述,這個坐標系稱為世界坐標系。世界坐標系是始終固定不變的。OpenGL還定義了局部坐標系的概念,所謂局部坐標系,也就是坐標系以物體的中心為坐標原點,物體的旋轉或平移等操作都是圍繞局部坐標系進行的,這時,當物體模型進行旋轉或平移等操作時,局部坐標系也執行相應的旋轉或平移操作。需要注意的是,如果對物體模型進行縮放操作,則局部坐標系也要進行相應的縮放,如果縮放比例在各坐標軸上不同,那么再經過旋轉操作后,局部坐標軸之間可能不再相互垂直。無論是在世界坐標系中進行轉換還是在局部坐標系中進行轉換,程序代碼是相同的,只是不同的坐標系考慮的轉換方式不同罷了。計算機對數字化的顯示物體作了加工處理后,要在圖形顯示器上顯示,這就要在圖形顯示器屏幕上定義一個二維直角坐標系,這個坐標系稱為屏幕坐標系。這個坐標系坐標軸的方向通常取成平行于屏幕的邊緣,坐標原點取在左下角,長度單位常取成一個像素。
為了方便粒子系統的運用,McAllister以OpenGL為基礎,利用C++開發了一套ParticleSystemAPI。這套API具有以下優點:運行高效、運用靈活、參數獨立、升級方便、硬件無關、學習簡單等。
該系統共分為5個部分:粒子組、活動、活動列表、屬性和域。
所有的粒子都存在粒子組中,粒子組是一組具有相同作用力的粒子集合。用戶可以定義多個具有不同行為的粒子組分別進行調用,但在某一時刻,只能有一個粒子組是活動的。
下面我們將介紹基于OpenGL的粒子系統的開發環境:本系統是在visualC++6.0下實現的,采用OpenGL技術,并且是基于MFC框架下實現的。
本文闡述了基于OpenGl的粒子系統的模擬實現,首先介紹了圖形學的發展以及OpenGL概述,通過對OpenGL場景坐標系和投影基礎知識的介紹,讓我們對圖形學和OpenGL有了一個宏觀全面的認識和理解,在理解的基礎上,我們設計并實現了一個基于OpenGL的噴泉粒子系統模型,在設計過程中,詳細地給出了粒子系統的算法設計、粒子的初始化、粒子的運動軌跡、粒子的消亡以及粒子的生成,并分析了紋理映射技術在粒子系統中的最重要作用。
[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)