何 苗
(陜西工業(yè)職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,咸陽(yáng) 712000)
隨著信息技術(shù)以及互聯(lián)網(wǎng)技術(shù)的發(fā)展,幾乎所有的科技前沿應(yīng)用都與互聯(lián)網(wǎng)密切相關(guān)。Web3D即網(wǎng)絡(luò)三維圖形技術(shù)也在互聯(lián)網(wǎng)技術(shù)的基礎(chǔ)上得到了延伸。Web3D技術(shù)是指在網(wǎng)頁(yè)中顯示真實(shí)環(huán)境高近似度的三維場(chǎng)景,通過(guò)在場(chǎng)景中加入互動(dòng)元素并運(yùn)用鼠標(biāo)、鍵盤(pán)以及顯示器等設(shè)備實(shí)現(xiàn)真實(shí)場(chǎng)景下無(wú)法實(shí)現(xiàn)的與場(chǎng)景中物體交互的操作來(lái)產(chǎn)生身臨其境的體驗(yàn)。研究和開(kāi)發(fā)虛擬場(chǎng)景演示系統(tǒng)框架可以使場(chǎng)景開(kāi)發(fā)工作模塊化以及流程化,而這些標(biāo)準(zhǔn)化工作解決了虛擬三維場(chǎng)景的多變以及復(fù)雜性。
網(wǎng)絡(luò)三維圖形技術(shù)即Web3D,它是虛擬現(xiàn)實(shí)技術(shù)在網(wǎng)絡(luò)應(yīng)用中的一個(gè)發(fā)展方向,目的是在網(wǎng)頁(yè)中展示三維圖形效果。Web3D早起標(biāo)準(zhǔn)為VRML,隨著VRML的使用,其性能以及實(shí)現(xiàn)中缺陷的出現(xiàn)使得Web3D組織發(fā)布了新的標(biāo)準(zhǔn)Extensible 3D即X3D。
目前Web3D技術(shù)主要分為兩部分:商業(yè)公司專有的Web3D技術(shù)以及Web3D聯(lián)盟發(fā)布的標(biāo)準(zhǔn)技術(shù)。許多商業(yè)軟件公司推出一些包含編輯工具以及顯示場(chǎng)景插件的Web3D軟件,這些軟件各具特色,各自擁有優(yōu)勢(shì)。目前比較成熟的Web3D軟件有荷蘭Act-3D公司的 Quest3D、法國(guó)的Virtools等。
本系統(tǒng)選擇Turntool工具作為插件,用來(lái)搭建基于網(wǎng)絡(luò)的虛擬場(chǎng)景演示系統(tǒng)框架。Turntool作為上海世博會(huì)網(wǎng)絡(luò)世博官方指定技術(shù)具有輕巧、便捷的特點(diǎn)。由于Web3D虛擬場(chǎng)景演示系統(tǒng)開(kāi)發(fā)周期過(guò)長(zhǎng),因此搭建一個(gè)能夠適用于不同項(xiàng)目以及不同場(chǎng)景的通用Web3D虛擬場(chǎng)景演示系統(tǒng)框架將具有積極意義。系統(tǒng)采用XML技術(shù)對(duì)框架中所涉及的場(chǎng)景分塊、導(dǎo)航以及場(chǎng)景配置信息的屬性配置進(jìn)行記錄,并通過(guò)研究時(shí)間,最終構(gòu)造出符合通用性角度的Web3D演示系統(tǒng)框架圖。如圖1所示。
本系統(tǒng)框架采用B/S三層架構(gòu),用戶通過(guò)瀏覽器可以在頁(yè)面中與三維場(chǎng)景內(nèi)模型進(jìn)行對(duì)話、移動(dòng)物體等互動(dòng),并可以在場(chǎng)景中播放多媒體文件以及查看全景布局圖,已達(dá)到與用戶交互的目的。
圖1 Web3D虛擬場(chǎng)景演示系統(tǒng)框架Fig.1 Web3D virtual scene demonstration system framework
由于http協(xié)議不是面向連接的通信,因此在端對(duì)端的通信中本系統(tǒng)用戶采用消息服務(wù)器與Web服務(wù)器交互的方式進(jìn)行通信,這種通過(guò)讀取XML配置信息來(lái)對(duì)Web服務(wù)器進(jìn)行動(dòng)態(tài)加載指定場(chǎng)景以及場(chǎng)景相關(guān)材質(zhì)的工作,而這種方式對(duì)實(shí)時(shí)Web3D應(yīng)用開(kāi)發(fā)達(dá)到了簡(jiǎn)化的目的。在通用性方面,框架系統(tǒng)制定了在程序開(kāi)發(fā)中遵守的技術(shù)標(biāo)準(zhǔn),能夠?qū)eb3D場(chǎng)景進(jìn)行快速開(kāi)發(fā)。在框架系統(tǒng)的便捷靈活性方面,提供配置管理工具以實(shí)現(xiàn)個(gè)性化場(chǎng)景配置。
同時(shí),為了保證系統(tǒng)的靈活性,還必須提供相
虛擬場(chǎng)景演示系統(tǒng)框架通過(guò)建立模型以及程序編寫(xiě)兩部分進(jìn)行開(kāi)發(fā)。首先通過(guò)3Ds Max建立模型,通過(guò)TurnTool插件將模型導(dǎo)出成能夠發(fā)布到網(wǎng)絡(luò)中進(jìn)行查看的.tnt類型文件;接下來(lái)進(jìn)行程序開(kāi)發(fā),系統(tǒng)主要采用Java語(yǔ)言結(jié)合Ajax技術(shù)進(jìn)行開(kāi)發(fā)。根據(jù)圖1所示虛擬場(chǎng)景演示系統(tǒng)框架圖通過(guò)以下方式創(chuàng)建Web3D場(chǎng)景演示實(shí)例。
通過(guò)建立場(chǎng)景可以向網(wǎng)絡(luò)中發(fā)布靜態(tài)三維場(chǎng)景,用戶通過(guò)瀏覽器在場(chǎng)景中進(jìn)行移動(dòng)以及查看信息。使用3Ds Max將已建好的模型通過(guò)Turntool導(dǎo)出成test.tnt文件,然后使用Eclipse集成GWT插件的平臺(tái)加載系統(tǒng)項(xiàng)目,將導(dǎo)出的.tnt文件放置到項(xiàng)目scenes文件夾下新建的test文件夾中。項(xiàng)目結(jié)構(gòu)如如圖2所示。
圖2 項(xiàng)目構(gòu)建結(jié)構(gòu)Fig.2 Project construction
修改工程war文件夾下Viewer.html文件中mainScene的參數(shù)將其設(shè)置為“test”。
運(yùn)行工程,啟動(dòng)GWT本地服務(wù)器,輸入http://localhost:8080/Viewer.html地址,就能夠在瀏覽器中看到新建的test.tnt三維場(chǎng)景。
在三維場(chǎng)景較大的情況下,創(chuàng)建時(shí)可以根據(jù)類型對(duì)其進(jìn)行區(qū)域劃分,根據(jù)需要將完整場(chǎng)景分割成小場(chǎng)景,為了在多場(chǎng)景中進(jìn)行自由切換,需要在演示場(chǎng)景中建立場(chǎng)景導(dǎo)航。本系統(tǒng)通過(guò)XML文件對(duì)導(dǎo)航配置信息進(jìn)行記錄。在項(xiàng)目scenes文件夾中建立XML文件scenmap.xml。假設(shè)需要在sc1、sc2和sc3三個(gè)場(chǎng)景中進(jìn)行切換,系統(tǒng)將在項(xiàng)目scenes文件夾中新建與三個(gè)場(chǎng)景同名的文件夾,并將已建立好的.tnt模型文件導(dǎo)入各自場(chǎng)景文件夾中,如sc1.tnt、sc2.tnt和sc3.tnt。導(dǎo)入完成后對(duì)scenmap.xml進(jìn)行配置:
配置結(jié)束后啟動(dòng)服務(wù)器后,可以觀察到場(chǎng)景頂部導(dǎo)航菜單中新增場(chǎng)景導(dǎo)航菜單,通過(guò)點(diǎn)擊導(dǎo)航菜單達(dá)到場(chǎng)景切換以及迅速定位的效果。
每個(gè)場(chǎng)景中共性操作部分和個(gè)性操作部分,例如音頻播放、鼠標(biāo)或鍵盤(pán)步行瀏覽、全景圖等內(nèi)容屬于共性操作,而開(kāi)關(guān)門(mén)、人物角色、不同場(chǎng)景導(dǎo)航有屬于個(gè)性操作。為了加以區(qū)分使用一套定制腳本文件進(jìn)行編譯,在加載場(chǎng)景時(shí)對(duì)這種腳本文件進(jìn)行加載以達(dá)到目的。
新建“js”文件夾用來(lái)存放相應(yīng)場(chǎng)景中用于響應(yīng)不同事件的腳本文件。以場(chǎng)景sction1為例,將sction1.tnt放在scenes文件夾下,并在該文件夾下新建“js”文件夾用于存放腳本文件,新建sction1OnClick.js用于處理鼠標(biāo)點(diǎn)擊事件;sction1OnZone.js用于響應(yīng)區(qū)域內(nèi)事件;sction1OnInit.js用于參數(shù)初始化工作;sction1OnMouseEnter.js用于響應(yīng)鼠標(biāo)進(jìn)入事件。在sction1OnInit.js文件處理中,如果sction1中沒(méi)有導(dǎo)航菜單,編寫(xiě)代碼時(shí)只需要在js文件中加入如下代碼即可在加載場(chǎng)景時(shí)進(jìn)行參數(shù)讀取調(diào)用顯示地圖的方法以顯示地圖:
hasMap的值控制頁(yè)面中是否顯示地圖,地圖文件可以根據(jù)場(chǎng)景情況進(jìn)行繪制,保存為scmap.jpg并放置于sc1.tnt文件所在目錄下即可。
通過(guò)3Ds Max對(duì)場(chǎng)景進(jìn)行建??梢源罅繙p少模型量,同時(shí)可以將場(chǎng)景中的不同內(nèi)容作為材質(zhì)進(jìn)行存放,這種情況下也方便了設(shè)計(jì)人員對(duì)場(chǎng)景的修改。將模型導(dǎo)出tnt文件后可以在項(xiàng)目的scenes文件夾中建立存放外部材質(zhì)的extextures文件夾,只要用來(lái)保存場(chǎng)景中使用的圖片、視頻等。開(kāi)發(fā)設(shè)計(jì)的過(guò)程中,只需要更換此文件夾中的源文件即可更換場(chǎng)景中的圖片,極大的提高了項(xiàng)目開(kāi)發(fā)以及后期維護(hù)的靈活性以及便捷性。
隨著互聯(lián)網(wǎng)與虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,Web3D已成為互聯(lián)網(wǎng)發(fā)展的必然趨勢(shì),目前已經(jīng)出現(xiàn)很多基于Web3D的應(yīng)用,而所有的應(yīng)用必須在三維場(chǎng)景存在的情況下才能夠?qū)崿F(xiàn)。因此基于Web3D的虛擬場(chǎng)景演示系統(tǒng)成為了三維應(yīng)用的基礎(chǔ)。本文通過(guò)研究提出了一個(gè)虛擬場(chǎng)景演示系統(tǒng)框架,基于這個(gè)框架可以迅速、靈活的開(kāi)發(fā)出適用于不同應(yīng)用、通用且具備獨(dú)立個(gè)性的演示系統(tǒng)。當(dāng)然,本框架在通用性上還需加強(qiáng),并且Web3D技術(shù)目前還在發(fā)展中,關(guān)于虛擬場(chǎng)景演示系統(tǒng)框架的研究也在實(shí)際應(yīng)用中不斷的補(bǔ)充以及修正中。
[1] 陳錦昌,詹偉杰,何正國(guó).虛擬校園中三維景物表面貼圖的研究[J].東華大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,(04):57- 62.
[2] 王洪,朱清新. 用 VRML 實(shí)現(xiàn)虛擬校園的實(shí)時(shí)漫游[J].計(jì)算機(jī)應(yīng)用,2004,24(Z2):141- 143.
[3] 段新昱.虛擬現(xiàn)實(shí)基礎(chǔ)與 VRML 編程[M] .高等教育出版社.2004 年.
[4] 趙沁平.虛擬現(xiàn)實(shí)綜述[J]. 中國(guó)科學(xué)(F 輯:信息科學(xué)),2009,(1)