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