劉萍萍,陸兆攀,高武奇
(西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710021)
隨著虛擬現(xiàn)實(shí)及相關(guān)技術(shù)的不斷進(jìn)步與發(fā)展,人們之間的交流也將采用新的方式、進(jìn)入新的領(lǐng)域,實(shí)現(xiàn)由文字圖像到三維VR(虛擬現(xiàn)實(shí))的轉(zhuǎn)變[1]。當(dāng)前以信息技術(shù)為背景的現(xiàn)代教育,絕大部分多媒體信息系統(tǒng)具有明顯的局限性,例如學(xué)生只能按照時(shí)間的流程,按電腦中程序設(shè)計(jì)的流向有限制地進(jìn)行瀏覽和學(xué)習(xí),這大大降低了學(xué)生學(xué)習(xí)的參與性以及熱情。而虛擬現(xiàn)實(shí)技術(shù)[2]能夠創(chuàng)建與現(xiàn)實(shí)社會(huì)類似的環(huán)境,可以使人產(chǎn)生一種身臨其境的真實(shí)感,能夠使人與虛擬環(huán)境之間進(jìn)行多維信息的交互,形象生動(dòng)地表現(xiàn)教學(xué)內(nèi)容,有效地營造一個(gè)跟隨技術(shù)發(fā)展的教學(xué)環(huán)境,提高學(xué)生掌握知識、技能的效率,優(yōu)化教學(xué)過程、提高教學(xué)質(zhì)量、調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性、突破教學(xué)的重點(diǎn)、難點(diǎn)。在教育方面營造一個(gè)“自主學(xué)習(xí)”的環(huán)境進(jìn)而取代傳統(tǒng)的“以教促學(xué)”的學(xué)習(xí)方式,為數(shù)字大學(xué)建設(shè)提供一個(gè)重要的校園信息化平臺。但在虛擬仿真校園的應(yīng)用上也只是簡單地提供虛擬校園環(huán)境給學(xué)生及家長們?yōu)g覽,在基于教學(xué)、教務(wù)、校園生活的交互方面還需要進(jìn)一步的研究[1]。
文中以西安工業(yè)大學(xué)未央校區(qū)為虛擬空間,通過應(yīng)用OpenGL編程、3D max建模技術(shù)以及SQL數(shù)據(jù)庫技術(shù),從OpenGL基本圖形元的創(chuàng)建、渲染、視角的轉(zhuǎn)換等方面,創(chuàng)建出具有全景圖展示、固定路徑漫游、交互式漫游、碰撞檢測響應(yīng)、漫游系統(tǒng)交互性等功能的虛擬校園漫游系統(tǒng)[3]。
虛擬校園漫游系統(tǒng)[4-5](virtual campus)屬于假想或者真實(shí)空間的仿真,漫游系統(tǒng)以地理、虛擬現(xiàn)實(shí)、多媒體、寬帶等技術(shù)作為基礎(chǔ),結(jié)合了屬性和地理空間信息等方面的內(nèi)容,并進(jìn)行了逼真的虛擬校園環(huán)境的構(gòu)建,用戶能夠通過計(jì)算機(jī)網(wǎng)絡(luò)對校園景觀進(jìn)行訪問,并利用終端計(jì)算機(jī)在虛擬校園環(huán)境中展開漫游以及相應(yīng)的搜索和查詢等[6]。
1.1.1 OpenGL技術(shù)
OpenGL(open graphics library),也被稱作是圖形程序接口技術(shù),是一套三維圖形處理庫,一個(gè)跨編程語言、跨平臺的編程接口,一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖形庫[7]。OpenGL具有性能高、穩(wěn)定性好、工業(yè)標(biāo)準(zhǔn)、可靠度高、靈活性好、可伸縮性、可擴(kuò)展性、容易使用等特點(diǎn),可以被集成到Unix、Windows等窗口系統(tǒng)中,其功能基本上都以C函數(shù)的形式提供給外界,開發(fā)人員可利用這些函數(shù)輕松地對整個(gè)三維圖形進(jìn)行光色渲染。本系統(tǒng)以Visual C++為平臺,利用OpenGL技術(shù)建立三維場景,調(diào)用3DS Max對建筑模型進(jìn)行建模,實(shí)現(xiàn)虛擬漫游[8]。
1.1.2 SQL數(shù)據(jù)庫技術(shù)
SQL數(shù)據(jù)庫技術(shù)[9],即操作命令集,在使用時(shí),不必考慮“怎么做”,只需要發(fā)出“做什么”的命令就可以,屬于一種功能齊全的數(shù)據(jù)庫語言。SQL功能強(qiáng)大,使用方便,成本低,性能高,已成為數(shù)據(jù)庫操作的基礎(chǔ)。
1.1.3 虛擬現(xiàn)實(shí)技術(shù)
虛擬現(xiàn)實(shí)技術(shù)(virtual reality)結(jié)合了多方面的應(yīng)用,具有自主性、交互性以及感知性等特點(diǎn),是一種高級仿真技術(shù),其能夠?qū)μ摂M世界進(jìn)行創(chuàng)建之后的體驗(yàn)。其主要包括模擬環(huán)境、感知、自然技能和傳媒設(shè)備等方面的內(nèi)容。通過計(jì)算機(jī)可以進(jìn)行環(huán)境的模擬,并利用專用設(shè)備讓用戶投入到相應(yīng)過程中,使用戶和環(huán)境之間的交互得以實(shí)現(xiàn)。
基于OpenGL的虛擬現(xiàn)實(shí)技術(shù)[10]是通過計(jì)算機(jī)圖形學(xué)的理論來建模實(shí)現(xiàn),在這個(gè)過程中旨在實(shí)現(xiàn)校園的虛擬漫游與交互。本課題主要討論基于VC++開發(fā)平臺和OpenGL的虛擬校園漫游系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),利用3D Max建模,通過天空盒算法的Background節(jié)點(diǎn)技術(shù)實(shí)現(xiàn)天空繪制,并采用LOD算法實(shí)現(xiàn)地形渲染等,最終實(shí)現(xiàn)了虛擬校園漫游系統(tǒng)。系統(tǒng)開發(fā)流程如圖1所示。
圖1 系統(tǒng)開發(fā)流程
虛擬場景的建設(shè)可分為三步:第一步,根據(jù)校園內(nèi)各建筑物以及各環(huán)境物體的分布圖和具體平面圖,建立一個(gè)真實(shí)的虛擬校園;第二步,對校園內(nèi)各單個(gè)實(shí)體對象分別建模,以場為基礎(chǔ),在空間上連續(xù)分布諸如地形、天空等景觀對象,以離散的實(shí)體為特征,以獨(dú)立的個(gè)體為存在的地形對象,如建筑物、樹木、路燈等;第三步,構(gòu)建好各個(gè)單獨(dú)的實(shí)體場景后,再把這些場景整合在一起,合成完整的虛擬校園場景。
該設(shè)計(jì)利用OpenGL進(jìn)行建模,采用3D紋理貼圖的方式繪制場景,借助照相機(jī)、Photoshop等圖像采集與處理的離散圖像通過計(jì)算及處理進(jìn)行了全景圖的生成,最后在VC++6.0環(huán)境中進(jìn)行交互控制,從而實(shí)現(xiàn)虛擬校園全景漫游系統(tǒng)。
系統(tǒng)基本功能模塊如圖2所示。
圖2 系統(tǒng)基本功能模塊
在虛擬校園的實(shí)現(xiàn)過程中,完整的三維空間數(shù)據(jù)和影像數(shù)據(jù)是構(gòu)建虛擬校園必不可少的。在建立地形模型的過程中,通常采取的方法是數(shù)字?jǐn)z影測量?;跀z影測量的基本原理,以相片作為原始資料,通過影像處理、影像匹配等方法生成模擬模型和數(shù)字模型,然后轉(zhuǎn)化成DEM格式,將形成的DEM與數(shù)字地圖輸入到相應(yīng)的數(shù)據(jù)庫。數(shù)據(jù)處理流程如圖3所示。
圖3 數(shù)據(jù)處理流程
在建筑物當(dāng)中,不同內(nèi)容的高度確定往往是依照建筑設(shè)計(jì)圖紙來進(jìn)行的,在獲得建筑物幾何特征三維模型的過程中,能夠利用建筑設(shè)計(jì)圖紙展開進(jìn)一步的提取??衫靡延械貓D掃描數(shù)字化的矢量數(shù)據(jù)應(yīng)對屋頂?shù)娜S建筑技術(shù)要求不高的建筑物。假如僅僅是得到了二維矢量數(shù)據(jù)內(nèi)容,那么應(yīng)當(dāng)依照樓層層數(shù)進(jìn)行高度的推斷。
對于紋理數(shù)據(jù),通過紋理圖像能夠?qū)拔锉砻嫠哂械牟灰粯拥姆瓷涮匦赃M(jìn)行表示。在這個(gè)過程中所表示的紋理映射也就是把已經(jīng)制定圖像當(dāng)中的部分內(nèi)容進(jìn)行映射,使之映射到紋理映射的圖像片段當(dāng)中,這種映射與圖像顏色到圖像坐標(biāo)位置有密切關(guān)系,并且在這個(gè)過程中可以進(jìn)行圖段RGBA顏色的進(jìn)一步修改。要使用當(dāng)前的紋理繪制圖元,必須在繪制每個(gè)頂點(diǎn)之前為該頂點(diǎn)制定紋理坐標(biāo)。只需調(diào)用glTexCoord2d(s:Double;t:Double)函數(shù)即可。其中,s、t是相對2D紋理產(chǎn)生的s、t坐標(biāo)。對所有紋理,無論其具有怎樣的大小,在左上角也就是頂端的紋理坐標(biāo)都是(0,0),右下角則是(1,1)。在這個(gè)過程中表示的是,紋理坐標(biāo)應(yīng)當(dāng)是一個(gè)在0到1之間所具有的數(shù)字。
紋理貼圖實(shí)現(xiàn)代碼如下:
namespace OGL
{class CCylinder
{float m_Radia;//圓柱半徑
floatm_Height;
int m_Slice;//圓柱由m_Slice個(gè)劃分
CGLTexture *m_pTexture;
Public;
CCylinder():m_pTexture(NULL)
{m_Radia=1 280-128;
m_Height=1 024+1 024;
m_Slice=12;
CharCylinderTex[255]=“Scene1.JPG”;
LoadCylinderTexture(CylinderTex);}
void LoadCylinderTexture(char*CylinderTex)
{If(m_pTexture!=NULL)delete m_pTexture;
m_pTexture=new CGLTexture(Cylinder Tex);}
~CCylinder()
{ deletem_pTexture;}}
在該系統(tǒng)開發(fā)中,通過3D Max軟件與OpenGL的結(jié)合使用,降低了系統(tǒng)構(gòu)建的復(fù)雜程度。構(gòu)建虛擬校園模型的關(guān)鍵是要分析場景的形態(tài)特點(diǎn),根據(jù)場景模型存在的狀態(tài)特性,可劃分為動(dòng)態(tài)實(shí)體模型和靜態(tài)實(shí)體模型。
在獲得相應(yīng)的紋理圖片及信息數(shù)據(jù)之后,根據(jù)虛擬校園系統(tǒng)組成情況進(jìn)行場景模型的建模。系統(tǒng)三維模型如圖4所示。
圖4 系統(tǒng)三維模型
(1)虛擬校園的靜態(tài)實(shí)體模型構(gòu)建。
校園靜態(tài)實(shí)體[11]包括教學(xué)樓、圖書館、操場、道路及綠化等。靜態(tài)建模主要是以實(shí)體自身特性的幾何模型建模和以實(shí)體因外部環(huán)境引起的物理模型建模組成。靜態(tài)實(shí)體模型的物理建模,主要是對因外在環(huán)境引起的不同實(shí)體紋理。而靜態(tài)實(shí)體模型的幾何模型,主要是自身外形的實(shí)體模型。在靜態(tài)實(shí)體模型的幾何建模過程中,根據(jù)采集的實(shí)體模型數(shù)據(jù)的復(fù)雜程度不同,對于規(guī)則靜態(tài)實(shí)體模型可以使用3D Max來建立模型。而對于不規(guī)則實(shí)體模型,先使用AutoCAD對模型輪廓進(jìn)行修改[12],再通過3D Max建立模型。
(2)虛擬校園的動(dòng)態(tài)實(shí)體模型構(gòu)建。
在構(gòu)建校園系統(tǒng)模型過程中,構(gòu)建運(yùn)動(dòng)部分時(shí)有可能會(huì)改變原來模型組織的內(nèi)部結(jié)構(gòu),所以應(yīng)在建模形成的模型文件中增加與運(yùn)動(dòng)部分鏈接的自由度節(jié)點(diǎn),設(shè)置相應(yīng)的定位坐標(biāo),并在自由度基礎(chǔ)上對模型的運(yùn)動(dòng)部分進(jìn)行分析,從而確定運(yùn)動(dòng)關(guān)系。
動(dòng)態(tài)實(shí)體模型作為虛擬校園系統(tǒng)模型的重要組成部分,其建模過程是:用建模工具3D Max構(gòu)建校園系統(tǒng)模型中動(dòng)態(tài)模型的靜態(tài)、動(dòng)態(tài)兩個(gè)部分,在構(gòu)建動(dòng)態(tài)模型過程中將自由度增大;增強(qiáng)動(dòng)態(tài)實(shí)體模型的動(dòng)畫展示效果;在虛擬校園系統(tǒng)的模型中呈現(xiàn)動(dòng)態(tài)模型的flash效果。
(3)天空場景的設(shè)計(jì)。
本系統(tǒng)中天空的實(shí)現(xiàn)使用了天空盒算法的Background節(jié)點(diǎn),為虛擬校園場景的天空增加藍(lán)天白云效果,以提高三維虛擬校園場景的真實(shí)性。在Background節(jié)點(diǎn)中,分別用skyColor和skyAngle域值來控制天空的顏色。skyColor域指定立體空間背景天空的顏色,域值是由一系列的紅色、綠色和藍(lán)色組合而成。skyAngle域是指定立體空間背景上需著色的位置的天空角。在這個(gè)過程中對所有天空的顏色進(jìn)行設(shè)定,從而產(chǎn)生相應(yīng)的過渡,產(chǎn)生漸變作用,從而使天空看起來更加逼真。
天空盒的實(shí)現(xiàn)是通過矩形方盒作為天空遠(yuǎn)景貼圖,產(chǎn)生相應(yīng)的立方體。首先生成一個(gè)足夠大的立方體,然后將表現(xiàn)天氣效果的不同天空紋理貼在立方體盒子的各個(gè)不同面上,避免出現(xiàn)太平面化、粗糙的情況,采用一種淺藍(lán)色的天空使背景進(jìn)一步得以消除,以此來表達(dá)模擬效果的逼真程度。作為天空背景的圖片需滿足的條件是:圖形格式應(yīng)當(dāng)為BMP,即位圖;根據(jù)size參數(shù)設(shè)置圖片尺寸,尺寸有嚴(yán)格的要求,最好是2的倍數(shù);設(shè)置好保存路徑和名稱,渲染時(shí)必須保證四邊應(yīng)與相關(guān)圖像的位置相互連接。
(1)建筑物幾何模型優(yōu)化。
在虛擬校園系統(tǒng)中,依據(jù)學(xué)校中建筑物的外觀以及結(jié)構(gòu)展開分類,之后進(jìn)行模型構(gòu)建,對外觀或者結(jié)構(gòu)相同的建筑物采取同樣的模型進(jìn)行建造,對較為復(fù)雜的模型則通過拆分方法進(jìn)行簡化,之后展開建模。
在建筑物建模方面,幾何模型包含頂部和墻面兩方面的內(nèi)容。墻面可以利用畫面或者線段的手段得以實(shí)現(xiàn)。頂部包含一切頂點(diǎn)坐標(biāo),因?yàn)樵诮_^程中不同建筑物具有不同的頂部形狀,不能采取通用模型對建筑物頂部的狀況進(jìn)行表達(dá),需要依照相關(guān)規(guī)則排列的坐標(biāo)數(shù)據(jù)對不同的信息進(jìn)行推進(jìn),對所有建筑物都需要依照頂部外形特征展開分類,對于不同建筑物采取的幾何模型數(shù)據(jù)也是完全不同的。
(2)三維虛擬校園建筑物的紋理映射。
“在影響翻譯實(shí)踐的諸多因素中,最活躍且起著決定性作用的,是翻譯的主體因素?!盵3]許鈞總結(jié)了國內(nèi)有關(guān)翻譯的主體的討論,得出翻譯主體可以是:“譯者,原作者與譯者,譯者與讀者,原作者、譯者與讀者,”[4]雖然他沒有具體的指出翻譯主體的具體概念,但總的來看,由于譯員在翻譯活動(dòng)中擁有獨(dú)特地位、創(chuàng)造性和能動(dòng)性,造成其在翻譯主中的不可或缺性。許鈞在《翻譯的主體間性與視界融合》一文中提出:“翻譯活動(dòng)中作者、譯者和讀者之間關(guān)系的和諧是保證翻譯成功的重要條件?!盵5]
對建筑物窗戶進(jìn)行建模通常利用線段展開構(gòu)造,對窗戶的框架進(jìn)行描述并展開渲染。由于校內(nèi)建筑物體眾多,若要一一進(jìn)行建模,需要消耗太多的時(shí)間,且會(huì)影響系統(tǒng)運(yùn)行速度。所以不同建筑物表面的窗戶都能利用紋理映射的方法展開建模。具體的實(shí)現(xiàn)手段在于:將學(xué)校中所有建筑物的數(shù)據(jù)紋理展開加工并轉(zhuǎn)換成對應(yīng)格式,對所有面展開相應(yīng)的映射。
(3)消隱處理。
在真實(shí)感圖形生成中,為了提高模型的加載效率,需要對場景模型進(jìn)行消隱處理。場景的消隱就是給定視點(diǎn)以及視線,進(jìn)一步?jīng)Q定場景當(dāng)中物體表面的可見性以及被遮擋之后不可見的特性。消隱可看成是一個(gè)排序問題,排序的效率可影響到消隱算法的效率。
在某個(gè)視點(diǎn)當(dāng)中對三維物體進(jìn)行觀察,能夠看到物體表面分布的點(diǎn)線面,而其他部分可能被這些部分進(jìn)行遮擋,如果想要使三維物體得以展現(xiàn),應(yīng)當(dāng)在確定相應(yīng)的視線之后,對表面不可見的點(diǎn)線面進(jìn)行消除,這種方法也就是消隱算法。
目前的消隱算法中,背面消除、Z緩沖器算法、畫家算法以及掃描線算法等比較常見。
Z緩沖器算法主要是對投影平面上每個(gè)像素所對應(yīng)的表面深度進(jìn)行比較。不需要整個(gè)場景的幾何數(shù)據(jù),是所有圖像空間算法當(dāng)中較為簡單的消隱內(nèi)容。面對同樣的像素,Z緩沖器往往是進(jìn)行表面的保存,假如新的表面深度相對緩沖器表面深度與視點(diǎn)更加接近,那也就保存了新的內(nèi)容。
Z緩沖器算法實(shí)現(xiàn)代碼如下:
{for(x=0;x for(y=0;y 置Z緩存的第(x,y)單元的顏色為背景色;} for(每一個(gè)多邊形平面) for(投影平面上的每一個(gè)像素) {計(jì)算多邊形在該像素(x,y)處的深度值d; If(d>Z緩存在(x,y)處的值) {置Z緩存的第(x,y)單元的深度值為d; 置Z緩存的第(x,y)單元的顏色值為當(dāng)前多邊形顏色值;}}} 虛擬現(xiàn)實(shí)技術(shù)最主要的特征之一是實(shí)時(shí)交互性,是虛擬校園建設(shè)的核心。三維場景構(gòu)建好后,需進(jìn)行交互性的調(diào)試。系統(tǒng)可以通過實(shí)時(shí)交互控制,借助鼠標(biāo)、鍵盤等外部輸入設(shè)備,在電腦上實(shí)現(xiàn)校園的漫游虛擬。 系統(tǒng)交互漫游時(shí)主要通過NavigationInfo(導(dǎo)航)節(jié)點(diǎn)和Viewpoint(視點(diǎn))節(jié)點(diǎn)進(jìn)行控制。瀏覽速度和方式通過NavigationInfo節(jié)點(diǎn)設(shè)置,瀏覽校園中相應(yīng)場景時(shí),其位置和朝向通過Viewpoint節(jié)點(diǎn)設(shè)置。用戶借助鍵盤、鼠標(biāo)等外部設(shè)備對校園場景直接交互功能的實(shí)現(xiàn)如圖5所示。 圖5 直接交互功能 在系統(tǒng)實(shí)現(xiàn)的進(jìn)程中,當(dāng)用戶站立角度發(fā)生改變時(shí),場景內(nèi)的物體就應(yīng)當(dāng)重新展開繪制。具體方法包括:利用場景中三維物體的改變得以完成,或者通過視點(diǎn)變換使交互場景畫面得以改變。 gluLookAt()函數(shù)是OpenGL中提出的視點(diǎn)變換的方法,這種函數(shù)對旋轉(zhuǎn)和平移的命令進(jìn)行了封裝,其通過眼睛位置、參考和矢量進(jìn)行矩陣的改變,并將目標(biāo)點(diǎn)映射到相應(yīng)z軸當(dāng)中,原點(diǎn)屬于其觀察點(diǎn)。在投影矩陣的過程中,場景映射到相關(guān)視區(qū)中心,而向上矢量則映射到y(tǒng)軸當(dāng)中,不過在這個(gè)過程中向上矢量并不一定與視線到參考線之間進(jìn)行平衡。 交互漫游控制實(shí)現(xiàn)的主要代碼如下: (1)初始化模型。 static t3DMode1 g_3DMode1[2]; CLoad3DS* m_3DS=new CLoad3DS; m_3DS->Init(“neicum2 3DS”,0); gLoadName(0); m_3DS>show3DS(0,g_3DModel[0].Position x,g_3DModel[0].Position y,g_3DModel[0].Position z,0. 6,g_3DModel[0].bngitude,g_3DModel[0].latitude); (2)選擇函數(shù)。 hits=glRendeMode(GL_RENDER); if(hits<=0) return -1; returnselectBuf[(hits-1)*4+3]; (3)平移函數(shù)。 g_3DModel[hits].Position x+=m_xTranslation; g_3DModel[hits].Position y+=m_yTranslation; (4)旋轉(zhuǎn)函數(shù)。 g_3DMode[hits].longitude-=theta; g_3DMode[hits].latitude+=phi; 碰撞檢測技術(shù)[13]主要是對場景內(nèi)部的物體進(jìn)行,隨著在場景內(nèi)部全局Camera的移動(dòng),相當(dāng)于觀察者在場景中進(jìn)行漫游。當(dāng)觀察者移動(dòng)到一些場景內(nèi)部時(shí),如果沒有碰撞檢測,就會(huì)直接穿過物體,不符合實(shí)際情況,所以需要引入碰撞檢測技術(shù)。 本模塊主要利用包裝盒算法[14]對三維場景中的物體區(qū)域進(jìn)行判斷,建立包裝盒,判斷場景中哪些物體應(yīng)當(dāng)展開碰撞檢測。在發(fā)生包裝盒級別碰撞的過程中,對三角形級別碰撞是否發(fā)生進(jìn)行進(jìn)一步的判斷。這種包裝盒級別分區(qū)域級別[15],最后進(jìn)行的往往是三角形級別過程中的檢測,相對于普通檢測算法,精確度往往較高,而且避免了碰撞檢測過程中導(dǎo)致的性能損失。在具體實(shí)現(xiàn)過程中有如下方面的手段:首先依照物體運(yùn)動(dòng)規(guī)律或者用戶輸入在每一幀的位置進(jìn)行計(jì)算,這時(shí)不用對碰撞檢測問題進(jìn)行考慮,然后再對場景中的三角形進(jìn)行循環(huán)檢測。在循環(huán)的過程中進(jìn)行如下操作: (1)找到當(dāng)前三角形所在的平面,暫且稱之為平面S; (2)對物體在上一幀以及當(dāng)前位置進(jìn)行判斷,并判斷其與平面S之間存在的關(guān)系。假如上一幀在平面之前,而這一幀已經(jīng)達(dá)到了平面之后,那么進(jìn)行第1步的計(jì)算。 (3)因?yàn)樵谄矫鎯蓚?cè)屬于前后兩幀物體的移動(dòng),也就表示物體已經(jīng)穿過了平面當(dāng)中。但是由于平面沒有邊界,這時(shí)不能表示物體與三角形之間產(chǎn)生了碰撞,還需要對物體在三角形三條邊范圍當(dāng)中的界限進(jìn)行判斷。在通過了三條邊之后進(jìn)行平面PS1,PS2,PS3的垂直設(shè)置。并令其法線指向內(nèi)部當(dāng)中,對物體位置進(jìn)行判斷,判斷其是否處于相應(yīng)的平面當(dāng)中,是則轉(zhuǎn)步驟4,否則轉(zhuǎn)步驟5。 (4)當(dāng)確定物體與三角形產(chǎn)生碰撞之后進(jìn)行位置的修正,使其能夠依照S進(jìn)行運(yùn)動(dòng)。 (5)當(dāng)確定物體沒有產(chǎn)生碰撞時(shí),將下一個(gè)三角形作為相應(yīng)的三角形,并重新返回步驟1。 攝像機(jī)虛擬漫游效果如圖6所示。 圖6 虛擬漫游效果 以虛擬現(xiàn)實(shí)技術(shù)為基礎(chǔ),介紹了基于OpenGL虛擬校園漫游系統(tǒng)的開發(fā)情況,對開發(fā)虛擬校園漫游系統(tǒng)的基本算法進(jìn)行進(jìn)一步研究,并對場景模型的建模和漫游交互功能等內(nèi)容進(jìn)行介紹和實(shí)現(xiàn)。完成了三維虛擬校園漫游系統(tǒng)的開發(fā)設(shè)計(jì)。通過測試,該虛擬校園漫游系統(tǒng)運(yùn)行流暢。虛擬校園全景漫游系統(tǒng)真實(shí)地進(jìn)行了三維景觀的表述,用戶可以借助鼠標(biāo)和鍵盤等外部設(shè)備在三維虛擬校園場景中漫游,使校園真實(shí)感的交互操作得以實(shí)現(xiàn)。 參考文獻(xiàn): [1] 李建榮,孔素真.虛擬現(xiàn)實(shí)技術(shù)在教育中的應(yīng)用研究[J].實(shí)驗(yàn)室科學(xué),2014,17(3):98-100. [2] 趙 蔚,段 紅.虛擬現(xiàn)實(shí)軟件研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(2):229-233. [3] 王文韜,謝陽群,李 力.虛擬現(xiàn)實(shí)技術(shù)在圖書館中的應(yīng)用前景分析[J].圖書館,2016(5):10-14. [4] 馬利亞.基于虛擬現(xiàn)實(shí)的漫游系統(tǒng)關(guān)鍵技術(shù)的研究[D].哈爾濱:哈爾濱工程大學(xué),2010. [5] 劉小英,張 健.三維校園虛擬現(xiàn)實(shí)平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].湖北農(nóng)業(yè)科學(xué),2014,53(12):2909-2912. [6] 李清艷,傅自鋼.基于OpenGL的三維時(shí)鐘設(shè)計(jì)[J].電腦與信息技術(shù),2016,24(3):52-54. [7] 肖 健,魏 雄,王仁波.基于OpenGL的大型建筑三維場景模擬的實(shí)現(xiàn)與意義[J].電子質(zhì)量,2016(11):88-92. [8] 馬 萍.三維虛擬校園立體場景的設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東師范大學(xué),2013. [9] 王琰萍.山東信息職業(yè)技術(shù)學(xué)院虛擬校園的設(shè)計(jì)與實(shí)現(xiàn)[D].青島:中國海洋大學(xué),2011. [10] 婁啟業(yè),程效軍,譚 凱.基于AutoCAD和3DMax的建筑物三維建模[J].工程勘察,2013(11):71-74. [11] 田文波.成都理工大學(xué)虛擬校園建設(shè)的研究[D].成都:成都理工大學(xué),2013. [12] ZHOU Z,FENG Y,GANG R,et al.Virtual reality based process integrated simulation platform in refinery:virtual refinery and its application[J].China Petroleum Processing & Petrochemical Technology,2011,13(3):74-84. [13] NOVAKMARCINCIN J.Selected applications of virtual reality in manufacturing[J].Journal for Technology of Plasticity,2011,36(1):25-34. [14] KAMARAJ D C,DICIANNO B E,MAHAJAN H P,et al.Stability and workload of the virtual reality-based simulator-2[J].Archives of Physical Medicine & Rehabilitation,2016,97(7):1085-1092. [15] BAMODU O,YE X M.Virtual reality and virtual reality system components[J].Advanced Materials Research, 2013,765-767:1169-1172.3 虛擬校園漫游系統(tǒng)交互性的實(shí)現(xiàn)
3.1 交互漫游的實(shí)現(xiàn)
3.2 交互漫游的控制
3.3 碰撞檢測功能的實(shí)現(xiàn)
4 結(jié)束語