吳 迪
(大連大學 物理科學與技術學院,遼寧 大連 116622)
許多學校都建立了大學物理實驗網站,學生可以登陸網站學習實驗原理、操作方法等內容。但目前的網站大多是二維平面展示,或有動畫描述實驗過程,而這一過程也是由程序編制者事先設定好的,只能按照一定的路線執行,與實驗的實際情況不符,真實感不強,不能給學生身臨其境的感覺,學生很難詳盡了解相關儀器設備的整體概況,這些二維的顯示方法已經不能滿足人們的需要。虛擬現實(virtual reality)是一種可以用來創建并體驗虛擬世界的計算機系統,是計算機模擬出來的虛擬環境。此虛擬環境是由編寫的計算機程序生成的,用戶可以通過所操作的計算機進入到這個環境并能操縱環境中的對象達到交互的目的[1-3]。VRML是一種三維場景的描述性語言,是第二代 Web上的關鍵技術,也是在Internet網絡上能夠實現虛擬現實的關鍵性技術[4-6]。在Internet上傳輸少量數據就可以在 Web上實現三維虛擬場景瀏覽功能,克服了其他三維立體模擬軟件的缺點。因而采用VRML開發三維虛擬現實實驗應該是解決這些問題的一種好方法[7-8]。首先虛擬現實實驗中學生可沉浸在三維的、立體的環境中,這是符合人們日常生活習慣的;其次在創建的虛擬環境中學生不是被動地感受事物,而是可以通過自己的活動去改變所感受的內容。采用VRML技術創建的三維虛擬現實實驗可以不受時間、地域的限制,學生或者教師可以自由地、無顧慮地隨時進入到虛擬實驗室中操作儀器設備,而他只需要在聯接到互聯網上的計算機瀏覽器上安裝VRML插件,如Cortona、Blaxxun Contact或Cosmoplayer等任意一種就可以進行各種實驗。顯然虛擬現實實驗可以留給學生更多的思考時間和想象空間,從實驗儀器的構造原理到它們的使用方法;從測試公式的創建到實驗環境的搭建,完全由學生自己進行設計、組建,提高學生們學習的興趣,增加學生學習的時間,增加他們分析問題的時間,充分調動其主觀能動性。
但目前所開發的三維研究項目中大多存在交互性較弱以及沉浸感不強等問題。本文以電子示波器實驗為例就虛擬實驗中復雜運動中交互控制的方法進行深入研究。VRML本身不能進行復雜交互設計,因而對于像儀器調整等這樣完成復雜功能的交互式操作就不能只由VRML來完成。為了能夠實現所創建的虛擬環境本身與操作者之間的復雜交互,就要利用虛擬空間與操作環境之間的接口來實現其與用戶間的交互,可以通過采用JavaScript編程實現這種功能[9-11],討論VRML中Script節點的應用方法,并且最終建立具有交互操作功能的虛擬三維電子示波器實驗,很好地實現了復雜運動的交互控制功能。
虛擬場景的交互功能可以通過VRML節點來實現。一個節點狀態的變化可以引起另外一個節點狀態的變化。在VRML中,通常將狀態的變化記為一個“事件”,發生變化的節點接受“輸入事件”,而引起其他節點變化的節點發出“輸出事件”。VRML提供了許多種感知器節點,比如TouchSensor節點,它可以接收鼠標點擊形體的動作并使程序發生相應的變化,如發出聲音、改變顏色等;有可使通過鼠標移動來轉變形體繞坐標軸旋轉運動的CylinderSensor節點;有可以檢測觀察者接近的ProximitySensor節點,利用它們可控制其他操作,如發出聲音,讓形體顏色變化、讓形體運動等;還有時間傳感器TimeSensor節點等。

圖1 VRML聯動動畫原理圖
VRML空間中各節點間的數據交換可以用來實現場景中的物體實現一些簡單行為的交互動作,比如打開開關時燈會亮、接近自動門時門會自動打開等。通過路由及感知器節點基本上可以實現場景的簡單交互控制。對于較復雜的交互控制,VRML采用Script節點實現這種功能。Script節點中的域指定一段實現事件處理的JavaScript或VRMLScript腳本,然后把程序中計算得到的結果遞交給Script節點的輸出事件,再通過路由將該事件傳遞給場景中某對象相關的域,以達到改變場景的目的,實現過程框圖如圖1所示。
虛擬示波器主要向用戶提供一個盡可能真實的仿真儀器和環境,可以通過VRMLPad或vrbuild[12]等軟件直接建造三維實驗模型,文件占用的字節數較少,適宜在網絡上運行;也可采用3DMAX等軟件建造再轉換成VRML格式文件,但缺點是形成的文件比較大,影響在網絡上運行的速度及質量。建造的三維示波器模型如圖2所示。用戶可以在其中自由操作虛擬示波器的各種球形旋鈕,對示波器的各種功能進行研究,這個過程是通過人機交互來實現的。VRML允許用戶的行為能夠實時作用于場景,場景節點通過EventIn接受事件,通過EventOut發出事件,通過路由將一個節點的事件出口和另一個節點的事件入口聯系成為事件體系使VRML具有動態交互能力。但VRML語言本身所能完成的交互功能是有限的,要實現復雜的聯動交互控制功能還需要通過腳本語言來實現。VRML提供了一個Script腳本節點,通過該節點就可以實現復雜交互操作和邏輯控制等功能。Script節點允許用戶創建自己的域(field)和事件,其中包括EventIn入事件和EventOut出事件,再通過節點內部程序的編寫來完成目標功能。它支持多種腳本語言,如JavaScript,VRMLScript,VBScript等。

圖2 掃描時間調節


使用語句USE定義電子陣列。
打開開關后電子開始做正弦運動,實現聯動效果。場景中傳感器節點通常定義了觸發事件,它通過路由發送給場景中的其他節點的入事件。如傳感器節點的觸發事件直接傳遞到插補器節點產生關鍵值插值,也可以傳遞Script節點進行運算處理產生關鍵值插值。

TimeSensor用來執行開始、停止及其他控制動畫的動作,它通過定時產生事件來表示時間的變化。

場景的變化需要一系列的變化數值,產生變化數值的節點可以是插補器節點或者Script節點。域值通過Route語句傳送,由節點的入事件接收并處理。Script結點在VRML場景中不被顯示,其工作原理如圖1所示。Script結點也可以由若干個入事件、出事件和包含腳本程序的url域等構成。其中入事件EventIn用來接收來自其他節點的出事件,并交給對應的同名函數進行處理。url域中的處理函數計算出新的數值,并通過節點的出事件EventOut發送出去。




圖3 y增益調節
Route語句把一個節點的事件EventOut連接到另一個節點的事件EventIn,從而建立指定節點的域之間的通道。Route語句由出事件激活,當發生一個出事件的時候,包含該事件EventOut的Route語句就被調用,對應的事件EventIn就會接收到信息,同時可以對事件EventIn做出相應的處理,從而改變節點的狀態,實現電子的正弦運動。


通過使用VRML的Script節點編程實現了基于VRML技術的虛擬實驗交互控制技術,設計實現了具有交互控制功能的電子示波器實驗。采用高級語言如JavaScript或VRMLScript等與VRML混合編程彌補了VRML自身如邏輯判斷、場景精確控制等不足問題。利用虛擬現實系統,可以彌補實驗場地、設備以及教學經費不足等的影響。開發的系統基于B/S模式,程序的運行、開發和維護都是在服務器端進行的,系統易于擴展功能,靈活方便、安全可靠。虛擬現實技術發展前景十分誘人,特別是與互聯網絡的結合,在某種意義上說它將改變人們對空間和時間的看法。利用它開發虛擬實驗教學系統必將對教育、教學質量的提高,學生學習興趣及能力的培養起到積極而重要的作用。
[1]王瑛.基于 VRML的虛擬實驗的研究與設計[J].計算機技術與發展,2013,23(5):239-242.
[2]吳迪,劉軍,吳億維,等.基于Simulink和VR技術的三線擺實驗仿真研究[J].沈陽師范大學學報:自然科學版,2012,30(2):185-187.
[3]曹詠弘,范榮強,范錦彪,等.基于虛擬現實的彈丸時空位置再現技術研究[J].彈箭與制導學報,2010,30(1):91-94.
[4]黃文麗,盧碧紅,楊志剛,等.VRML語言入門與應用[M].北京:中國鐵道出版社,2003.
[5]吳北新.虛擬現實建模語言VRML[M].北京:高等教育出版社,2004.
[6]LU C H.Introduction and enhancement of VRML[M].Beijing:Peking university press,2003,201-202.
[7]顧冬華,王俊杰,楊立.虛擬現實技術應用于電工實驗課教學的嘗試[J].中國現代教育裝備,2010(13):55-56.
[8]余東先,杜紀霞.基于 VRML-JAVA遠程虛擬教學系統的設計與開發[J].河南科學,2010,28(5):600-604.
[9]王昊鵬.VRML基于高程格網節點的復雜造型研究[J].微計算機信息,2006,22(1):211-212.
[10]吳迪,吳億維,劉軍,等.基于VRML及JavaScript的氣墊導軌上交互式三維虛擬實驗[J].物理實驗,2012,32(6):17-20.
[11]王建中,李定國,張家昌,等.基于VRML的工程熱物理虛擬實驗教學系統[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.