五邑大學(xué)計(jì)算機(jī)學(xué)院 王 準(zhǔn) 袁承武
隨著虛擬現(xiàn)實(shí)技術(shù)和互聯(lián)網(wǎng)的發(fā)展,基于互聯(lián)網(wǎng)的虛擬現(xiàn)實(shí)慢慢進(jìn)入人們的視野。人們通過(guò)互聯(lián)網(wǎng),足不出戶(hù)就可以游覽逼真度很高的虛擬博物館、虛擬城市等虛擬現(xiàn)實(shí)場(chǎng)景。
網(wǎng)絡(luò)虛擬現(xiàn)實(shí)技術(shù)主要靠虛擬現(xiàn)實(shí)建模語(yǔ)言(Virtual Reality Modeling Language,VRML)來(lái)實(shí)現(xiàn),VRML拓寬了虛擬現(xiàn)實(shí)技術(shù)的應(yīng)用領(lǐng)域。面對(duì)越來(lái)越多的需求,VRML逐漸暴露出如不支持XML編碼,交互性差等缺點(diǎn)。于是X3D[1](Extensible 3D)標(biāo)準(zhǔn)應(yīng)運(yùn)而生,X3D是VRML的繼承和發(fā)展。
針對(duì)傳統(tǒng)汽車(chē)導(dǎo)購(gòu)網(wǎng)站以二維圖片形式展示的弊端,本文利用新的X3D標(biāo)準(zhǔn)來(lái)設(shè)計(jì)的展示系統(tǒng)能夠使瀏覽者仿佛置身于真實(shí)車(chē)展當(dāng)中,充分體現(xiàn)虛擬現(xiàn)實(shí)的沉浸性、交互性。
X3D整體結(jié)構(gòu)[2]包括核心特性集、VRML97特性集、應(yīng)用程序接口和擴(kuò)展集四個(gè)部分。(1)核心特征集:定義了VRML97的54個(gè)節(jié)點(diǎn)中最為關(guān)鍵的23個(gè)節(jié)點(diǎn),形成核心組件,并將其封裝為一個(gè)小型的、可擴(kuò)展的內(nèi)核,運(yùn)行時(shí)占用很少的系統(tǒng)資源;(2)VRML97特征集:將內(nèi)核以外的VRML97節(jié)點(diǎn)設(shè)計(jì)為可拔插的組件,通過(guò)擴(kuò)展內(nèi)核,完整地實(shí)現(xiàn)了VRML97規(guī)范定義的功能,從而確保了X3D與已有的VRML應(yīng)用兼容;(3)應(yīng)用程序接口:X3D是描述幾何體行為的一種文件格式,由于使用了XML編碼,文檔對(duì)象模型為X3D提供了一組應(yīng)用程序接口,外部應(yīng)用程序可以通過(guò)DOM訪問(wèn)X3D文件節(jié)點(diǎn)元素;(4)擴(kuò)展集:在內(nèi)核之上進(jìn)行特性集擴(kuò)展,用戶(hù)可以添加其他的擴(kuò)展或自定義新的硬件渲染技術(shù),以實(shí)現(xiàn)復(fù)雜的功能。
整個(gè)系統(tǒng)的虛擬場(chǎng)景有許多的X3D文件組成,X3D文件結(jié)構(gòu)[3]包含文件頭、文件體及注釋等內(nèi)容,在主程序概貌中包括頭文檔、組件、說(shuō)明以及場(chǎng)景等。在場(chǎng)景中利用基本幾何節(jié)點(diǎn)、復(fù)雜節(jié)點(diǎn)、組節(jié)點(diǎn)、紋理節(jié)點(diǎn)、效果節(jié)點(diǎn)、組件節(jié)點(diǎn)、人性化節(jié)點(diǎn)以及動(dòng)態(tài)感知節(jié)點(diǎn)等創(chuàng)建虛擬現(xiàn)實(shí)三維立體場(chǎng)景。
系統(tǒng)前臺(tái)的三維呈現(xiàn)采用與瀏覽器完美兼容的BS Contact引擎,BS Contact引擎對(duì)X3D擴(kuò)展節(jié)點(diǎn)提供了很好的支持。BS Contact為JavaScript提供了一個(gè)EAI(External Scripting interface)外部編程接口,這個(gè)接口允許外部程序JavaScript讀取和改變X3D內(nèi)部已被命名節(jié)點(diǎn)的任何域的值。
系統(tǒng)承載容器選用流行的Tomcat服務(wù)器,數(shù)據(jù)的處理將使用SQL Server 2005數(shù)據(jù)庫(kù)。
虛擬展示系統(tǒng)采用客戶(hù)端層、中間件層及數(shù)據(jù)庫(kù)層三層架構(gòu)模式,客戶(hù)端層負(fù)責(zé)接收用戶(hù)點(diǎn)擊事件及三維場(chǎng)景顯示,中間件層根據(jù)不同請(qǐng)求將從數(shù)據(jù)庫(kù)層獲取的相應(yīng)信息返回給客戶(hù)端層。圖1為系統(tǒng)的架構(gòu)示意圖。
需要采集的數(shù)據(jù)包括汽車(chē)三視圖、汽車(chē)各項(xiàng)性能參數(shù)信息、場(chǎng)景及汽車(chē)零部件貼圖。三視圖用于汽車(chē)的建模參考,貼圖則用于增加場(chǎng)景真實(shí)感,性能參數(shù)信息使用戶(hù)了解汽車(chē)模型無(wú)法表現(xiàn)的性能信息。這些數(shù)據(jù)由JSP采集頁(yè)面收集并傳遞給服務(wù)器的servlet,在servlet中通過(guò)JDBC代碼將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。
系統(tǒng)提供車(chē)型查詢(xún)功能,用戶(hù)可以從數(shù)據(jù)庫(kù)中查詢(xún)出自己想了解的汽車(chē)產(chǎn)品的型號(hào)在客戶(hù)端里面察看,同時(shí)也可以在展廳里同時(shí)查詢(xún)出兩種車(chē)型進(jìn)行對(duì)比展示,使用戶(hù)對(duì)兩款汽車(chē)有更直觀的認(rèn)識(shí)和了解。
實(shí)現(xiàn)查詢(xún)?cè)硎钱?dāng)用戶(hù)針對(duì)不同車(chē)型發(fā)起請(qǐng)求時(shí),服務(wù)器負(fù)責(zé)查詢(xún)的servlet將從數(shù)據(jù)庫(kù)中獲取相應(yīng)的數(shù)據(jù)返回給客戶(hù)端瀏覽器,相應(yīng)JSP頁(yè)面展現(xiàn)給用戶(hù)所需信息。
3D Studio Max,常簡(jiǎn)稱(chēng)為3ds Max或MAX,是Autodesk公司開(kāi)發(fā)的基于PC系統(tǒng)的三維動(dòng)畫(huà)渲染和制作軟件。廣泛應(yīng)用于廣告、影視、工業(yè)設(shè)計(jì)、建筑設(shè)計(jì)、多媒體制作、游戲、輔助教學(xué)以及工程可視化等領(lǐng)域。系統(tǒng)場(chǎng)景由大量三維實(shí)體模型組成,主要有汽車(chē)、展廳及內(nèi)部裝飾、山地、小型城鎮(zhèn)等,所以系統(tǒng)中汽車(chē)、展廳等復(fù)雜的物體采用強(qiáng)大的3DS MAX工具來(lái)建模。
模型需要轉(zhuǎn)換為X3D格式的文件,由于3DS MAX對(duì)X3D不支持復(fù)雜材質(zhì)的導(dǎo)出,所以導(dǎo)出的X3D模型文件需要使用X3D標(biāo)準(zhǔn)提供的材質(zhì)節(jié)點(diǎn)進(jìn)行處理,例如為模型增加貼圖、光澤度、燈光等使場(chǎng)景更加逼真。模型建好之后使用X3D的Inline節(jié)點(diǎn)將其組合到場(chǎng)景中。X3D的另一個(gè)作用是在場(chǎng)景中添加對(duì)一些用戶(hù)點(diǎn)擊事件的處理節(jié)點(diǎn)、完成一些模型的移入和移出動(dòng)作、對(duì)場(chǎng)景及模型進(jìn)行細(xì)節(jié)的調(diào)整。圖2、3為場(chǎng)景效果圖。
本系統(tǒng)各種交互事件主要靠X3D的內(nèi)部Script節(jié)點(diǎn)[4]來(lái)完成。
內(nèi)部Script節(jié)點(diǎn)是一個(gè)特殊的可編程節(jié)點(diǎn),它不能直接感應(yīng)用戶(hù)的操作,在三維空間中也不可見(jiàn),但可以嵌套為模型節(jié)點(diǎn)的下級(jí)子節(jié)點(diǎn)并可與任意節(jié)點(diǎn)進(jìn)行連接。當(dāng)Script節(jié)點(diǎn)收到一個(gè)輸入事件時(shí),首先將事件值傳到URL指定的文件中,通過(guò)這個(gè)腳本設(shè)置該Script節(jié)點(diǎn)輸出事件的值。在編寫(xiě)用戶(hù)自定義腳本和設(shè)定虛擬模型的傳感事件時(shí),Script節(jié)點(diǎn)的輸入、輸出域和其他感受器節(jié)點(diǎn)的輸入、輸出域的數(shù)據(jù)類(lèi)型必須嚴(yán)格匹配[5]。
JSP頁(yè)面腳本程序與場(chǎng)景交互的一般步驟是首先在腳本程序獲取瀏覽器對(duì)象,通過(guò)瀏覽器對(duì)象加載場(chǎng)景;然后通過(guò)瀏覽器對(duì)象訪問(wèn)場(chǎng)景對(duì)象;其次由場(chǎng)景對(duì)象訪問(wèn)節(jié)點(diǎn)對(duì)象;最后由節(jié)點(diǎn)訪問(wèn)域?qū)ο?,包括設(shè)置域值、監(jiān)聽(tīng)事件等。
圖4、5分別為交互原理圖和內(nèi)部Script節(jié)點(diǎn)交互測(cè)試用例,用戶(hù)通過(guò)點(diǎn)擊JSP頁(yè)面控件來(lái)改變虛擬場(chǎng)景。例如,改變場(chǎng)景中物體的顏色、顯示或隱藏物體、旋轉(zhuǎn)物體等效果。
系統(tǒng)采用同樣的原理來(lái)對(duì)虛擬展廳和虛擬試車(chē)場(chǎng)進(jìn)行控制。例如改變展廳汽車(chē)的角度、改變漫游路線和視角等。
X3D標(biāo)準(zhǔn)作為新一代Web三維圖形的標(biāo)準(zhǔn),基于它制作的虛擬場(chǎng)景文件體積小,交互功能強(qiáng)大,且具有平臺(tái)無(wú)關(guān)性,其發(fā)展前景廣闊。本文構(gòu)建的網(wǎng)絡(luò)虛擬汽車(chē)展示系統(tǒng)除實(shí)現(xiàn)了基本的汽車(chē)展示功能外,還利用X3D的內(nèi)部節(jié)點(diǎn)功能完成系統(tǒng)的交互功能。系統(tǒng)真實(shí)感還有待增強(qiáng),是下一步需要完善的重點(diǎn)工作。
[1]ISO/IEC FDIS 19775-1.2:2008 Information technology-Computer graphics,image processing and environmental representation-Extensible 3D(X3D)-Part 1:Architecture and base components[S].2008.
[2]劉廣濤,吳升.基于X3D的場(chǎng)景交互技術(shù)在虛擬生物博物館中的應(yīng)用.系統(tǒng)仿真學(xué)報(bào),2008,20:348-351.
[3]Web3D Consortium.Introduction[EB/OL].(2007-12).http://www.web3d.org/x3d/specifications/ISO-IECFDIS-19775-1.2-X3D-Abstract-Specification/Part01/introduction.html.
[4]李海慶,殷國(guó)富,胡瑞飛.基于X3D的虛擬場(chǎng)景交互架構(gòu)的實(shí)現(xiàn)方法研究[J].系統(tǒng)仿真學(xué)報(bào),2006,18(2):383-385.
[5]黃正軍,周建中.基于X3D的虛擬場(chǎng)景動(dòng)態(tài)交互技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2007,29(7):55-57.