版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
畢業(yè)論文第2頁畢業(yè)論文第1頁目錄第1章緒論 21.1課題背景知識介紹 21.1.1粒子系統(tǒng)介紹 21.1.2粒子系統(tǒng)原理 31.1.3粒子系統(tǒng)的特點 31.2本文的研究工作與內(nèi)容安排 31.2.1本文的研究工作 3第2章基于粒子系統(tǒng)技術的研究現(xiàn)狀 52.1國外研究現(xiàn)狀 52.2國內(nèi)研究現(xiàn)狀 52.3課題研究的意義 62.3.1粒子系統(tǒng)應用價值 62.3.3粒子系統(tǒng)技術研究意義 6第3章粒子系統(tǒng)的技術原理 63.1粒子系統(tǒng)的技術原理 63.1.1粒子系統(tǒng)的基本思想 63.1.2粒子的屬性 83.1.3粒子的產(chǎn)生 93.1.4粒子的更新 103.1.5粒子的消亡 113.2面向?qū)ο蟮牧W酉到y(tǒng)設計 113.2.1粒子系統(tǒng)的基本模型 123.2.2改進粒子系統(tǒng)模型 14第4章開發(fā)工具與開發(fā)環(huán)境介紹 174.1Virtools開發(fā)環(huán)境介紹 174.1.1VirtoolsDev簡介 174.1.2Virtools操作界面介紹 194.2Virtools模組介紹 204.2.1物理屬性模塊(VirtoolsPhysicsPackforDev) 214.2.2人工智能模塊(VirtoolsAIPackforDev) 214.2.3Xbox開發(fā)模塊(VirtoolsXboxKitforDev) 214.2.4網(wǎng)絡服務器模塊(VirtoolsServer) 224.2.5模型構建與控制 22第5章粒子系統(tǒng)特效的實現(xiàn) 235.1粒子系統(tǒng)的應用簡介 235.2粒子系統(tǒng)實例 245.2.1燈光的制作 245.2.2粒子系統(tǒng)模擬火焰的生成 255.2.3滾滾濃煙 265.2.4煙花的制作 275.2.5噴泉可視化效果的制作 285.3漫游系統(tǒng)中粒子系統(tǒng)與場景的合成 295.4視角相機的實現(xiàn) 305.4.1兩種選擇方式: 305.4.2粒子系統(tǒng)的移動 315.5場景相機的控制 31總結與展望 32總結 32展望 33致謝 33參考文獻 34附錄 35第1章緒論1.1課題背景知識介紹在自然界中有一些現(xiàn)象,比如雨、雪、霜、煙、火等,沒有固定的形狀、也沒有平滑的表面。它們的形狀不停的變化,表面沒有規(guī)律,很難用多邊形網(wǎng)格來描述它。對這些不規(guī)則的、模糊的、運動的物體,粒子系統(tǒng)是一個有效的造型方法。粒子系統(tǒng)是計算機圖形學的重要組成部分,是不規(guī)則物體造型的有效算法。它由成千上萬的微粒組成,在系統(tǒng)運行過程中,每個粒子執(zhí)行相似的運算,粒子之間關聯(lián)度小。上述特點決定了粒子系統(tǒng)技術需要根據(jù)系統(tǒng)配置及需求進行優(yōu)化并達到最佳效果。1.1.1粒子系統(tǒng)介紹粒子系統(tǒng)起源于1983年。在短短的24年時間里,它的發(fā)展非常迅速。從最初的簡單模擬到引入物理模型,加入碰撞檢測。從CPU上的串行計算到超級計算機的并行計算最近幾年,人們又開始計算粒子系統(tǒng)規(guī)模也由最初的幾千個發(fā)展到現(xiàn)在的百萬個。其應用領域不斷拓展,如虛擬現(xiàn)實、游戲開發(fā)、三維仿真、影視特效、科學計算可視化等領域都用到了粒子系統(tǒng)技術。1.1.2粒子系統(tǒng)原理粒子系統(tǒng)用大量細小微粒來表現(xiàn)一個復雜的不規(guī)則物體或者景象。每個粒子都有一定生命周期,系統(tǒng)會不斷的產(chǎn)生新粒子,這些粒子不停地運動和變化,直到生命周期結束時被系統(tǒng)刪除。粒子系統(tǒng)的繪制包括以下幾個步驟(1)粒子的產(chǎn)生,產(chǎn)生新粒子并加入系統(tǒng)中(2)粒子的初始化,設置每個粒子的屬性,如初始位置,方向,顏色,透明度,生命周期等。(3)粒子的運動,根據(jù)粒子的屬性的動態(tài)變化對粒子進行移動和變換。(4)粒子的消亡,從系統(tǒng)中刪除那些生命周期已經(jīng)結束的粒子。(5)粒子的繪制,繪制并顯示有生命的粒子組成的圖形。上述幾個步驟不停地循環(huán)以形成物體的動態(tài)變化過程。1.1.3粒子系統(tǒng)的特點同其他描述不規(guī)則物體的圖形方法相比,粒子系統(tǒng)具有以下幾個顯著的特點:(1)對物體不是通過具有邊界的面片(如多邊形)集合來描述,而是通過一組定義在空間中的原來粒子來描述。一個復雜物體或現(xiàn)象需要成千上萬,甚至幾十萬個粒子來描述。(2)粒子系統(tǒng)不是一個靜態(tài)實體,每個粒子都在不停地運動和改變,因此整個粒子系統(tǒng)的動態(tài)的,需要不停地計算和重新繪制。(3)粒子系統(tǒng)的每個粒子都是一個獨立個體,自身的規(guī)律進行運動和改變,粒子之間的運動關聯(lián)較小。1.2本文的研究工作與內(nèi)容安排1.2.1本文的研究工作本文共六章,其中二到五章敘述論文主要內(nèi)容。第一章闡述了粒子系統(tǒng)的背景知識,介紹了本文中粒子系統(tǒng)技術的研究情況。第二章基于粒子系統(tǒng)技術的研究現(xiàn)狀,說明了本課題研究的意義和具體內(nèi)容第三章介紹了面向?qū)ο蟮牧W酉到y(tǒng)的原理;粒子系統(tǒng)的工作流程,詳細介紹了燈光,水流,火焰,煙花等粒子系統(tǒng)的屬性和繪制粒子系統(tǒng)的點繪制技術((PointSprite)。第四章是開發(fā)工具和開發(fā)環(huán)境的介紹,對virtools等相關建模,開發(fā)軟件進行介紹并對系統(tǒng)配置要求進行介紹。第五章詳細闡述粒子系統(tǒng)特效的實現(xiàn)過程及方法。第六章是本文的結論部分。組織結構如圖1.2所示:基于virtools的粒子系統(tǒng)技術研究基于virtools的粒子系統(tǒng)技術研究緒論理論基礎緒論理論基礎實踐第四章開發(fā)工具介紹第二章粒子系統(tǒng)研究現(xiàn)狀第三章粒子系統(tǒng)原理第五章第四章開發(fā)工具介紹第二章粒子系統(tǒng)研究現(xiàn)狀第三章粒子系統(tǒng)原理第五章系統(tǒng)設計思路,系統(tǒng)實現(xiàn)第六章第六章總結與展望圖1.2組織結構圖第2章基于粒子系統(tǒng)技術的研究現(xiàn)狀2.1國外研究現(xiàn)狀1983年,WilliamT.Reeves最早提出了粒子系統(tǒng)。它能充分體現(xiàn)模糊物體的動態(tài)性和隨機性,能很好地模擬動態(tài)的三維復雜景物。AndrewWitkin提出了基于物理模型的粒子系統(tǒng),在經(jīng)典粒子系統(tǒng)基礎上加上重力等物理因素,對自然現(xiàn)象的模擬更逼真。在普通的PC機上實現(xiàn)粒子系統(tǒng)的實時繪制,最多只能處理10,000個粒子,大大限制了粒子系統(tǒng)的應用范圍。KarlSims為了提高粒子系統(tǒng)的處理規(guī)模和速度,提出了一種并行算法,在一個能執(zhí)行并行計算的超級計算機上實現(xiàn)了該算法。在可編程的圖形處理器上實現(xiàn)了粒子系統(tǒng),該方法可同時渲染1,000,000個粒子,達到較好效果咧。這在粒子系統(tǒng)發(fā)展上是一個里程碑。KipferPeter等人用OpenGL實現(xiàn)了一個完全基于GPU的通用粒子系統(tǒng)引擎,它引入了物理模型,并應用于火山模擬。但它沒有做粒子系統(tǒng)與場景中其它對象之間的碰撞檢測,在構建大場景時與其它對象的融合不是很理想。2.2國內(nèi)研究現(xiàn)狀國內(nèi)在粒子系統(tǒng)的研究上起步較晚,2002年貴州工業(yè)大學的姚顏林等基于OPENGL的開發(fā)接口開發(fā)了面向?qū)ο蟮牧W酉到y(tǒng)。中科院南京地理與湖泊研究所開發(fā)了一套粒子系統(tǒng)應用程序接口并應用于蘇州工業(yè)園虛擬展示系統(tǒng)。2006年,粒子系統(tǒng)的研究非?;钴S。西安科技大學的宇亞衛(wèi)用粒子系統(tǒng)模擬三維火焰,在粒子系統(tǒng)中引入了運動場,討論了重力和風力對火焰的影響.劉鈕等用粒子系統(tǒng)模擬頭發(fā),生成了較為逼真的效果。北京航天航空大學的許楠等實現(xiàn)了一種基于圖形處理器的粒子系統(tǒng)。在國內(nèi)的粒子系統(tǒng)研究上是一次飛躍。他實現(xiàn)的是一個基本的粒子系統(tǒng),沒有進行碰撞檢測,也沒有考慮物理模型,因此其應用有一定的局限性。2.3課題研究的意義2.3.1粒子系統(tǒng)應用價值雨、雪、煙、火焰等不規(guī)則的、模糊的、運動的物體或景象很難用一般的方法來建模。由于它們不停的運動和改變形狀,表面不規(guī)則并且邊界模糊,很難通過定義其表面網(wǎng)格來描述它。粒子系統(tǒng)為這類物體或景象的建模提供了有效的解決辦法,它能很好的模擬物體的動態(tài)特性。經(jīng)過二十多年的發(fā)展,粒子系統(tǒng)已經(jīng)成為計算機圖形學的重要組成部分,是模擬不規(guī)則動態(tài)物體或景象的有效算法,粒子系統(tǒng)廣泛應用于虛擬現(xiàn)實三維仿真、游戲開發(fā)、電影特技、可視化等領域。用于模擬火、煙、焰的動態(tài)效果,光、影、閃電特效,雨雪降落過程液體或氣體的流動過程等.粒子系統(tǒng)是構建三維場景不可缺少的建模工具,在每一個具體的三維軟件項目中,都不能沒有粒子系統(tǒng)。2.3.3粒子系統(tǒng)技術研究意義目前國內(nèi)外研究主要集中在粒子系統(tǒng)的算法和具體應用上,即核心層和應用層,缺乏中間的工具層,因此大家的研究彼此獨立,不能通用。國外大公司的商業(yè)軟件中提供了粒子系統(tǒng)的可視化編輯模塊和瀏覽模塊。用粒子系統(tǒng)引擎和編輯器能開展應用研究,直接在編輯器上調(diào)試可視化效果,而不必從研究算法開始。這樣做可以提高工作效率,減少重復勞動。算法和接口公開,如果可視化工具滿足不了需要,可以擴展這個通用算法和引擎。大大降低研究和實現(xiàn)算法的難度。第3章粒子系統(tǒng)的技術原理3.1粒子系統(tǒng)的技術原理3.1.1粒子系統(tǒng)的基本思想粒子系統(tǒng)應用是指采用粒子系統(tǒng)的方法,對模糊自然景物或?qū)ο筮M行的計算機圖形模擬應用。在一個粒子系統(tǒng)應用中往往包含了一個或多個粒子系統(tǒng),例如瀑布模擬,整個系統(tǒng)可以分成二個粒子系統(tǒng)。其中一個模擬下瀉的瀑布(瀑布系統(tǒng)),另一個用來模擬瀑布下水花四濺、漣漪遍布的水面(水面系統(tǒng))。這二個粒子系統(tǒng)具有獨立性,例如它們所模擬的粒子是不同的,粒子屬性的變化規(guī)律是不同的,其粒子的圖形顯示也是不同的。同時這二個粒子系統(tǒng)又存在一些關聯(lián)性,如瀑布系統(tǒng)中的粒子在到達水面后將從爆布系統(tǒng)中消失(死亡),但同時給水面系統(tǒng)增加了一個新的粒子。在粒子系統(tǒng)的設計中,幾乎都離不開物理模型的運用。從重力場的模擬,風的模擬等各種環(huán)境的模擬,到波浪、火焰、噴泉、瀑布、枝條的擺動,無一不是源于物理模型。常用的物理模型主要有兩類:一是基于假想的物理模型,主要是為了方便的模擬實際單體的形態(tài)及運動,而假想物體的組成,構造及力學方程來進行建模。常見的主要是粒子系統(tǒng),噴泉、霧、火焰、雪花等都是使用了粒子系統(tǒng)。二是基于物體實際的組成,構造及運動規(guī)律而進行建模。波浪、窗簾、桌布、枝條擺動、人及動物的運動都是用了該類模型。對于一些簡單物體,可對整體列出動力學方程,然后按幀改變位置、狀態(tài),獲得模擬動畫效果。對于復雜的物體常將其分成若干部分,針對每一部分列出動力學方程,每幀對每個部分分別計算后,繪制一般過程。粒子系統(tǒng)理論主要由以下部分組成:(1)物質(zhì)的粒子組成假設。粒子系統(tǒng)中,任何模擬對象,不論是固態(tài)的、液態(tài)的或者氣態(tài)的,例如:火焰、云、雨和雪等,都是由有限個簡單的粒子構成的,而且這些粒子處于不斷的運動狀態(tài)中,這個假設符合物理學定律:“物體都是由最基本的微粒構成的”,但是這些粒子與物理學中的原子等基本微粒不同,它們具有一定的形狀、大小、顏色、透明度、位置、速度和生命期等屬性,而且這些屬性隨著時間不斷地發(fā)生變化。(2)粒子的獨立關系假設。這里包含兩個意思,一是粒子系統(tǒng)中各個粒子不與場景中任何物體相交,二是粒子之間不存在相交關系,并且粒子是不可穿透的。(3)粒子的生命機制。粒子系統(tǒng)中每個粒子都具有生命周期,在一定的時間周期內(nèi),粒子經(jīng)歷“產(chǎn)生”、“活動”和“死亡”三個基本的生命歷程。(4)粒子的運動機制。粒子在存活期間按照一定的運動規(guī)律在場景中運動,粒子的運動機制是粒子系統(tǒng)模擬動態(tài)景物的關鍵。(5)粒子的繪制。因為構建一幅場景需要大量的粒子,因此在繪制時我們通常假設:單個的粒子不具有陰影,但是由粒子組成的實際物體則根據(jù)模擬場景的需要來決定是否進行陰影處理;單個的粒子不反射光線,但是由粒子組成的實際物體則根據(jù)模擬場景的需要來決定是否反射光線。粒子系統(tǒng)方法可以產(chǎn)生一系列運動進化的畫面,這使得模擬動態(tài)的三維復雜自然景物成為可能。生成粒子系統(tǒng)某瞬間畫面的基本步驟為:步驟1在系統(tǒng)中產(chǎn)生新的粒子:步驟2賦予每一新粒子一定的靜態(tài)屬性;步驟3刪除系統(tǒng)中已存在且超過其預先描述的生存期的所有粒子;步驟4根據(jù)剩余粒子的動態(tài)屬性對粒子進行移動和變換;步驟5顯示由有生命的粒子組成的圖象??偨Y上述5個步驟,粒子系統(tǒng)生成一個畫面可分為:初始化粒子,粒子生命更新,粒子狀態(tài)更新,粒子顯示這個部分,流程圖如圖3.1所示初始化粒子初始化粒子粒子生命更新粒子生命更新粒子狀態(tài)更新粒子狀態(tài)更新粒子顯示粒子顯示圖3.1粒子系統(tǒng)流程圖3.1.2粒子的屬性在粒子系統(tǒng)中,粒子一般具有空間位置、速度、加速度、大小尺寸、顏亮度、熱度、形狀、生存期等屬性。例如在采用粒子系統(tǒng)進行雨景模擬中,粒子就代表了一個實際的雨點,粒子的屬性就模擬了一個真實雨點的物理屬性,其屬性的變化模擬了真實雨點的變化。粒子系統(tǒng)通常用以下值來反映粒子當前狀態(tài)的屬性:(1)Position:粒子當前在空間中的位置。(2)Velocity:粒子的運行速度。(3)color:粒子的顏色。粒子顏色的變化常??梢援a(chǎn)生一些真實的效果,如煙火。(4)Energy:粒子的能量。粒子能量的衰減常常用于物體的彈跳直至最后靜止,也可以用來判斷一個粒子的消亡。(5)Size:粒子的大小。粒子的大小影響了一個粒子系統(tǒng)可以表現(xiàn)的效果以及運行的速度。(6)Texture:紋理。是否對粒子設置紋理以及所設置紋理的個數(shù)將對整個粒子系統(tǒng)的性能產(chǎn)生巨大的影響,所以基于性能的考慮,每個相同類型的粒子采用同一個紋理。圖3.1材質(zhì)屬性圖3.1.3粒子的產(chǎn)生在一個粒子系統(tǒng)中,粒子的產(chǎn)生是通過控制隨機過程的方式來完成的,它決定了在每個時間間隔內(nèi)進入每幀的粒子數(shù)目,由于粒子的數(shù)目直接影響到模擬物體的密度,因而控制產(chǎn)生粒子的數(shù)目是相當重要的。模型設計者可以有兩種方法來控制產(chǎn)生新粒子的數(shù)目,一種是設計者可以通過控制在一幀中所產(chǎn)生的粒子的平均數(shù)來實現(xiàn)。如果采用該方法則在某個時刻(Ti),新產(chǎn)生的粒子數(shù)量可以用以下公式描述:NP(Ti)=MNP(Ti)+Rand()*VNP(T1)(3-1)其中:MNP(Ti)為在Ti時刻新產(chǎn)生粒子數(shù)目的平均值;VNP(Ti)為在Tl時刻新產(chǎn)生粒子數(shù)目的方差:NP(Ti)為在Ti時刻新產(chǎn)生的粒子數(shù)目;Rand()為在[1.0,1.0]上均勻分布的隨機函數(shù)。平均值和方差可以是常量,也可以是基于Ti的變量.另一種方法是使所指定的平均數(shù)與最大變化范圍為屏幕上單位面積中所生成的粒子的平均數(shù)和方差,因此生成粒子的數(shù)目決定于物體所占屏幕的大小。采用這種方法時,粒子系統(tǒng)能夠通過一個特殊幀面上的可視參數(shù)來計算機它所覆蓋的大約屏幕區(qū)域,進而正確地計算機出新產(chǎn)生的粒子數(shù)目,其對應的計算機公式如下:NP(Ti)=(P(Ti)+Rand()*yNP(Ti))*SA(3-2)其中:P(Ti)為在Ti時刻新產(chǎn)生粒子數(shù)目的平均值;VNP(Ti)為在Ti時刻新產(chǎn)生粒子數(shù)目的方差;NP(T1)為在Ti時刻新產(chǎn)生的粒子數(shù)目;Rand()為在[1.0,1.0]上均勻分布的隨機函數(shù)。弘是粒子系統(tǒng)的屏幕區(qū)域。平均值和方差可以是常量,也可以是基于Ti的變量。在粒子系統(tǒng)中對于新產(chǎn)生的粒子,其初始屬性可以根據(jù)不同的模擬對象特點進行賦值。例如可以按以下公式賦值:Property(Ti)=MProperty(Ti)+Rand()*VProperty(Ti)Mproperty(3-3)Mproperty是該屬性的均值,VPrerty(Ti)是該屬性的方差。公式中粒子的初始位置可以將空間一個平面或三維空間作為基準,以雪花系統(tǒng)為例隨機分布。再例如煙花模擬中,煙花的各個粒子在某個時刻誕生在空間一個點或者非常小的空間內(nèi),并且速度的絕對值和方向矢量可以用上述公式來表示。3.1.4粒子的更新在自然景物模擬中,粒子的屬性將隨時間發(fā)生變化。變化的類型大致分為以下幾種:(1)力學作用。如重力、風力、浮力等,將對粒子的位置、速度、加速度等屬性產(chǎn)生影響。(2)熱作用。如自然冷卻、化學作用、熱傳遞等,將影響溫度、亮度、透明度等屬性。(3)形狀變化。如爆炸、分裂等,導致粒子增多或影響到粒子尺寸、形狀、質(zhì)量等屬性。對于力學作用,基本可以采用牛頓定律來描述。在具體應用中,根據(jù)實際情況還可以采用近似簡化的表示。例如在雨景、雪景的模擬中,模擬空間范圍時,可以認為粒子的下落在達到一定速度后,是按勻速運動的。對于熱能相關的變化,可以認為其爆炸、獲得能量、散熱的過程按不同的速率曲線進行。例如在焰火模擬中,有些粒子可以認為是瞬間充分燃燒,能量獲得最大值,然后按線性或非線性的散熱曲線冷卻。而有些粒子先在一個相對長的時間內(nèi)逐漸獲得熱能,然后再按某種下降曲線冷卻(變暗)。對于通用的參數(shù)化粒子系統(tǒng),就需要設計滿足不同需要的模型結構,在應用時只要通過參數(shù)選擇不同的熱能變化類型即可。對于形狀變化,往往涉及到新粒子的產(chǎn)生或消亡。例如焰火的爆炸,可以理解成一個粒子在消亡的同時有一批粒子產(chǎn)生并同時發(fā)生能量的變化。再如大片的雪花自然分成二片,意味著一個粒子的消失,二個新粒子的產(chǎn)生。3.1.5粒子的消亡既然有粒子的產(chǎn)生和變化,必然就有粒子的消亡。粒子的消亡有以下幾種類型.(1)空間位置靜止。例如在雪景模擬的粒子系統(tǒng)中,當雪花降落到地面后,雪花的空間位置不再變化。此時它自身的視覺效果可以通過地面的其他方法來模擬,代表雪花的粒子就沒有存在的必要了。(2)視覺效果消亡。例如在煙火、火焰模擬的粒子系統(tǒng)中,粒子有速度、熱能、溫度。粒子在運動的過程中,不斷地散發(fā)熱能,其亮度因此也在變化,當其亮度小于一定的數(shù)值時,雖然粒子可能還在空間運動,但相對其背景己經(jīng)影響不到視覺模擬。在這種情況下,該粒子對模擬己經(jīng)沒有價值,可以消亡。(3)生存期結束而消亡。有些粒子系統(tǒng)中,粒子有一個生存期屬性。在到達生存期后,粒子也就可以死亡。生存期條件的采用又分兩種情況:一種是在物理模擬中,本身就存在比較嚴格的生存期條件,例如生物對象:另一類是在物理系統(tǒng)的建模中,抽象出一個生存期的屬性作為一種簡化相對準確的描述。例如在焰火模擬中,以定義生存期的方式來簡化模擬粒子的熱能變化、亮度變化、時間變化。(4)超出視界的消亡。因為考慮到粒子系統(tǒng)的用途,在粒子超出觀察范圍后,也可以消亡。3.2面向?qū)ο蟮牧W酉到y(tǒng)設計系統(tǒng)的設計是否科學,是否合理關系到整個在系統(tǒng)是否具有良好的可擴性,是否具有比較好的性能。對于一個高級的粒子系統(tǒng),它很可能會涉及到大量的代碼編寫,如果在編碼之前沒有進行良好的設計,將會給后續(xù)的工作帶來不少麻煩,甚至會使得實現(xiàn)出來的粒子系統(tǒng)難以維護和更新。由上一節(jié)粒子系統(tǒng)模型可以知道,由于粒子系統(tǒng)需要產(chǎn)生大量的粒子來模型自然現(xiàn)象和某些特效,它將會大大增加每幀的可見多邊形的數(shù)量,假設每個粒子需要用4個定點和兩個三角形,則一個具有500個可見粒子將會增加1000個可見三角形,而且這些粒子大多是運動的。由此可見一個沒有經(jīng)過良好設計過的粒子系統(tǒng),很可能會引起嚴重的內(nèi)存問題,尤其對于移動平臺內(nèi)存不大,硬件資源有限的環(huán)境下,將會大幅降低系統(tǒng)的刷新率。下面將會運用面向?qū)ο笤O計的原理,結合移動平臺的條件和粒子模型,逐步設計出一個具有較好可擴展性和內(nèi)存管理的面向?qū)ο罅W酉到y(tǒng)。3.2.1粒子系統(tǒng)的基本模型面向?qū)ο蠓治鍪且环N分析方法,它可以在問題域的詞匯表中找到的類和對象的觀點來審視需求,面向?qū)ο笤O計則是一種設計方法,它包含面向?qū)ο蟮姆纸膺^程,以及一種表示方法,用來描寫設計中的系統(tǒng)的邏輯模型與物理模型,以及靜態(tài)模型與動態(tài)模型。面向?qū)ο笤O計建立在面向?qū)ο蠓治鲋?,細化業(yè)務模型和業(yè)務行為,給出面向?qū)ο蠹夹g的技術實現(xiàn)。它的關鍵是其產(chǎn)出物能映射到計算機系統(tǒng)的要求。從上面粒子系統(tǒng)的基本思想的敘述中,可以較容易發(fā)現(xiàn)兩個基本概念:粒子系統(tǒng)與粒子。這兩個概念共同構成了面向?qū)ο蠓治鲋蓄I域模型的兩個元素,領域模型如下圖所示:1Contain1*ParticleParticleSystem1Contain1*ParticleParticleSystem圖3.2粒子系統(tǒng)領域模型從領域模型映射到面向?qū)ο笳Z言的過程中,可以得到兩個基本類粒子類和粒子系統(tǒng)類。(1)粒子類。粒子類與粒子系統(tǒng)物理模型的粒子相對應,它是系統(tǒng)里面的一個最基本的元素,因此粒子類主要的作用是如何反映出粒子系統(tǒng)模型中的粒子,設計的任務主要集中在類的基本數(shù)據(jù)類型設計上。由上一個節(jié)粒子模型可以得知,一個粒子具有位置、速度、加速度、大小尺寸、顏色、亮度、熱度、形狀、生存期等屬性。在這些屬性中粒子的位置,速度,加速度,顏色,大小,生存期是最為基礎的,因此將他們作為粒子類的基本屬性。此外在粒子渲染的過程或其它粒子計算機中需要用到粒子在上一個幀的位置,在粒子類里面需要加入一個新的屬性oldPos。粒子類的屬性設計如表3.1所示。表3.1粒子類的屬性數(shù)據(jù)類型名稱描述Vector3position粒子位置Vector3oldpos上一幀粒子位置Vector3velocity粒子速度Intcolor粒子顏色Intlife粒子生存期Intsize粒子大小不同的粒子系統(tǒng)在不同環(huán)境下對粒子的初始化和要求都不相同。例如煙,有些粒子系統(tǒng)需要模擬有風影響下的煙,有些粒子系統(tǒng)則需要模擬不受風影響的垂直上升的煙,這時這個兩個系統(tǒng)對粒子的加速度設置就各不一樣。所以粒子類的構造函數(shù)設置成空,粒子屬性的賦值工作同一交給粒子系統(tǒng)完成,減少構造大量粒子實例過程中系統(tǒng)在調(diào)用構造函數(shù)的開銷。(2)粒子系統(tǒng)類。粒子系統(tǒng)類負責控制粒子的屬性賦值,粒子的產(chǎn)生,粒子的更新和粒子的渲染,它是整個系統(tǒng)的核心部分。根據(jù)粒子系統(tǒng)物理模型中粒子系統(tǒng)的控制流程,粒子系統(tǒng)類的屬性如表3.2所示:表3-2粒子系統(tǒng)類的屬性數(shù)據(jù)類型名稱Texture*TextureVector3positionBlendModeblendmodeInttypeArrayParticleparticlesTexture是一個指向材質(zhì)數(shù)據(jù)的指針,為了系統(tǒng)運行效率,每個不同的粒子系統(tǒng)都各自使用一個材質(zhì),系統(tǒng)內(nèi)的各個粒子都使用同一個材質(zhì)。Posilion表示該粒子系統(tǒng)在哪個位置顯示。不同的特效和景物模擬需要不同的渲染模式,因此在粒子系統(tǒng)內(nèi)需要加入BledMod。這一個數(shù)據(jù)屬性,type這代表了不同粒子系統(tǒng)的類型,系統(tǒng)類型主要有煙,霧,火焰,焰火,雨雪等類型,這個數(shù)據(jù)屬性主要是為了使得系統(tǒng)可以控制不同類型的粒子系統(tǒng)。ArrayParticle則是指向粒子數(shù)組的指針,是粒子系統(tǒng)的基本元素,代表了粒子的集合。根據(jù)粒子系統(tǒng)控制粒子的流程,粒子系統(tǒng)類的操作方法主要有以下幾個,如表表3.3粒子系統(tǒng)類的操作方法操作名稱描述Emitter負責粒子的產(chǎn)生Update負責粒子的更新Render負責粒子的渲染一個粒子的基本模型圖如下所示:PartucleSystem-Texture-Position-BlendMode-Type-Particles-Emitter()-Update()-Render()Particle-pos-oldpos-veclocity-life-color-size圖3.3粒子基本模型圖3.2.2改進粒子系統(tǒng)模型(1)可管理的粒子系統(tǒng)當系統(tǒng)中僅存在唯一個粒子系統(tǒng)的時候,用上述的基本模型即可完成任務。但在實際的工作中,一個游戲場景都會同時存在多個的相同的粒子系統(tǒng)去模擬特效。例如在一個戰(zhàn)場場景中,可能有多處地方需要模擬火焰。這時系統(tǒng)就需要同時存在不同的粒子系統(tǒng)去模擬這種特效,如果程序員還是采用基本粒子模型,則在每一幀都需要對3個粒子系統(tǒng)進行更新、渲染等操作管理,還需要追蹤所有粒子系統(tǒng)以保證能及時釋放已經(jīng)死亡的粒子,十分不方便,而且屬于硬編碼模式,維護性和可擴展性比較差。有鑒于此,在基本模型上要加入一個Partid。Manager類,讓它去管理所有的粒子系統(tǒng),在需要的時候自動更新和渲染所有系統(tǒng),并且對粒子系統(tǒng)進行內(nèi)存管理,在結構上提高了系統(tǒng)的擴展性,使得程序員把更多精力放在場景的安排上,而不是把焦點放在如何處理粒子。ParticleManagerParticleParticleManagerParticleSystemParticleSystemParticleSystemparparparparparpar圖3.4ParticleManager示意圖由于粒子系統(tǒng)會在給定的時候內(nèi)就消失,如果在管理類對粒子管理類進行操作的時候沒有檢查該粒子系統(tǒng)是否己經(jīng)消亡,就很容易引發(fā)內(nèi)存問題導致系統(tǒng)崩潰。因此除了添加粒子系統(tǒng),減少粒子系統(tǒng),更新粒子系統(tǒng),渲染粒子系統(tǒng)等功能之外,還需要加入一個檢驗粒子系統(tǒng)是否己經(jīng)消亡的功能。ParticleManager類的操作。(2)接口設計上述提出的設計可以解決一個場景含有多個相同的粒子系統(tǒng)的情況,可是當一個游戲場景中還會存在著不同的粒子系統(tǒng),例如在上面提到的戰(zhàn)場場景中,除了有多處的火焰存在之外,有時還需要雨和霧的效果,這個時候該設計就不能再適用了。程序員不得不又一次再陷入硬編碼的方式,一個個地處理不同的粒子系統(tǒng),再次降低了系統(tǒng)的可擴展性。在設計模式的核心設計原則提到:盡量針對接口編程,而不要針對實現(xiàn)編程。針對接口編程的組件不需要知道對象的具體類型和實現(xiàn),只需要知道抽象類定義了哪些接口,這減少了實現(xiàn)上的依賴關系。為了最大限度地適應需求,應該先添加一個粒子系統(tǒng)得抽象接口,該接口中定義了每一類粒子系統(tǒng)共有的行為,粒子產(chǎn)生(mitter),粒子更新(Update),渲染區(qū)(Render)。添加這個接口后,利用面向?qū)ο笳Z言多態(tài)的特點,系統(tǒng)添加新的類型的粒子系統(tǒng)的時候,只需要添加新類型代碼,而系統(tǒng)中原有的代碼不需要做任何的改變就可以適應新的需求。第4章開發(fā)工具與開發(fā)環(huán)境介紹4.1Virtools開發(fā)環(huán)境介紹4.1.1VirtoolsDev簡介Virtools是一套整合軟件,透過『直覺式圖形開發(fā)接口』開發(fā)人員只需要拖曳所需要的行為模塊就可以建構出復雜的互動應用程序,可同時滿足無程序背景的設計人員以及高階程序設計師的需要,讓3D美術設計與程序人員進行良好的分工與合作,有效縮短開發(fā)時程、提升效益。由于內(nèi)建超過500組的行為模塊,更可以讓使用者快速設計出多樣的3D數(shù)字內(nèi)容。3D動畫已經(jīng)是人人可學可做的了!現(xiàn)在我們更可以透過virtools這套由法國科技公司所研發(fā)多年的軟件,簡易的建置出網(wǎng)絡可以播放的高標準3D動畫,或者3D游戲,我們將帶各位進入這個充滿無限趣味的領域。(1)Virtools架構:VirtoolsVirtoolsViewerVirtoolsSDKVirtools組成元素VirtoolsApplication3DEngineVirtoolsLibrary(CK)圖4.1(1)
VirtoolsLibrary:可稱為CK,提供3D及時的互動行為。(2)
VirtoolsApplication:為整合與制作的環(huán)境平臺。(3)
VirtoolsViewer:可以執(zhí)行由Application所制作出來的內(nèi)容。(4)
VirtoolsSDK(SoftwareDevelopmentKit):允許使用者新增
Virtools的功能(VirtoolsDev才有)。
(2)Virtools整合3DsMax:我們要把做好的3D模型對象轉(zhuǎn)入Virtools。需注意的是3DsMax中的對象轉(zhuǎn)入Virtools中有一定的限制。
3DsMax轉(zhuǎn)文件必需注意的事項:(i)模型數(shù)據(jù):已經(jīng)轉(zhuǎn)換為”editablemesh”型態(tài)的3D模型??晒┹敵龅?D模型數(shù)據(jù)如下:基本模型數(shù)據(jù),貼圖坐標的設定,SmoothingGroups的設定,Hierarchy從屬關系設定,Show/hideFlag顯示隱藏的設定,VertexColor。(ii)材質(zhì)資料:3DsMax的標準材質(zhì)以及multi/sub-object(同一對象、復合材質(zhì)數(shù)據(jù));雙面材質(zhì)設定(2-SidedFlag);透明度設定(Transparency);Diffuse的貼圖;貼圖的色彩將會因為這個材質(zhì)顏色而改變,除非顏色值為(255.255.255)的白色。(iii)燈光:所有3DsMax的標準燈光。包括開/關設定;
燈光顏色;照射范圍(設定燈光范圍的「Attenuation/Far/End」等數(shù)據(jù));特殊燈光參數(shù)設定;聚光燈:聚光燈的falloff值的設定。(iv)攝影機:所有3DsMax設定好的攝影機,如Target或Free的攝影機。3DsMax攝影機的參數(shù)只有FOV可供輸出。(v)Dummy:接受3DsMax的Dummy虛擬對象。(vi)動態(tài)數(shù)據(jù):TCB格式、LINEAR或Bezier的動態(tài)數(shù)據(jù)。只有在3DsMax里的TCB、LINEAR或Bezier的位移、旋轉(zhuǎn)、大小等動態(tài)數(shù)據(jù)可輸出至Virtools。為了讓動態(tài)數(shù)據(jù)正確輸出,母對象(群組最高層級的對象)的位移、旋轉(zhuǎn)、大小三種動態(tài)數(shù)據(jù)的起始點與終點一定要設定在時間軸的范圍里。
Virtools的每段動畫旋轉(zhuǎn)范圍不得超過360度的數(shù)據(jù)。(3)Virtools之BuildingBlocks:BuildingBlocks是一種行為模塊。在Virtools的交互式設定是相當有邏輯性,好像在玩電路板游戲,或說是把寫程序轉(zhuǎn)化成一種具像的流程圖,每個關鍵的語匯轉(zhuǎn)化為一塊塊的行為模塊﹝BehaviorBuildingBlock﹞,每個模塊身上很多插孔,有輸入插孔(BehaviorInput,用來接收流程上層命﹞、輸出插孔﹝BehaviorOutput,傳送執(zhí)行結果﹞、輸入?yún)?shù)﹝ParameterInput,執(zhí)行前的參數(shù)設定﹞、輸出參數(shù)﹝ParameterOutput,執(zhí)行前的參數(shù)設定﹞,這些行為模塊是構成一個物體作用的最基本元素,只要各種不同的行為模塊合理地聯(lián)結起來就可以讓3d對象互動起來。
圖4.2(4)Virtools之SDK:SDK
就是
Software
Development
Kit
的縮寫,就是“軟件開發(fā)工具包”。這是一個覆蓋面相當廣泛的名詞,可以這么說:輔助開發(fā)某一類軟件的相關文文件、范例和工具的集合都可以叫做“SDK”。4.1.2Virtools操作界面介紹(1)場景編輯器(3DLayout)在3DLayout的區(qū)域內(nèi)可以顯示目前正在編輯的場景,使用者可以在這區(qū)域內(nèi)即時檢視編輯、修改的狀況。所有的物件包括3D的物體、燈光、攝影機、線段等,都可以在這部分中做修改,如位置的移動、旋轉(zhuǎn)、縮放等,并即時顯示修改後的結果。(2)檔案資源管理(LevelManager)在檔案中的所有物件,都會依照分類(CKClass的分類),顯示在這部分,如3D物體就會在此分類顯示(3D物體泛指檔案中的3D模型),燈光會顯示在Light的分類中,攝影機會顯示在Camera的分類中等,方便使用者管理檔案中的資源。在Virtools中,一個檔案可以許多包含不同的場景(scene),而場景可以依要再動態(tài)加入至目前所開啟的檔案中。(3)行為模組資料庫(BuildingBlockLibrary)在VirtoolsDev,內(nèi)建超過400個以上的行為模組,只要以"DragandDrop"的方式就可以套用在物件上。甚至可以利用現(xiàn)有的行為模組,再建立一個新的行為模組,此新的行為模組可以另外獨立儲存成一個檔案,供其他使用者或是其他專案上使用。所以VirtoolsDev的行為模組具有延伸性質(zhì)。(4)行為模組編輯器(SchematicView)圖形化的編輯方式,可以全心安排自創(chuàng)的互動程序設計,沒有語法錯誤的狀況發(fā)生,編輯程序完成后,將形成一個完整的流程圖,方便未來閱讀、修改、使用與經(jīng)驗傳承,解決公司資料保存與人員流動問題。(5)除錯工具(Debugtools)在編輯行為模組的過程中,可以隨時利用除錯工具,修正邏輯上的錯誤,以達到最佳的狀態(tài)。(6)物件參數(shù)設定界面(Entitiessetup)一個物件都有自己的設定界面,依照每一類別的不同而有不一樣的參數(shù)可以修改,如3D物體的參數(shù)設定界面中,可以修改位置、旋轉(zhuǎn)角度、比例大小...等資料;燈光可以修改燈型別,如點光源、聚光燈或是平行光,同樣也可以修改燈光的位置、方位,進一步的資訊如燈光照射的范圍、Hotspot、Falloff等皆可調(diào)整。(7)屬性管理界面(Attributesmanager)每一個物件都可以設定其他的屬性,并且都可以在這個界面查到或是修改,如重力的屬性、碰撞的屬性、即時陰影的屬性...等。(8)階層管理界面(Hierarchymanager)階層管理界面可以顯示與修改物件之間的關系,修改時,僅使用"DragandDrop"直覺的方式即可完成。(9)參數(shù)除錯器(Parametersdebugger)參數(shù)除錯器可以一次監(jiān)視多個參數(shù)在執(zhí)行時的變化,供除錯時的參考。(10)檔案路徑管理界面(PathManager)檔案路徑管理界面供使用者定義檔案所在的位置,如圖形檔、音檔等。(11)Profiler可以讓使用者得知執(zhí)行時計算時間的分配如何、有多少個物件正在處理中、貼圖使用了多少Mb的記憶體...等(12)互動行為的設計有超過500種以上的行為模組可供使用,以"Draganddrop"的方式就可將行為模組的功能套用在物件上,可以現(xiàn)成的行為模組再組成一個新的行為模組,圖形化的物件導向程式設計。(13)Virtools自訂功能有:使用VirtoolsDevSDK可以存取的內(nèi)容資料包括頂點、多邊形、模型、人物角色...等;新增自訂的行為模組與manager新增自訂的參數(shù)型別、運算元與編輯器;新增自訂的檔案輸入/輸出程式;建立執(zhí)行檔(.exe)。(14)直覺式管理使用者可以直覺的方式管理檔案資源、物體間的階層關系,并可以監(jiān)測目前系統(tǒng)資源使用的狀態(tài)。公開展示、發(fā)行當產(chǎn)品完成時,您可以透過網(wǎng)絡展示成果,或是將您的產(chǎn)品制成光碟發(fā)售。4.2Virtools模組介紹Virtools除了自身的3D/VR開發(fā)平臺VirtoolsDev以外還有五個可選模塊,分別是:4.2.1物理屬性模塊(VirtoolsPhysicsPackforDev)VirtoolsPhysicsPackforDev是完全整合在VirtoolsDev中的一個插件,提供了對于由物理定律控制的現(xiàn)實世界的真實模擬。整合了Havok公司頂尖的物理屬性引擎,使得Vntools的使用者在制作3D互動場景的過程中更加便利。提供使用者多種物理屬性的運用,VirtoolsPhysicsPack中的行為模塊(BuildingBlocks,簡稱BB)可實現(xiàn)諸如重力、質(zhì)量、摩擦力、彈力、物體間的物理限制、浮力、力場與車輛的動態(tài)物理屬性等功能,例如你可以指定車輛的質(zhì)量、車輪的摩擦系數(shù),可以識別彈簧、鉸接的連接限制等。這些都是通過物理引擎來實現(xiàn)的,而不需要你具備復雜的數(shù)學和物理知識。這些功能大大縮短使用者制作的時間,減少了美術設計師繁復冗長的物體動態(tài)制作過程與程序設計師撰寫算法的過程。4.2.2人工智能模塊(VirtoolsAIPackforDev)為游戲角色注入生命新元素。AI為人工智能科技提供了最佳的解決途徑,為游戲及虛擬人物創(chuàng)造個性,加強了原先內(nèi)建在行為模塊中的人物個性屬性設定。AIPack技術在研發(fā)的過程中通過VirtoolsDev直覺式圖形開發(fā)界面直接體驗人工智能的魅力。AlPack內(nèi)含兩種行為模塊。首先賦予角色人物經(jīng)由眼睛與耳朵對于環(huán)境的觀察建立獨特的性格,也就是視覺與聽覺的特性,然后再發(fā)展出更高階的第二階段的動作反應,如跟蹤,逃走,躲藏等,行為模塊在建立過程中為了加速流程通常會伴隨著幾項工具,主要是為了計算主角人物對環(huán)境作出反應時所需要的計算機數(shù)據(jù)。4.2.3Xbox開發(fā)模塊(VirtoolsXboxKitforDev)該模塊是Virtools的外掛模塊。XboxKit的接口能在Virtools與Xbox之間作檔案數(shù)據(jù)的溝通與轉(zhuǎn)換,使得運用VitoolsDev所制作的游戲,能透過XboxKit簡便的數(shù)據(jù)轉(zhuǎn)換達到流暢的立即呈現(xiàn)。XboxKit全新行為模塊的編寫方式與VirtoolsDev原有的使用方式完全一樣,使用者能通過“直覺式圖形開發(fā)接口”拖曳所需的XboxKit專屬行為模塊,建構出豐富多元的3D數(shù)位內(nèi)容。XboxKit還支持所有標準的Dev功能,也可和所有外掛模塊搭配使用。運用Virtools直覺式圖形開發(fā)接口不但能輕松編輯游戲的互動性,而且可以使用可視化方式檢視、編輯、偵測對象與行為模塊間的關聯(lián)性。VirtoolsXboxKit獨特的編輯處理功能,提供最佳的數(shù)據(jù)轉(zhuǎn)換及流暢的游戲呈現(xiàn),能在Virtools游戲開發(fā)平臺與Xbox平臺之間建立數(shù)據(jù)溝通與轉(zhuǎn)換的標準模式,用來測試游戲的可玩性與耐玩性,并進行游戲企畫或程序設計架構的修改,降低實際制作的風險與成本。4.2.4網(wǎng)絡服務器模塊(VirtoolsServer)VirtoolsServe利用高效率的網(wǎng)絡聯(lián)機引擎協(xié)助使用者開發(fā)因特網(wǎng)或局域網(wǎng)絡的3D多人聯(lián)機數(shù)字內(nèi)容,可以輕松地完成與數(shù)據(jù)庫整合、多人聯(lián)機及數(shù)據(jù)串流等功能。VirtoolsServe提供兩種多人聯(lián)機服務器,包括獨立網(wǎng)絡服務器與點對點局域網(wǎng)絡服務器。使用者不用解決任何網(wǎng)絡聯(lián)機本身的任何問題,只要通過其提供簡單易用的行為模塊(buildingblocks)就可完成所有所需的功能。VirtoolsServer亦可將所需的互動原件(包括自行設計的互動模塊、媒體數(shù)據(jù)及數(shù)據(jù)庫等在尚未開始正式執(zhí)行檔案前,通過標準外掛模塊(VirtoolsWebPlayer)的方式事先下載至使用者的計算機,大幅增加在線播放的彈性與客制化的功能,使得Virtools的VMO/CMO檔案中所需的對象可以分別依據(jù)需要再下載,并可以通過ODBC接口與數(shù)據(jù)庫連結。4.2.5模型構建與控制本系統(tǒng)的最終目的是向客戶介紹粒子特效,因此模型的構建是首要也是至關重要的任務,模型建立的好壞直接影響到整個系統(tǒng)的展示效果。對于一個模型所導入到材質(zhì)的好壞和恰當與否也會增強或減弱虛擬商品的真實感。然而由于Virtools本身沒有建模的功能,所以一般建模方法是采用建模軟件來實現(xiàn),如3DMAX或Maya等(本文中采用的是3DMAX)。如圖4.3所示:圖4.3用3DMAX制作三維模型或動畫后是以.max文件存在的,而不能夠被Virtools所用,因此需要為其安裝Virtools的MaxExporter插件,再以NMO格式文保存文件,然后在Virtools中導入所生成的NMO文件。導入到Virtools的三維世界編輯區(qū)的3D(或2D)元素可以加以觀察,控制,也可以用安裝SDK插件編輯更多的BBs(BuildingBlocks),實現(xiàn)虛擬展示的需要。整個轉(zhuǎn)換過程如圖4.2所示:Virtools觀察控制.nmo文件3DMax添加紋理等發(fā)v3DMax建立模型修改生成導入Virtools觀察控制.nmo文件3DMax添加紋理等發(fā)v3DMax建立模型圖4.4圖4.53D模型屬性圖第5章粒子系統(tǒng)特效的實現(xiàn)5.1粒子系統(tǒng)的應用簡介粒子系統(tǒng)的應用領域從大的方面分為兩類,一是用于數(shù)字娛樂,二是用于仿真。數(shù)字娛樂包括游戲,動畫,電影特效等。仿真有對自然景觀,如雨,雪的模擬,有對人文景觀,如噴泉模擬;有對戰(zhàn)場的仿真,如飛機,導彈的尾焰的模擬,燃燒,爆炸場景的模擬等。本文制作了幾個代表性的粒子效果,以證明我們所提出的解決方案的有效性和通用性。這些效果是用粒子系統(tǒng)編輯器調(diào)試得來,以說明其動態(tài)性。更直觀的效果請看截圖。5.2粒子系統(tǒng)實例5.2.1燈光的制作在virtools中可以看到燈光的閃爍,看到的是動畫??梢钥闯稣w的粒子運動情況,它可以逼真的模擬日光燈,霓虹燈等。圖中燈光的顏色和閃爍各不一樣,可以看到粒子的飛濺。也可以看出每幅圖的形狀都是不完全一樣的。
下面介紹制作這個霓虹燈效果的幾個要點:(1)離子滿天飛:它使用了點發(fā)射器,所有粒子都從一個點產(chǎn)生,每個粒子的初始方向隨機產(chǎn)生,因此它會向空間所有方向運動。由于離子發(fā)射速度4000/秒,總粒子數(shù)可達到50000個,粒子就會填滿空間各個方向。(2)粒子是七彩的:在產(chǎn)生新粒子時粒子顏色隨機生成,因此不知道多少種顏色,只看到五顏六色的效果。(3)粒子中間密,外面?。菏且驗樵诋a(chǎn)生新粒子時,每個粒子的生命周期在某個范圍內(nèi)隨機產(chǎn)生。它的生命周期不同,粒子向外運動,最外面只剩下生命周期最長的粒子。還有一個原因是顏色特效,讓粒子顏色隨運行的時間慢慢變淡,最后變成黑色,與天空融為一體,也就看不見了。(4)粒子飛行中的閃爍效果:一是粒子的飛行速度很快,二是每個粒子的飛行速度在某個范圍內(nèi)隨機產(chǎn)生,常常會有后面運動的粒子一下子竄到前面來的感覺。這樣給人一種視覺上的震撼。圖片5.1燈光實現(xiàn)腳本燈光效果圖圖5.2圖5.3圖5.4圖粒子系統(tǒng)模擬火焰的生成在virtools中可以看到火苗的跳動,看到的是動畫,可以看出每幅圖的形狀是不完全一樣的,它可以逼真的模擬火柴,蠟燭等燃燒的小火焰。火苗有三個特點:(1)上面小,下面大。它使用了縮放特效,即ScaleAffector對粒子進行縮放。縮放倍數(shù)2.粒子從上面發(fā)射出來,在運動過程中漸漸變大,到最下面變成原來的2倍。(2)顏色由紅變黃再變白。透明度由上面的不透明,到半透明,到最下面全透明,這里使用了顏色特效,即ColorAffector。粒子最初顏色是紅色,慢慢增加綠色G,藍色B分量的值,當G,B增加都1時,顏色就變成了白色。透明度由1,即不透明,漸變到0,即全透明。(3)火苗可以跳動是因為粒子發(fā)射器為立方體發(fā)射器。粒子從一個小立方體中隨機發(fā)射出來,初始位置有細微不同,在運動過程中的路徑也不完全相同。因此粒子系統(tǒng)最終的形狀也就不一樣,其快速變化就形成了跳動的火苗。圖5.6火焰初始腳本圖5.7火焰屬性圖5.8火焰動作腳本圖5.9火焰效果圖5.2.3滾滾濃煙比較真實的模擬了劇烈燃燒時產(chǎn)生的濃煙。上面厭惡在空中翻滾,由濃變稀,由小變大,色彩由黃變紅再變黑,在空氣中慢慢擴散。實現(xiàn)這個煙霧效果的方法如下:(1)由小變大,由濃變?。毫W拥某跏挤较蛟谂?2在圓錐范圍內(nèi)隨機生成,同時使用縮放特效,讓粒子在運動中慢慢變大。(2)翻滾效果:使用旋轉(zhuǎn)特效,讓所有的粒子在運動中朝同一方向旋轉(zhuǎn)。因此他們看起來是整個系統(tǒng)在旋轉(zhuǎn)。(3)顏色的變化,可以看出,顏色由兩次較大變化,使用顏色特效并應用兩個漸變關鍵點圖中展示的就是模擬炊煙的效果。還可用于模擬火災時燃燒的場景,也可以模擬戰(zhàn)場中爆炸后的劇烈燃燒和煙霧效果。圖5.10煙的屬性圖圖5.11煙效果圖圖5.12房屋群煙效果圖5.2.4煙花的制作實現(xiàn)煙花效果的要點是:(1)爆炸時初始方向是隨機的,煙花才能展開。(2)使用顏色特效讓它慢慢在空中消失。(3)使用線性力特效讓粒子系統(tǒng)收到一個向下的作用力,產(chǎn)生一個向下的加速度以制作下落的效果。圖反映的分別是煙花爆炸到散開,再慢慢落下,最后消失在空中的景象,通過對參數(shù)的調(diào)整,可以制作具有不同顏色,不同形狀,不同爆炸方式的煙花效果。圖5.13煙花初始腳本圖5.14—5.17煙花效果圖5.2.5噴泉可視化效果的制作從圖中可以看出,噴頭分布在一個圓環(huán)形水管上。可以把每個噴頭看作一個粒子發(fā)射器,噴出的水珠就是粒子。設置好一個粒子發(fā)射器后,可以復制到其它噴頭上,只需變換一下發(fā)射器的位置和粒子的運動方向。在制作過程中,由兩點很重要:一是噴泉從噴頭出來后,受重力作用,噴出的是一條弧線,噴到一定高度后會落下來,要實現(xiàn)這個效果,需要為粒子系統(tǒng)添加一個線性力特效;二是要體現(xiàn)“噴”的效果,速度控制很重要。水粒子的運行速度要快,速度慢了就是“流”的效果。在virtools中的屬性窗口中調(diào)整參數(shù),對主窗口效果滿意后保存粒子系統(tǒng)的參數(shù)到文件中,以備其它程序加載。圖5.18水流初始腳本圖5.19水流效果圖圖5.20噴泉效果圖圖5.21水花效果圖5.3漫游系統(tǒng)中粒子系統(tǒng)與場景的合成粒子系統(tǒng)與場景的合成在virtools中進行。virtools是一個融合各種對象的可視化開發(fā)環(huán)境,這些對象包括一些規(guī)則的物體,也包括粒子系統(tǒng)模擬的不規(guī)則物體。對所有對象的位置,方向,縮放,旋轉(zhuǎn)等屬性進行調(diào)整,并把所有對象組合在一起,即可形成一個大的場景,把對象的屬性保存到一個文件中即場景文件。在漫游系統(tǒng)的演示程序中,加載場景文件中的粒子系統(tǒng)時,就讀取對應的參數(shù)傳給粒子系統(tǒng)的對應接口,以完成粒子系統(tǒng)的加載。加載成功就可以在場景中漫游。粒子系統(tǒng)效果效果請觀看本文附帶光盤視頻文件。圖5.22系統(tǒng)結構圖圖5.23粒子系統(tǒng)分布圖5.4視角相機的實現(xiàn)5.4.1兩種選擇方式:1)拖動鼠標左鍵,并在屏幕上拖出一個矩形框,如果粒子系統(tǒng)中心點在這個框內(nèi),粒子系統(tǒng)就被選中。在實現(xiàn)時用“鼠標左鍵按下”十“鼠標在窗口上移動”+“鼠標左鍵彈起”組合過程完成一次框選。實現(xiàn)框選要解決二維屏幕區(qū)域向場景三維空間的映射。展示了映射的原理。三維場景中相機的投影方式是射線投影,四條實線是相機投出的四條射線,與相機的遠近截面組成的四棱堆內(nèi)的物體是屏幕上顯示的場景。屏幕上的虛線框是鼠標拖出的矩形,它從相機的位置向這個矩形的四個頂點引出的四條射線(圖中用虛線表示)與相機遠近截面相交.相交的區(qū)域用虛線框表示。四條虛線和截面上的兩個虛線框組成的四棱錐就是選定的三維空間。通過粒子系統(tǒng)中心位置點即可判斷粒子系統(tǒng)是否被選中。2)通過Tab鍵在多個粒子系統(tǒng)間切換。這種方法適合場景中粒子系統(tǒng)個數(shù)較少的情形。5.4.2粒子系統(tǒng)的移動移動粒子系統(tǒng)就是改變粒子系統(tǒng)中心點在三維空間中的坐標.由于相機是可移動的,用戶移動粒子系統(tǒng)的實質(zhì)上是讓粒子系統(tǒng)相對于相機移動,而不是簡單的坐標值改變。以粒子系統(tǒng)向前移動為例。粒子系統(tǒng)向前移動(即沿相機的正面移動)一個步長的步驟實現(xiàn)如下:1)獲取當前粒子系統(tǒng)中心位置Position;2)獲取相機當前方向Direction;3)獲取當前相機移動步長MoveStep;4)算新的位置坐標Pos=Position+DirectionXMoveStep;粒子系統(tǒng)在其它方向上的移動與此類似。1.粒子系統(tǒng)的旋轉(zhuǎn)粒子系統(tǒng)旋轉(zhuǎn)的實現(xiàn)通過旋轉(zhuǎn)矩陣相乘實現(xiàn)。它把要旋轉(zhuǎn)的角度轉(zhuǎn)化為旋轉(zhuǎn)矩陣,然后與粒
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華師大版初中科學第一節(jié) 地球上的水(34課件T )
- 慢性病管理與健康干預制度
- 把句子寫具體
- 福建省華安一中2024年高三第八次聯(lián)考數(shù)學試題
- 2024年甘肅客運資格證應用能力試題及答案詳解
- 算法設計與分析 課件 2-程序測試
- 2024年固原客運駕駛員考試題庫
- 2024年山東客運從業(yè)資格證考試技巧和方法
- 2024年無錫客運資格證仿真試題
- 2024年呼和浩特客運資格證考試技巧
- 基層反映類信息大匯總情況
- 經(jīng)理的困惑案例分析
- 海水淡化反滲透裝置檢修維護說明書
- 建筑工程專業(yè)英語unitPPT課件
- 學生對教師評價表(共8頁)
- 批發(fā)零售大個體 E204-3批發(fā)和零售業(yè)產(chǎn)業(yè)活動單位(個體經(jīng)營戶)商品銷售和庫存
- 異辛酸鈉合成工藝及建設項目
- (完整版)青年就業(yè)創(chuàng)業(yè)見習基地匯報材料(完整版)
- 西電計組課程設計報告
- 汽車買賣合同工商示范文本
- SC鍍鋅鋼管緊定式連接施工工法(共12頁)
評論
0/150
提交評論