蔣 越
(92941部隊(duì) 葫蘆島 125001)
虛擬現(xiàn)實(shí)技術(shù)也被稱為靈境技術(shù),它是指借助計(jì)算機(jī)及最新傳感器技術(shù)創(chuàng)建一個(gè)逼真的三維虛擬環(huán)境,目的是為用戶提供視覺、聽覺、觸覺等方面的感官模擬,使使用者產(chǎn)生身臨其境的感覺,并且,使用者應(yīng)能通過某種方式與虛擬現(xiàn)實(shí)系統(tǒng)進(jìn)行交互,進(jìn)而沉浸其中。這是一項(xiàng)綜合集成的技術(shù),涉及到計(jì)算機(jī)圖形技術(shù)、計(jì)算機(jī)仿真技術(shù)、傳感器技術(shù)、人工智能等多種科學(xué)技術(shù)的最新發(fā)展成果。其特點(diǎn)是具有多感知性、沉浸感、交互性和構(gòu)想性。虛擬現(xiàn)實(shí)技術(shù)可以對(duì)真實(shí)的環(huán)境進(jìn)行模擬,這一特點(diǎn)使其在軍事訓(xùn)練等方面的應(yīng)用廣泛[1~2]。
三維游戲中,游戲的核心代碼即為稱為游戲引擎,它主要是對(duì)游戲中的所有功能進(jìn)行控制。由引擎控制管理的游戲功能包括:碰撞控測、提供物理系統(tǒng)以及渲染物體等,還有與玩家之間的交互,以及場景圖像與聲音的正確輸出等。游戲引擎將游戲中所有的內(nèi)容與元素組織到一起,然后統(tǒng)一對(duì)其進(jìn)行指揮和控制,使其協(xié)調(diào)有序地運(yùn)行。
游戲引擎是由多個(gè)子系統(tǒng)共同構(gòu)成的復(fù)雜系統(tǒng),其主要的作用在于可以使程序員將游戲的內(nèi)容與復(fù)雜的游戲圖形、音頻等處理邏輯分開。在游戲引擎的平臺(tái)框架上,程序員可以直接調(diào)用引擎提供的應(yīng)用程序編程接口來進(jìn)行游戲的開發(fā),引擎能夠處理系統(tǒng)架構(gòu)、內(nèi)存管理、圖像繪制、音頻播放等一系列較底層的功能,使程序員可以專注于游戲內(nèi)容的設(shè)計(jì),提高開發(fā)的速度。游戲引擎包括引擎組件,這些組件可以在不同的游戲場景中被重用,在節(jié)省開發(fā)成本和工作量的同時(shí),也可以提高運(yùn)行效率。游戲引擎不僅可以用于游戲的開發(fā),還可以用于虛擬現(xiàn)實(shí)以及視景仿真等三維圖像領(lǐng)域[3]。
XNA是微軟推出的“通用軟件開發(fā)平臺(tái)”,其目標(biāo)是降低游戲的開發(fā)成本、縮短開發(fā)的周期。XNA實(shí)際上是DirectX在.NET FrameWork框架下的發(fā)展,微軟公司希望將其發(fā)展為所有游戲開發(fā)平臺(tái)的通用標(biāo)準(zhǔn)。它可以開發(fā)基于Windows操作系統(tǒng),Windows CE操作系統(tǒng)以及Xbox平臺(tái)的游戲。與傳統(tǒng)的OpenGL和Direct3D相比,XNA不僅繼承了Direct3D在顯示、聲音以及系統(tǒng)組件等多媒體技術(shù)方面的優(yōu)勢,而且XNA在流戲開發(fā)效率、內(nèi)容與代碼維護(hù)管理、平臺(tái)支持等方面更加突出[4~5]。
雖然XNA研發(fā)的目的是為游戲開發(fā)者提供一個(gè)方便快捷的平臺(tái),但目前的三維游戲畫面處理、真實(shí)感表現(xiàn)等方面都已經(jīng)達(dá)到了虛擬實(shí)現(xiàn)的相關(guān)要求。由于游戲產(chǎn)業(yè)的迅猛發(fā)展,出現(xiàn)了很多優(yōu)秀的游戲引擎,將這些成熟的技術(shù)應(yīng)用于虛擬現(xiàn)實(shí)的研發(fā)過程,既可以降低開發(fā)費(fèi)用,又可以縮短開發(fā)的時(shí)間。我國在游戲引擎方面的研究雖然起步較晚,但發(fā)展迅速,已經(jīng)出現(xiàn)了不少優(yōu)秀的游戲引擎,可以XNA技術(shù)為基礎(chǔ)的游戲引擎還不多見。國外的三維游戲引擎雖然較為成熟,但過多的依賴引進(jìn)不僅會(huì)造成使用方面的不便,也會(huì)使我國在該方面的研發(fā)停滯不前。因此,自主研發(fā)一個(gè)具有良好結(jié)構(gòu),性能較高的三維游戲引擎,并將其運(yùn)用于虛擬現(xiàn)實(shí)領(lǐng)域,具有極其重要的實(shí)用價(jià)值和意義。
游戲引擎的最重要的功能是將游戲的內(nèi)容與底層對(duì)圖像、聲音、動(dòng)畫的處理分離開,使游戲的開發(fā)人員可以直接調(diào)用引擎提供的應(yīng)用程序接口(API)以及其他的輔助工具來進(jìn)行游戲的開發(fā)。
對(duì)基于XNA的虛擬現(xiàn)實(shí)引擎進(jìn)行架構(gòu)設(shè)計(jì),采用的是分層架構(gòu)的設(shè)計(jì)思想,將虛擬現(xiàn)實(shí)引擎平臺(tái)分為四個(gè)層次,在每一層中,根據(jù)不同的應(yīng)用領(lǐng)域和功能,劃分成各個(gè)功能模塊,如圖1所示。
圖1 基于XNA的虛擬現(xiàn)實(shí)引擎架構(gòu)圖
引擎的四個(gè)層次分別為基礎(chǔ)層、元素控制層、表現(xiàn)層和邏輯層,而XNA FrameWork和.NET FrameWork主要是為各層功能的實(shí)現(xiàn)提供函數(shù)庫支撐。這一三維游戲引擎提供了開發(fā)虛擬現(xiàn)實(shí)系統(tǒng)基本的功能函數(shù)與應(yīng)用,以此作為開發(fā)平臺(tái),開發(fā)人員可以根據(jù)游戲的設(shè)計(jì)內(nèi)容,通過調(diào)用已經(jīng)封裝好的API函數(shù),完成游戲的邏輯控制、圖像渲染、動(dòng)畫與音頻效果等工作。
引擎的基礎(chǔ)層由三個(gè)功能模塊組成,輸入管理模塊的主要職責(zé)是對(duì)輸入設(shè)備產(chǎn)生的事件進(jìn)行處理和響應(yīng),這些設(shè)備包括鼠標(biāo)、鍵盤、手柄、頭盔、手套等虛擬領(lǐng)域較常用的輸入設(shè)備;通信管理模塊主要是對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行控制和管理,目前虛擬現(xiàn)實(shí)技術(shù)和設(shè)備正向著分布式與大規(guī)模的方向發(fā)展,系統(tǒng)中各結(jié)點(diǎn)和組成部分的通信都是以網(wǎng)絡(luò)數(shù)據(jù)為基礎(chǔ),該模塊主要是調(diào)用.NET FrameWork中有關(guān)網(wǎng)絡(luò)數(shù)據(jù)控制的相關(guān)函數(shù)實(shí)現(xiàn)對(duì)TCP/IP、P2P、UDP等協(xié)議的支持與控制;內(nèi)存管理模塊的主要功能是對(duì)虛擬現(xiàn)實(shí)系統(tǒng)的內(nèi)存空間進(jìn)行管理,包括優(yōu)化內(nèi)在分配,處理內(nèi)在泄漏等。由于虛擬現(xiàn)實(shí)系統(tǒng)需要進(jìn)行大量的圖像渲染等極耗內(nèi)存資源的操作,因此,良好的內(nèi)容管理是保證系統(tǒng)性能的關(guān)鍵點(diǎn)。
元素控制層主要是對(duì)虛擬現(xiàn)實(shí)系統(tǒng)的細(xì)粒度組成元素進(jìn)行管理和控制。圖像渲染模塊負(fù)責(zé)實(shí)時(shí)渲染三維虛擬世界,這是游戲引擎中的關(guān)鍵部件,其效率和性能的表現(xiàn)將直接對(duì)虛擬現(xiàn)實(shí)系統(tǒng)產(chǎn)生影響,它主要是通過調(diào)用XNA FrameWork中與圖形圖像渲染有關(guān)的函數(shù)來實(shí)現(xiàn)的;視音頻管理主要是對(duì)虛擬現(xiàn)實(shí)系統(tǒng)中所有的背景音樂、動(dòng)作音效、視頻元素等進(jìn)行控制和處理,傳統(tǒng)的基于DirectX的控制方式需要編寫大量的代碼,而在本引擎中,通過調(diào)用XNA中的AudioEngine類就可以實(shí)現(xiàn)對(duì)音效的控制;物理特性庫主要是存儲(chǔ)物理規(guī)律數(shù)學(xué)模型,物理系統(tǒng)是虛擬現(xiàn)實(shí)引擎的重要組成部分,其作用是增強(qiáng)虛擬現(xiàn)實(shí)系統(tǒng)的真實(shí)感,通過XNA中的剛體碰撞處理和柔體碰撞處理過程,可實(shí)現(xiàn)對(duì)真實(shí)物體碰撞過程的模擬。
表現(xiàn)層主要包括動(dòng)畫管理、特效管理和界面管理三個(gè)模塊,主要的功能是提供逼真的視覺效果和友好的人機(jī)界面。在虛擬現(xiàn)實(shí)中一些特定的自然場景需要由粒子系統(tǒng)來實(shí)現(xiàn),如火焰、瀑布、煙霧等,本質(zhì)上,它是將大量的細(xì)小物體聚集到一起形成一個(gè)不規(guī)則的模糊物體,從而展現(xiàn)不同的特效,在XNA中,利用通過一些基礎(chǔ)類的處理,將各個(gè)粒子的位置信息、材質(zhì)信息等存儲(chǔ)到三維向量數(shù)組中,再根據(jù)一定的物理規(guī)律數(shù)學(xué)模型,實(shí)現(xiàn)虛擬現(xiàn)實(shí)所需的特殊效果;動(dòng)畫也是虛擬現(xiàn)實(shí)中的重要元素,主要有關(guān)節(jié)動(dòng)畫、漸變動(dòng)畫、骨骼蒙皮動(dòng)畫等,利用XNA的材質(zhì)管理與動(dòng)畫管理函數(shù),引擎實(shí)現(xiàn)了物體的基本動(dòng)畫動(dòng)作,供開發(fā)人員調(diào)用;界面管理與普通的Windows程序界面類似,在引擎中是通過調(diào)用.NET FrameWork的相關(guān)函數(shù)來實(shí)現(xiàn)的。
邏輯層主要是為開發(fā)人員提供人工智能、內(nèi)容邏輯控制以及輔助工具等功能服務(wù)。人工智能主要是為虛擬現(xiàn)實(shí)中的NPC(非操作人員控制角色)行為和戰(zhàn)略決策等功能提供支持,它直接影響到虛擬現(xiàn)實(shí)系統(tǒng)的智能程度;輔助工具是為開發(fā)者提供創(chuàng)建場景、材質(zhì)、動(dòng)畫、特效等虛擬現(xiàn)實(shí)元素的功能,可以有效地縮短系統(tǒng)的開發(fā)時(shí)間;內(nèi)容邏輯控制主要是為虛擬現(xiàn)實(shí)系統(tǒng)提供符合設(shè)計(jì)目標(biāo)的內(nèi)容邏輯定義與實(shí)現(xiàn),它是整個(gè)引擎的核心,統(tǒng)一調(diào)度各個(gè)模塊協(xié)同工作,控制數(shù)據(jù)流路徑,調(diào)用相關(guān)模塊處理輸入輸出等。
基于XNA的虛擬現(xiàn)實(shí)引擎是在XNA FrameWork和.NET FrameWork的支撐下建立的,并且將引擎的功能劃分為多個(gè)模塊,每一個(gè)模塊的實(shí)現(xiàn)幾乎都要調(diào)用XNA和.NET框架中的函數(shù)。在引擎的建立過程中,圖像渲染、粒子特效等的設(shè)計(jì)與實(shí)現(xiàn)是引擎成功開發(fā)的關(guān)鍵技術(shù)。
對(duì)于開發(fā)人員而言,最好是通過簡單的函數(shù)調(diào)用來實(shí)現(xiàn)圖像渲染的功能,因此在設(shè)計(jì)渲染模塊時(shí),將模塊分為三個(gè)部分,一個(gè)部分是面向開發(fā)者提供的渲染模塊接口部分,提供了API函數(shù)供開發(fā)人員調(diào)用,主要實(shí)現(xiàn)的是著色器以及頂點(diǎn)管理功能;第二個(gè)部分是具體實(shí)現(xiàn)圖像渲染功能的模塊,主要是提供了材質(zhì)紋理管理功能和渲染隊(duì)列管理功能;第三個(gè)部分是網(wǎng)格模型部分,它首先從文件中讀取三維虛擬物體的模型,然后利用前兩個(gè)部分對(duì)其進(jìn)行渲染。
著色器指的是一組供計(jì)算機(jī)圖形資源在執(zhí)行渲染任務(wù)時(shí)使用的指令。它包括頂點(diǎn)級(jí)和像素級(jí)兩種控制粒度。由于著色器是可編程的,所以開發(fā)人員可利用著色器實(shí)現(xiàn)不同的圖像效果,而無需考慮硬件設(shè)備的限制問題,從而得到高質(zhì)量的畫面展現(xiàn)。從原理上看,著色器是利用硬件圖形處理器,也就是GPU來實(shí)現(xiàn)對(duì)圖像的渲染處理。從DirectX9.0開始,微軟公司引入了類C語言來對(duì)著色器進(jìn)行編程控制,稱為 HLSL(High Level Shading language)。XNA同樣使用HLSL來繪制所有的三維物體,其繪制的過程包括以下幾個(gè)步驟:先把著色器文件(Shader文件)導(dǎo)入到項(xiàng)目的“Contents”目錄中,然后創(chuàng)建一個(gè)Effect類的實(shí)例并初始化,再啟動(dòng)著色器對(duì)象并設(shè)置參數(shù),最后繪制場景。
頂點(diǎn)與索引的管理是虛擬現(xiàn)實(shí)系統(tǒng)的基本管理單元,因?yàn)樵谔摂M的三維世界中,所有的物體都是由點(diǎn)、線、多邊形構(gòu)成的,而線和多邊形都是由點(diǎn)來確定的,因此對(duì)系統(tǒng)中“點(diǎn)”的管理是所有矢量圖像管理的基本操作。XNA框架中對(duì)圖像頂點(diǎn)的支持包括:
1)VertexPositionColor結(jié)構(gòu),可以定義一個(gè)包含頂點(diǎn)坐標(biāo)和渲染顏色的頂點(diǎn)。
2)VertexPositionTexture結(jié)構(gòu),可以定義一個(gè)包含頂點(diǎn)坐標(biāo)和紋理坐標(biāo)的頂點(diǎn)。
3)VertexPositionColorTexture結(jié)構(gòu),可以定義一個(gè)包含頂點(diǎn)坐標(biāo)、渲染顏色和紋理坐標(biāo)的頂點(diǎn)。
4)VertexPositionNormalTexture結(jié)構(gòu),可以定義一個(gè)包含頂點(diǎn)坐標(biāo)和法向量數(shù)據(jù)以及紋理坐標(biāo)的頂點(diǎn)。
在完成了對(duì)頂點(diǎn)的定義后,最快的繪制方式是使用頂點(diǎn)緩存器將頂點(diǎn)的數(shù)據(jù)存儲(chǔ)到事先定義的緩存內(nèi),再根據(jù)需求向用戶界面繪制三維圖形。這種處理方式的優(yōu)點(diǎn)在于可以在緩沖區(qū)內(nèi)對(duì)頂點(diǎn)進(jìn)行多次渲染,而無需重新傳輸頂點(diǎn)數(shù)據(jù)。但在復(fù)雜圖形的情況下,僅使用頂點(diǎn)緩存器將會(huì)占用較大的存儲(chǔ)空間,因此在實(shí)際的開發(fā)中引入了索引緩存器實(shí)現(xiàn)時(shí)間效率與空間效率的平衡。
材質(zhì)與紋理管理是對(duì)三維虛擬物體表面視覺效果的處理。材質(zhì)指的是物體表面對(duì)光照的反射程度,在具體的程序?qū)崿F(xiàn)中,它是一個(gè)包含了顏色、質(zhì)地等信息的結(jié)構(gòu)體。而紋理其實(shí)是一個(gè)位圖,在建立三維虛擬物體的過程中被貼到物體的表面。材質(zhì)與紋理的讀取需要占用較大的內(nèi)存空間和運(yùn)算資源,因此,為了避免相同材質(zhì)的重復(fù)讀取,在引擎的開發(fā)過程中建立了材質(zhì)與紋理的管理庫,并將一些常用的材質(zhì)與紋理常駐內(nèi)存,有效地提高了虛擬現(xiàn)實(shí)系統(tǒng)的性能。
渲染隊(duì)列決定了材質(zhì)渲染的次序,在一個(gè)虛擬現(xiàn)實(shí)的場景內(nèi)一般會(huì)有幾個(gè)三維物體等待被渲染,如果不加控制,渲染的過程將耗費(fèi)大量的時(shí)間和空間,使幀刷新頻率大幅下降。引擎設(shè)計(jì)中的渲染次序策略采用的是按材質(zhì)與紋理分類的渲染排序方式,盡可能地減少材質(zhì)與紋理的讀寫次數(shù),提高渲染的效率。
網(wǎng)格模型,也就是Mesh模型,是虛擬現(xiàn)實(shí)中三維物體的模型,具體表現(xiàn)為人物、建筑、植物等。網(wǎng)格模型一般是由包含渲染信息的點(diǎn)、線、面集合構(gòu)成的,一般是由設(shè)計(jì)人員完成設(shè)計(jì)后保存到文件,再由開發(fā)人員通過編程讀取文件加載到虛擬現(xiàn)實(shí)系統(tǒng)中。目前有很多工具支持對(duì)虛擬三維物體的創(chuàng)建,如3DMax,Maya等,由這些軟件創(chuàng)建完成的三維物體模型可通過腳本化操作而直接被XNA讀取。XNA直接對(duì).x和.fbx兩種模型文件格式提供支持,并通過Model類和ModelMesh類對(duì)其進(jìn)行控制和處理。在虛擬物體加載完成后,引擎將綜合使用另外兩個(gè)部分的相關(guān)功能對(duì)其進(jìn)行渲染和處理。
粒子特效系統(tǒng)的設(shè)計(jì)目的是為了模擬不規(guī)則的模糊物體,如霧、煙等。粒子特效系統(tǒng)利用簡單的,有一定生命的細(xì)小粒子為構(gòu)成自然界不規(guī)則的景物。每一個(gè)粒子都具有一定的屬性,包括大小、著色、形狀、速度、運(yùn)動(dòng)方向等。不同的應(yīng)用領(lǐng)域,其粒子的屬性也不同,但一般都會(huì)經(jīng)過產(chǎn)生、活動(dòng)、消亡這三個(gè)階段,從而展示出自然界物體的動(dòng)態(tài)變化。
在基于XNA的虛擬現(xiàn)實(shí)引擎的粒子特效系統(tǒng)中建立了三個(gè)類,分別是粒子類、粒子生命期類和粒子調(diào)整類,其中,粒子類中記錄了自身的屬性,如大小、著色、位置、速度等,該類提供了讀取與設(shè)置這些屬性值的方法。粒子類的對(duì)象只關(guān)心自身的狀態(tài),而不需要關(guān)注其他粒子對(duì)象的狀態(tài),所有粒子對(duì)象的狀態(tài)由粒子生命期類和粒子調(diào)整類進(jìn)行管理。粒子生命期類的功能是對(duì)每一個(gè)粒子的生命周期進(jìn)行管理,負(fù)責(zé)粒子的創(chuàng)建并設(shè)置粒子的屬性,當(dāng)粒子的狀態(tài)為消亡時(shí),負(fù)責(zé)對(duì)粒子對(duì)象的析構(gòu)。粒子調(diào)整類提供的函數(shù)是對(duì)粒子的運(yùn)行活動(dòng)狀態(tài)進(jìn)行控制,如爆炸情景的粒子特效應(yīng)是以爆炸點(diǎn)為中心向四周發(fā)散;煙霧粒子特效應(yīng)是彌漫型的,且隨著風(fēng)的方向運(yùn)動(dòng)。
對(duì)于粒子特效的繪制,XNA提供了兩種渲染的方式,Point Sprite和Sprite Batch。Point Sprite方式對(duì)基本的點(diǎn)圖元功能進(jìn)行了擴(kuò)展,支持點(diǎn)對(duì)象的貼圖操作,并支持紋理的直接設(shè)置。除此之外,還能夠?qū)c(diǎn)對(duì)象的大小、顏色、透明度等進(jìn)行設(shè)置,與粒子特效系統(tǒng)相配合,可以實(shí)現(xiàn)火焰、爆炸、雨等多種特殊的效果。Sprite Batch的處理方式是基于XNA的SpriteBatch類來實(shí)現(xiàn)的,SpriteBatch類支持一組相同設(shè)置精靈對(duì)象的繪制。
基于課題研究的三維引擎,我們開發(fā)了多個(gè)虛擬現(xiàn)實(shí)系統(tǒng),這里僅以爆炸特效為例,闡述系統(tǒng)功能的具體實(shí)現(xiàn)過程。
爆炸特效在多種場合得到應(yīng)用,特別是在軍事虛擬現(xiàn)實(shí)方面應(yīng)用得更為廣泛。這一特效的實(shí)現(xiàn)主要是依靠引擎中的粒子特效模塊來實(shí)現(xiàn)的。首先創(chuàng)建一個(gè)爆炸類ParticleExplosion,該類主要完成對(duì)爆炸效果中所有粒子的移動(dòng)、更新以及描繪,該類繼承了三維引擎中的粒子調(diào)整類,并改寫了基類中的方法,使之能夠更好地展現(xiàn)爆炸的粒子效果。
以下為ParticleExplosion類中實(shí)現(xiàn)粒子更新操作的代碼:
爆炸的粒子特效如圖2所示。
圖2 爆炸粒子特效圖
基于XNA的虛擬現(xiàn)實(shí)三維引擎還可用于工業(yè)生產(chǎn)的仿真領(lǐng)域中,以該引擎為基礎(chǔ),設(shè)計(jì)開發(fā)了基于 Web的電子元器件生產(chǎn)模擬系統(tǒng),利用Silverlight技術(shù),與XNA技術(shù)相結(jié)合,基于網(wǎng)頁實(shí)現(xiàn)對(duì)生產(chǎn)過程的三維模擬。Silverlight技術(shù)提供了對(duì)GPU的支持,使基于XNA的三維引擎運(yùn)行更為順暢。
首先要開啟系統(tǒng)對(duì)于GPU加速的支持。由于三維模型的渲染等操作將需要大量的計(jì)算機(jī)時(shí)間,如果使用CPU進(jìn)行處理,則會(huì)導(dǎo)致系統(tǒng)性能的急劇下降,而利用GPU的并行處理能力,可以加速三維模型的處理過程。對(duì)于GPU加速支持的開啟方法是在Silverlight應(yīng)用程序的宿主網(wǎng)頁文件配置中加入代碼〈param name="EnableGPUAcceleration"value="true"/〉。在Silverlight應(yīng)用程序的主界面位置添加DrawSerface控件。這一控件相當(dāng)于XNA三維模型繪制的畫板,用于承載與顯示三維模型。該控件有一個(gè)Draw事件,在該事件的處理方法中加入對(duì)三維模型的繪制與控制代碼,在后臺(tái)文件的控制代碼中,引用三維模擬引擎對(duì)象,通過對(duì)對(duì)象方法的調(diào)用,實(shí)現(xiàn)各個(gè)模型的加載繪制,具體代碼如下:
在后臺(tái)代碼中,還需要定義三維模型的繪制方法函數(shù),該函數(shù)接受兩個(gè)參數(shù),分別是三維模型的視圖矩陣和投影矩陣,具體函數(shù)的代碼如下:
系統(tǒng)實(shí)現(xiàn)的效果如圖3所示。
圖3 基于XNA三維引擎的工業(yè)生產(chǎn)過程模擬界面
虛擬現(xiàn)實(shí)技術(shù)的應(yīng)用越來越廣泛,其技術(shù)的成熟度也越來越高。而隨著計(jì)算機(jī)硬件的升級(jí)以及圖形圖像處理技術(shù)的完善,游戲引擎在各個(gè)方面都已經(jīng)與先進(jìn)的虛擬現(xiàn)實(shí)引擎接近。利用三維的游戲引擎來實(shí)現(xiàn)虛擬現(xiàn)實(shí)系統(tǒng),可以在系統(tǒng)效果、運(yùn)行速度以及開發(fā)成本這三個(gè)方面達(dá)到平衡?;谖④涀钚碌挠螒蜷_發(fā)平臺(tái)XNA實(shí)現(xiàn)的虛擬現(xiàn)實(shí)三維引擎,采用分層架構(gòu)和模塊化的設(shè)計(jì)開發(fā)思想,事實(shí)證明取得了較好的效果。
[1]張占龍,羅辭勇,何為.虛擬現(xiàn)實(shí)技術(shù)概述[J].計(jì)算機(jī)仿真,2005,22(3):1-3,7.
[2]蘇建明,張續(xù)紅,胡慶夕.展望虛擬現(xiàn)實(shí)技術(shù)[J].計(jì)算機(jī)仿真,2004,21(1):18-21.
[3]江峰.3D游戲引擎研究與實(shí)現(xiàn)[D].杭州:浙江大學(xué)碩士論文,2005:5-10.
[4]Microsoft Corporation.XNA FrameWork Class Library[EB/OL].http://msdn.microsoft.com/en-us/library/bb203940(v=XNAGameStudio.31).aspx,2010-03-10.
[5]David H.Eberly.3DGame Engine Design:A Practical Approach to Real-Time Computer Graphics[M].Second Edition.San Fransisco:Morgan Kaufmann,2006:341-358.