【正文】
阻尼運動。以下是幾種常見的運動形式:(1) 直線運動。域定義了矩形、球體、園盤、圓柱等一些形狀,使行為函數(shù)、屬性函數(shù)能在域范圍內(nèi)做定義?;顒恿斜眍愃婆c OpenGL 中的顯示列表,可以把一系列操作都封裝在一個活動列表中,需要的時候調(diào)用相應的活動列表。用戶可以定義多個具有不同行為的粒子組分別進行調(diào)用,但在某一時刻,只能有一個粒子組是活動的。該系統(tǒng)共分為五個部分:粒子組、活動、活動列表、屬性和域。湖 南 大 學 畢 業(yè) 設 計 (論 文 ) 第 10 頁湖南大學軟件學院3. 粒子系統(tǒng)的設計 Particle System API為了方便粒子系統(tǒng)的運用,McAllister 以 OpenGL 為基礎(chǔ),利用 C++開發(fā)了一套Particle System API。例如,繼承時,應用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理??蚣芑蛘哂善浔旧硖幚硎录?,不依賴程序員的代碼;或者調(diào)用程序員的代碼來處理應用程序特定的事件。同時,MFC 支持對底層 API 的直接調(diào)用。雖然,這些內(nèi)部處理對程序員來說是透明的,但是,懂得和理解 MFC 內(nèi)部機制有助于寫出功能靈活而強大的程序。例如,為了實現(xiàn)消息映射機制,MFC 編程框架必須要保證首先得到消息,然后按既定的方法進行處理。這些模板都采用了以文檔視為中心的思想,每一個模板都包含一組特定的類。針對不同的應用和目的,程序員采用不同的模板。如前所述,MFC 實現(xiàn)了對應用程序概念的封裝,把類、類的繼承、動態(tài)約束、類的關(guān)系和相互作用等封裝起來。程序員繼承基類的同時,把自己實現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入 MFC 的編程框架。于是,MFC 建立了消息映射機制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動態(tài)約束問題。例如,CWnd 封裝 Windows 窗口對象時,每一條Windows 消息對應一個成員函數(shù),這些成員函數(shù)為派生類所繼承。MFC 以“C++”為基礎(chǔ),自然支持虛擬函數(shù)和動態(tài)約束。這些對象包括以下種類:窗口對象,基類是 CWnd;應用程序?qū)ο?,基類?CwinThread;文檔對象,基類是 Cdocument,等等。MFC 中,任何可以處理消息的類都從 CCmdTarget 派生。所有從 CObject 派生的類都將具備或者可以具備 CObject 所擁有的特性。CObject 是 MFC 的根類,絕大多數(shù) MFC類是其派生的,包括 CCmdTarget。MFC 抽象出眾多類的共同特性,設計出一些基類作為實現(xiàn)其他類的基礎(chǔ)。MFC 類庫是 C++類庫。Microsoft Visual C++提供了相應的工具來完成這個工作:AppWizard 可以用來生成初步的框架文件(代碼和資源等) ;資源編輯器用于幫助直觀地設計用戶接口;ClassWizard 用來協(xié)助添加代碼到框架文件;最后編譯,則通過類庫實現(xiàn)了應用程序特定的邏輯。MFC(Microsoft Foundation Class Library)中的各種類結(jié)合起來構(gòu)成了一個應用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立 Windows 下的應用程序,這是一種相對 SDK 來說更為簡單的方法。GLUT 的子程序的前綴使用”glut”。GLUT代表 OpenGL 應用工具包( OpenGL Utility Toolkit) ,是一個與窗口系統(tǒng)無關(guān)的工具包。這類函數(shù)以”aux” 作為前綴。實用函數(shù)庫是比核心庫更高一層的函數(shù)庫,它提供四十多個函數(shù),這些函數(shù)都以”glu”為前綴。核心庫中包含了 OpenGL 最基本的命令函數(shù)。作為一種 API,OpenGL 遵循 C 語言的調(diào)用約定。OpenGL 不是一種編程語言,而是一種 API(Application Programming Interface,應用程序編程接口) 。OpenGL 是一套的計算機圖形處理系統(tǒng),是圖形硬件的軟件接口,GL 代表圖形庫(Graphics Library) 。OpenGL 就是支持這種轉(zhuǎn)換的程序庫,它源于 SGI 公司為其圖形工作站開發(fā)的 IRIS GL,在跨平臺移植過程中發(fā)展成為 OpenGL。通過分別把兩個向量的各個分量相加,可以得到向量之和,如公式(23)所示:u+v=(ux+ux,uy+uy,uz+uz) (23) OpenGLOpenGL 是 OpenGraphicsLib 的縮寫,是一套三維圖形處理庫,也是該領(lǐng)域的工業(yè)標準。=u/‖u‖={ux/‖u‖,uy/‖u‖,uz/‖u‖} (22)其中,標準化向量是讓向量的大小等于 1,即被叫作單位向量。在幾何學上,有同樣方向和長度的兩個向量相等;在數(shù)學上,有同樣維數(shù)和分量的向量相等。如圖 1:湖 南 大 學 畢 業(yè) 設 計 (論 文 ) 第 6 頁湖南大學軟件學院圖 21 空間坐標系其次介紹一下向量:向量就是既有大小又有方向的量。左手坐標系( LHS)假設 XY 為紙張上或屏幕上的水平軸和垂直軸,正 Z 軸指向紙內(nèi)或屏幕內(nèi)。這三個平面將整個空間分成 8 個子空間,在 3D 笛卡爾坐標系中共有 8 個卦限。要定義空間中的一個點 P,需要三個坐標: X,Y,Z,寫成P(X, Y, Z)。(1)拋物運動的加速度是 g=*s(2)拋物運動的距離公式是 Sx=Vxt+gt*t/2 Sy=Vyt+gt*t/2 Sz=Vzt 數(shù)學知識本課題運用了數(shù)學知識坐標系統(tǒng)——空間坐標系和向量知識。 物理學知識本課題運用了物理學中的拋物落體運動的知識。定義水滴的坐標,水滴根據(jù)坐標物理學的變化進行拋物變化,然后形成一個噴泉模型。就拿本課題來介紹,噴泉的模擬就是模擬噴泉的樣子,噴泉是一個拋物線,怎樣去模擬呢?首先必須清楚噴泉中水滴是怎么運動的,這就要用到物理學的知識了——初速度、運動方向和所受到的力決定其運動線路。本課題用粒子系統(tǒng)對噴泉進行模擬,是為了讓更多人的了解粒子系統(tǒng),對粒子系統(tǒng)的重要性有個初步的認識,并為大有致力于粒子系統(tǒng)的同學有機會更深入的了解。具體要求如下:1. 理解圖形學中粒子系統(tǒng)的原理和作用;2. 利用 OpenGL 實現(xiàn)粒子系統(tǒng);3. 模擬一個正在噴水的噴泉,考慮水滴的材質(zhì)和光照屬性,或選擇較好的貼圖;4. 噴泉的水流要連貫,水滴成流,符合現(xiàn)實情況,有曲線的噴出下落路線;5. 設計并繪制一個場景,使得場景比較逼真。另外,利用 3DS MAX 制作的煙火、浪花,其效果還不太理想,需要將粒子系統(tǒng)與其他方法想結(jié)合,開發(fā)出更新更好的算發(fā),這些都是今后的研究方向之一。但迄今為止,所考慮的都是單個粒子的運動,對物體的模型也作了許多假設??偠灾?,粒子系統(tǒng)為如何模擬具有復雜結(jié)構(gòu)及復雜運動的物體提供了一個簡潔、抽象的描述。例如,徐迎慶等人利用粒子系統(tǒng)模擬了水面濺起的水沫以及流水與石頭碰撞后產(chǎn)生的水花等效果;宋萬壽等人在 IBM PC386 機上開發(fā)了基于粒子系統(tǒng)方法的焰火及樹木模擬實驗系統(tǒng)等??傊?,粒子系統(tǒng)能夠創(chuàng)建各種動畫效果。David E. Breen 利用“交互粒子”模擬了布匹、織物。Milleramp。Reed 等人用粒子系統(tǒng)成果的模擬了閃電。Fournier ,提出了浪花的產(chǎn)生條件——粒子運動速度和海流曲面?zhèn)鞑ニ俣戎g的差異要超過一定的條件,即粒子運動速度與海浪曲面?zhèn)鞑ニ俣戎g的差異要超過一定的閥值,否則產(chǎn)生泡沫。1985 年 Reeves W. Blau 發(fā)展了粒子系統(tǒng),他們用“volume filling”基本單元模擬生成那種隨時間改變形狀,但又基本保持不變的實體,如隨風飄動的花草樹葉。其次,坐標系的選定(即視角)也有一定的關(guān)系,視角不同,看到的效果自然不一樣了。粒子系統(tǒng)應用的關(guān)鍵在于如何描述粒子的運動軌跡,也就是構(gòu)造粒子的運動函數(shù)。粒子系統(tǒng)采用隨機過程來控制粒子的產(chǎn)生數(shù)量,確定新產(chǎn)生粒子的一些初始隨機屬性,如初始運動方向、初始大小、初始顏色、初始透明度、初始形狀以及生存期等,并在粒子的運動和生長過程中隨機地改變這些屬性。粒子系統(tǒng)是一個有“生命”的系統(tǒng),因此不象湖 南 大 學 畢 業(yè) 設 計 (論 文 ) 第 2 頁湖南大學軟件學院傳統(tǒng)方法那樣只能生成瞬時靜態(tài)的景物畫面,而是可以產(chǎn)生一系列運動進化的畫面,這使得模擬動態(tài)的自然景物成為可能。粒子系統(tǒng)的基本思想是:采用許多形狀簡單的微小粒子作為基本元素,用它們來表示不規(guī)則模糊物體。不怕做不到,就怕想不到。 粒子系統(tǒng)的背景及其介紹粒子系統(tǒng)到底是什么?所謂的粒子系統(tǒng),就是將人們看到的物體運動和自然現(xiàn)象,用一系列運動的粒子來描述,再將這些粒子運動的軌跡映射到顯示屏上,在顯示屏上看到的就是物體運動和自然現(xiàn)象的模擬效果了。利用這套 API 可以很方便地對運動的物體進行動態(tài)模擬,首先將粒子的活動進行簡單的分析和描述,然后對粒子系統(tǒng)進行場景渲染,結(jié)合OpenGL 提供的一些功能如紋理映射效果,可以模擬很多種自然景物。在模擬諸如云、煙、火等不規(guī)則模糊物體時,粒子系統(tǒng)是迄今為止被認為是最成功的一種算法。比較而言,過程動畫方法比較簡單、計算效率較高,但效果比較單調(diào),適用范圍比較狹窄。第二種:從物體運動的物理原理出發(fā),一般是求解一組力學方程,得到質(zhì)點在各個時刻的狀態(tài)。常見的景物模擬方法一般有以下兩種:第一種:根據(jù)數(shù)學函數(shù)構(gòu)造出景物外型,然后變換時間函數(shù) t。關(guān)鍵詞:粒子系統(tǒng),噴泉模擬,特效湖 南 大 學 畢 業(yè) 設 計 (論 文 ) 第 II 頁湖南大學軟件學院The Fountain Simulation Based on OpenGL Particle SystemAuthor: Feng LiangTutor: Sheng YuxiangAbstractWith the puter simulation technology continues to improve, people is demanding increasingly on the simulation of real things, the importanctof Simulation is prominenting increasingly, especially in 3D games, military drills and simulations, and so on. And seeking an the accurate mathematical model description of a variety of landscape of in the objective world,and realistic reproduce these phenomena and landscape, is an important research topic of the graphics. The topic from analoging the nature of the area with the Particles system of the graphic introductions the simulation of the real things. Many nature difficult to describe the geometric models, such as smoke, plants, water waves, flame, and so on, the features of particle system simulation model goes beyond the geometric constraints, can describes plex nature by a simple model.This topic designed the fountain model based on the OpenGL particle system, discussed detailly the properties of particles in the model and its changes, achiev