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