吳 迪
(大連大學(xué) 物理科學(xué)與技術(shù)學(xué)院,遼寧 大連 116622)
許多學(xué)校都建立了大學(xué)物理實(shí)驗(yàn)網(wǎng)站,學(xué)生可以登陸網(wǎng)站學(xué)習(xí)實(shí)驗(yàn)原理、操作方法等內(nèi)容。但目前的網(wǎng)站大多是二維平面展示,或有動(dòng)畫描述實(shí)驗(yàn)過(guò)程,而這一過(guò)程也是由程序編制者事先設(shè)定好的,只能按照一定的路線執(zhí)行,與實(shí)驗(yàn)的實(shí)際情況不符,真實(shí)感不強(qiáng),不能給學(xué)生身臨其境的感覺(jué),學(xué)生很難詳盡了解相關(guān)儀器設(shè)備的整體概況,這些二維的顯示方法已經(jīng)不能滿足人們的需要。虛擬現(xiàn)實(shí)(virtual reality)是一種可以用來(lái)創(chuàng)建并體驗(yàn)虛擬世界的計(jì)算機(jī)系統(tǒng),是計(jì)算機(jī)模擬出來(lái)的虛擬環(huán)境。此虛擬環(huán)境是由編寫的計(jì)算機(jī)程序生成的,用戶可以通過(guò)所操作的計(jì)算機(jī)進(jìn)入到這個(gè)環(huán)境并能操縱環(huán)境中的對(duì)象達(dá)到交互的目的[1-3]。VRML是一種三維場(chǎng)景的描述性語(yǔ)言,是第二代 Web上的關(guān)鍵技術(shù),也是在Internet網(wǎng)絡(luò)上能夠?qū)崿F(xiàn)虛擬現(xiàn)實(shí)的關(guān)鍵性技術(shù)[4-6]。在Internet上傳輸少量數(shù)據(jù)就可以在 Web上實(shí)現(xiàn)三維虛擬場(chǎng)景瀏覽功能,克服了其他三維立體模擬軟件的缺點(diǎn)。因而采用VRML開(kāi)發(fā)三維虛擬現(xiàn)實(shí)實(shí)驗(yàn)應(yīng)該是解決這些問(wèn)題的一種好方法[7-8]。首先虛擬現(xiàn)實(shí)實(shí)驗(yàn)中學(xué)生可沉浸在三維的、立體的環(huán)境中,這是符合人們?nèi)粘I盍?xí)慣的;其次在創(chuàng)建的虛擬環(huán)境中學(xué)生不是被動(dòng)地感受事物,而是可以通過(guò)自己的活動(dòng)去改變所感受的內(nèi)容。采用VRML技術(shù)創(chuàng)建的三維虛擬現(xiàn)實(shí)實(shí)驗(yàn)可以不受時(shí)間、地域的限制,學(xué)生或者教師可以自由地、無(wú)顧慮地隨時(shí)進(jìn)入到虛擬實(shí)驗(yàn)室中操作儀器設(shè)備,而他只需要在聯(lián)接到互聯(lián)網(wǎng)上的計(jì)算機(jī)瀏覽器上安裝VRML插件,如Cortona、Blaxxun Contact或Cosmoplayer等任意一種就可以進(jìn)行各種實(shí)驗(yàn)。顯然虛擬現(xiàn)實(shí)實(shí)驗(yàn)可以留給學(xué)生更多的思考時(shí)間和想象空間,從實(shí)驗(yàn)儀器的構(gòu)造原理到它們的使用方法;從測(cè)試公式的創(chuàng)建到實(shí)驗(yàn)環(huán)境的搭建,完全由學(xué)生自己進(jìn)行設(shè)計(jì)、組建,提高學(xué)生們學(xué)習(xí)的興趣,增加學(xué)生學(xué)習(xí)的時(shí)間,增加他們分析問(wèn)題的時(shí)間,充分調(diào)動(dòng)其主觀能動(dòng)性。
但目前所開(kāi)發(fā)的三維研究項(xiàng)目中大多存在交互性較弱以及沉浸感不強(qiáng)等問(wèn)題。本文以電子示波器實(shí)驗(yàn)為例就虛擬實(shí)驗(yàn)中復(fù)雜運(yùn)動(dòng)中交互控制的方法進(jìn)行深入研究。VRML本身不能進(jìn)行復(fù)雜交互設(shè)計(jì),因而對(duì)于像儀器調(diào)整等這樣完成復(fù)雜功能的交互式操作就不能只由VRML來(lái)完成。為了能夠?qū)崿F(xiàn)所創(chuàng)建的虛擬環(huán)境本身與操作者之間的復(fù)雜交互,就要利用虛擬空間與操作環(huán)境之間的接口來(lái)實(shí)現(xiàn)其與用戶間的交互,可以通過(guò)采用JavaScript編程實(shí)現(xiàn)這種功能[9-11],討論VRML中Script節(jié)點(diǎn)的應(yīng)用方法,并且最終建立具有交互操作功能的虛擬三維電子示波器實(shí)驗(yàn),很好地實(shí)現(xiàn)了復(fù)雜運(yùn)動(dòng)的交互控制功能。
虛擬場(chǎng)景的交互功能可以通過(guò)VRML節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。一個(gè)節(jié)點(diǎn)狀態(tài)的變化可以引起另外一個(gè)節(jié)點(diǎn)狀態(tài)的變化。在VRML中,通常將狀態(tài)的變化記為一個(gè)“事件”,發(fā)生變化的節(jié)點(diǎn)接受“輸入事件”,而引起其他節(jié)點(diǎn)變化的節(jié)點(diǎn)發(fā)出“輸出事件”。VRML提供了許多種感知器節(jié)點(diǎn),比如TouchSensor節(jié)點(diǎn),它可以接收鼠標(biāo)點(diǎn)擊形體的動(dòng)作并使程序發(fā)生相應(yīng)的變化,如發(fā)出聲音、改變顏色等;有可使通過(guò)鼠標(biāo)移動(dòng)來(lái)轉(zhuǎn)變形體繞坐標(biāo)軸旋轉(zhuǎn)運(yùn)動(dòng)的CylinderSensor節(jié)點(diǎn);有可以檢測(cè)觀察者接近的ProximitySensor節(jié)點(diǎn),利用它們可控制其他操作,如發(fā)出聲音,讓形體顏色變化、讓形體運(yùn)動(dòng)等;還有時(shí)間傳感器TimeSensor節(jié)點(diǎn)等。
圖1 VRML聯(lián)動(dòng)動(dòng)畫原理圖
VRML空間中各節(jié)點(diǎn)間的數(shù)據(jù)交換可以用來(lái)實(shí)現(xiàn)場(chǎng)景中的物體實(shí)現(xiàn)一些簡(jiǎn)單行為的交互動(dòng)作,比如打開(kāi)開(kāi)關(guān)時(shí)燈會(huì)亮、接近自動(dòng)門時(shí)門會(huì)自動(dòng)打開(kāi)等。通過(guò)路由及感知器節(jié)點(diǎn)基本上可以實(shí)現(xiàn)場(chǎng)景的簡(jiǎn)單交互控制。對(duì)于較復(fù)雜的交互控制,VRML采用Script節(jié)點(diǎn)實(shí)現(xiàn)這種功能。Script節(jié)點(diǎn)中的域指定一段實(shí)現(xiàn)事件處理的JavaScript或VRMLScript腳本,然后把程序中計(jì)算得到的結(jié)果遞交給Script節(jié)點(diǎn)的輸出事件,再通過(guò)路由將該事件傳遞給場(chǎng)景中某對(duì)象相關(guān)的域,以達(dá)到改變場(chǎng)景的目的,實(shí)現(xiàn)過(guò)程框圖如圖1所示。
虛擬示波器主要向用戶提供一個(gè)盡可能真實(shí)的仿真儀器和環(huán)境,可以通過(guò)VRMLPad或vrbuild[12]等軟件直接建造三維實(shí)驗(yàn)?zāi)P?,文件占用的字?jié)數(shù)較少,適宜在網(wǎng)絡(luò)上運(yùn)行;也可采用3DMAX等軟件建造再轉(zhuǎn)換成VRML格式文件,但缺點(diǎn)是形成的文件比較大,影響在網(wǎng)絡(luò)上運(yùn)行的速度及質(zhì)量。建造的三維示波器模型如圖2所示。用戶可以在其中自由操作虛擬示波器的各種球形旋鈕,對(duì)示波器的各種功能進(jìn)行研究,這個(gè)過(guò)程是通過(guò)人機(jī)交互來(lái)實(shí)現(xiàn)的。VRML允許用戶的行為能夠?qū)崟r(shí)作用于場(chǎng)景,場(chǎng)景節(jié)點(diǎn)通過(guò)EventIn接受事件,通過(guò)EventOut發(fā)出事件,通過(guò)路由將一個(gè)節(jié)點(diǎn)的事件出口和另一個(gè)節(jié)點(diǎn)的事件入口聯(lián)系成為事件體系使VRML具有動(dòng)態(tài)交互能力。但VRML語(yǔ)言本身所能完成的交互功能是有限的,要實(shí)現(xiàn)復(fù)雜的聯(lián)動(dòng)交互控制功能還需要通過(guò)腳本語(yǔ)言來(lái)實(shí)現(xiàn)。VRML提供了一個(gè)Script腳本節(jié)點(diǎn),通過(guò)該節(jié)點(diǎn)就可以實(shí)現(xiàn)復(fù)雜交互操作和邏輯控制等功能。Script節(jié)點(diǎn)允許用戶創(chuàng)建自己的域(field)和事件,其中包括EventIn入事件和EventOut出事件,再通過(guò)節(jié)點(diǎn)內(nèi)部程序的編寫來(lái)完成目標(biāo)功能。它支持多種腳本語(yǔ)言,如JavaScript,VRMLScript,VBScript等。
圖2 掃描時(shí)間調(diào)節(jié)
使用語(yǔ)句USE定義電子陣列。
打開(kāi)開(kāi)關(guān)后電子開(kāi)始做正弦運(yùn)動(dòng),實(shí)現(xiàn)聯(lián)動(dòng)效果。場(chǎng)景中傳感器節(jié)點(diǎn)通常定義了觸發(fā)事件,它通過(guò)路由發(fā)送給場(chǎng)景中的其他節(jié)點(diǎn)的入事件。如傳感器節(jié)點(diǎn)的觸發(fā)事件直接傳遞到插補(bǔ)器節(jié)點(diǎn)產(chǎn)生關(guān)鍵值插值,也可以傳遞Script節(jié)點(diǎn)進(jìn)行運(yùn)算處理產(chǎn)生關(guān)鍵值插值。
TimeSensor用來(lái)執(zhí)行開(kāi)始、停止及其他控制動(dòng)畫的動(dòng)作,它通過(guò)定時(shí)產(chǎn)生事件來(lái)表示時(shí)間的變化。
場(chǎng)景的變化需要一系列的變化數(shù)值,產(chǎn)生變化數(shù)值的節(jié)點(diǎn)可以是插補(bǔ)器節(jié)點(diǎn)或者Script節(jié)點(diǎn)。域值通過(guò)Route語(yǔ)句傳送,由節(jié)點(diǎn)的入事件接收并處理。Script結(jié)點(diǎn)在VRML場(chǎng)景中不被顯示,其工作原理如圖1所示。Script結(jié)點(diǎn)也可以由若干個(gè)入事件、出事件和包含腳本程序的url域等構(gòu)成。其中入事件EventIn用來(lái)接收來(lái)自其他節(jié)點(diǎn)的出事件,并交給對(duì)應(yīng)的同名函數(shù)進(jìn)行處理。url域中的處理函數(shù)計(jì)算出新的數(shù)值,并通過(guò)節(jié)點(diǎn)的出事件EventOut發(fā)送出去。
圖3 y增益調(diào)節(jié)
Route語(yǔ)句把一個(gè)節(jié)點(diǎn)的事件EventOut連接到另一個(gè)節(jié)點(diǎn)的事件EventIn,從而建立指定節(jié)點(diǎn)的域之間的通道。Route語(yǔ)句由出事件激活,當(dāng)發(fā)生一個(gè)出事件的時(shí)候,包含該事件EventOut的Route語(yǔ)句就被調(diào)用,對(duì)應(yīng)的事件EventIn就會(huì)接收到信息,同時(shí)可以對(duì)事件EventIn做出相應(yīng)的處理,從而改變節(jié)點(diǎn)的狀態(tài),實(shí)現(xiàn)電子的正弦運(yùn)動(dòng)。
通過(guò)使用VRML的Script節(jié)點(diǎn)編程實(shí)現(xiàn)了基于VRML技術(shù)的虛擬實(shí)驗(yàn)交互控制技術(shù),設(shè)計(jì)實(shí)現(xiàn)了具有交互控制功能的電子示波器實(shí)驗(yàn)。采用高級(jí)語(yǔ)言如JavaScript或VRMLScript等與VRML混合編程彌補(bǔ)了VRML自身如邏輯判斷、場(chǎng)景精確控制等不足問(wèn)題。利用虛擬現(xiàn)實(shí)系統(tǒng),可以彌補(bǔ)實(shí)驗(yàn)場(chǎng)地、設(shè)備以及教學(xué)經(jīng)費(fèi)不足等的影響。開(kāi)發(fā)的系統(tǒng)基于B/S模式,程序的運(yùn)行、開(kāi)發(fā)和維護(hù)都是在服務(wù)器端進(jìn)行的,系統(tǒng)易于擴(kuò)展功能,靈活方便、安全可靠。虛擬現(xiàn)實(shí)技術(shù)發(fā)展前景十分誘人,特別是與互聯(lián)網(wǎng)絡(luò)的結(jié)合,在某種意義上說(shuō)它將改變?nèi)藗儗?duì)空間和時(shí)間的看法。利用它開(kāi)發(fā)虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)必將對(duì)教育、教學(xué)質(zhì)量的提高,學(xué)生學(xué)習(xí)興趣及能力的培養(yǎng)起到積極而重要的作用。
[1]王瑛.基于 VRML的虛擬實(shí)驗(yàn)的研究與設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(5):239-242.
[2]吳迪,劉軍,吳億維,等.基于Simulink和VR技術(shù)的三線擺實(shí)驗(yàn)仿真研究[J].沈陽(yáng)師范大學(xué)學(xué)報(bào):自然科學(xué)版,2012,30(2):185-187.
[3]曹詠弘,范榮強(qiáng),范錦彪,等.基于虛擬現(xiàn)實(shí)的彈丸時(shí)空位置再現(xiàn)技術(shù)研究[J].彈箭與制導(dǎo)學(xué)報(bào),2010,30(1):91-94.
[4]黃文麗,盧碧紅,楊志剛,等.VRML語(yǔ)言入門與應(yīng)用[M].北京:中國(guó)鐵道出版社,2003.
[5]吳北新.虛擬現(xiàn)實(shí)建模語(yǔ)言VRML[M].北京:高等教育出版社,2004.
[6]LU C H.Introduction and enhancement of VRML[M].Beijing:Peking university press,2003,201-202.
[7]顧冬華,王俊杰,楊立.虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于電工實(shí)驗(yàn)課教學(xué)的嘗試[J].中國(guó)現(xiàn)代教育裝備,2010(13):55-56.
[8]余東先,杜紀(jì)霞.基于 VRML-JAVA遠(yuǎn)程虛擬教學(xué)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].河南科學(xué),2010,28(5):600-604.
[9]王昊鵬.VRML基于高程格網(wǎng)節(jié)點(diǎn)的復(fù)雜造型研究[J].微計(jì)算機(jī)信息,2006,22(1):211-212.
[10]吳迪,吳億維,劉軍,等.基于VRML及JavaScript的氣墊導(dǎo)軌上交互式三維虛擬實(shí)驗(yàn)[J].物理實(shí)驗(yàn),2012,32(6):17-20.
[11]王建中,李定國(guó),張家昌,等.基于VRML的工程熱物理虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2006,25(12):1530-1532.
[12]LIGOS C.V·RealmTMbuilder user's guide and reference[EB/OL].[2011-10-05].http:∥www.few.vu.nl/~eliens/documents/vrml/V-Realm.