葉世其
【摘 要】虛擬現(xiàn)實(shí)建模語言是一種用來描述交互式3D對象和環(huán)境的文件格式,它的誕生為實(shí)現(xiàn)基于Web的虛擬現(xiàn)實(shí)提供了條件。針對虛擬實(shí)驗(yàn)教學(xué)的特點(diǎn),對基于虛擬現(xiàn)實(shí)建模語言的虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)進(jìn)行了設(shè)計,并結(jié)合實(shí)例,對虛擬場景的構(gòu)建、虛擬場景交互控制進(jìn)行了進(jìn)行研究。實(shí)踐證明,基于虛擬現(xiàn)實(shí)建模語言的虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)是切實(shí)可行、有效的。
【關(guān)鍵詞】虛擬現(xiàn)實(shí)建模語言;虛擬實(shí)驗(yàn)系統(tǒng);設(shè)計;交互性;JavaScript
虛擬現(xiàn)實(shí)技術(shù)是當(dāng)今計算機(jī)界廣泛關(guān)注的一個熱點(diǎn),目前的虛擬實(shí)驗(yàn)多為二維演示實(shí)驗(yàn),在實(shí)驗(yàn)真實(shí)感、交互性和教學(xué)效果等方面與真實(shí)實(shí)驗(yàn)相差甚遠(yuǎn)。隨著硬件技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,以及3D技術(shù)的日益成熟,虛擬現(xiàn)實(shí)建模語言(Virtual Reality Modeling Language,下面簡稱VRML)的誕生為實(shí)現(xiàn)基于Web的虛擬現(xiàn)實(shí)提供了得天獨(dú)厚的條件。它能夠在Web上創(chuàng)建可導(dǎo)航的、超鏈接的三維虛擬現(xiàn)實(shí)空間,并使用戶與場景進(jìn)行實(shí)時交互,感知和操作虛擬對象,因而能夠提供更佳的性能和更好的教學(xué)效果。下面,就基于虛擬現(xiàn)實(shí)建模語言的虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)的設(shè)計進(jìn)行研討。
1.虛擬實(shí)驗(yàn)系統(tǒng)設(shè)計
1.1系統(tǒng)管理模塊
系統(tǒng)管理由系統(tǒng)管理員監(jiān)控,主要任務(wù)包括創(chuàng)建用戶、設(shè)置權(quán)限及安全控制管理等。系統(tǒng)管理員管理的數(shù)據(jù)庫包括用戶信息數(shù)據(jù)庫和安全控制庫。
1.2實(shí)驗(yàn)管理模塊
實(shí)驗(yàn)管理由實(shí)驗(yàn)教師完成,進(jìn)行實(shí)驗(yàn)項(xiàng)目的生成和管理。實(shí)驗(yàn)教師管理的數(shù)據(jù)庫包括實(shí)驗(yàn)項(xiàng)目管理庫、學(xué)生成績管理庫以及實(shí)驗(yàn)控制庫。實(shí)驗(yàn)教師先將實(shí)驗(yàn)項(xiàng)目名稱、實(shí)驗(yàn)相關(guān)說明、實(shí)驗(yàn)操作過程等存儲在實(shí)驗(yàn)管理庫中,供學(xué)生調(diào)閱。實(shí)驗(yàn)控制庫中存儲的是針對實(shí)驗(yàn)項(xiàng)目對實(shí)驗(yàn)者行為進(jìn)行驗(yàn)證的方法,為的是能夠識別實(shí)驗(yàn)者的動作,并采取相應(yīng)的控制。
1.3虛擬實(shí)驗(yàn)?zāi)K
虛擬實(shí)驗(yàn)針對的是實(shí)驗(yàn)者,當(dāng)實(shí)驗(yàn)者進(jìn)入實(shí)驗(yàn)系統(tǒng)后,可以選擇預(yù)定實(shí)驗(yàn)項(xiàng)目及相應(yīng)實(shí)驗(yàn)儀器進(jìn)行實(shí)驗(yàn)操作,實(shí)驗(yàn)過程的具體信息可上傳到對應(yīng)用戶的數(shù)據(jù)表中,供實(shí)驗(yàn)教師調(diào)閱和評分。另外,為了增強(qiáng)虛擬實(shí)驗(yàn)的網(wǎng)絡(luò)自主學(xué)習(xí)性,系統(tǒng)還可以提供一個用于幫助和交流的支持子模塊,在該模塊中主要提供各種信息資源、各種形式的交流工具,實(shí)現(xiàn)不同用戶之間的實(shí)驗(yàn)交流。
2.實(shí)例
2.1 虛擬場景的構(gòu)建
用VRML建立虛擬現(xiàn)實(shí)世界的方法有兩種。一種是通過編寫源代碼,生成文本文件,再轉(zhuǎn)化生成.wrl為擴(kuò)展名的網(wǎng)頁文件。但這種方法由于源代碼函數(shù)過于復(fù)雜,文件較大,不易掌握,較難運(yùn)用。第二種方法是通過輔助建模軟件,先建立三維物體,再在虛擬世界中進(jìn)行組合,形成豐富多彩的虛擬現(xiàn)實(shí)世界。本文主要探討后一種方法,即在3DSMAX中建立各種三維物體,再將這些物體以.wrl格式導(dǎo)出為VRML世界,編輯它們在虛擬現(xiàn)實(shí)世界的位置與關(guān)系,形成一個統(tǒng)一的整體世界。
對電路原件實(shí)驗(yàn)儀器的實(shí)物圖進(jìn)行構(gòu)建,構(gòu)建過程中要對組件進(jìn)行不斷的組合,這樣做的目的是為了減少輸出的代碼數(shù)量。對于一些關(guān)鍵的部件和按鈕,要獨(dú)立命名,其它的組件一律和電路原件實(shí)驗(yàn)儀器的主模型組合在一起。由于程序編輯器VRMLPad中不能很好地識別中文字體,這里我們將所有的組件的名稱統(tǒng)一改成漢語拼音字母。
在幾何建模過程中,要按照樹狀層次結(jié)構(gòu)圖將整個模型分為幾部分分別制作,再在3DMAX中組合在一起,將任務(wù)化整為零,提高細(xì)節(jié)制作效果。而物理建模則要通過幾何建模,物體的表面顏色、材質(zhì)、紋理、光滑度、燈光、陰影效果及物理約束、碰撞等效應(yīng)也是表現(xiàn)物體的重要因素。虛擬環(huán)境的建立是通過VRML自身的功能,綜合運(yùn)用Transform、Inline等場景節(jié)點(diǎn)實(shí)現(xiàn)造型,最后利用VRML可視化編輯器VRMLPad來進(jìn)行場景合成。
2.2 虛擬場景交互控制
交互設(shè)計是VRML的特色,也是它之所以吸引人的地方。如果說建模給VRML創(chuàng)造了一個個世界和一個個形象,那么交互設(shè)計就是給這些世界增加了生氣與靈魂。VRML場景可以提供的常用交互方式有:提供飛行、行走、自動導(dǎo)航等瀏覽方式;碰撞、重力等動力物理學(xué)模擬;導(dǎo)航地圖;背景音樂、語音提示;場景物體互動(開、關(guān)門等);視頻文件播放(支持swf、mpg、rm格式);網(wǎng)頁鏈接;三維場景切換等。在三維空間進(jìn)行交互設(shè)計是整個VRML創(chuàng)作中最重要的部分,包括事件(Events)、行為(Actions)等涉及人機(jī)交互的設(shè)計。VRML本身具有一定的交互能力,當(dāng)用戶只是需要一些簡單而且單一的動畫時,不需要再求助于其它的程序語言。但實(shí)際應(yīng)用中,不同的瀏覽器提供給用戶一些對場景的操作如:移動、旋轉(zhuǎn)、傾斜、撤消與恢復(fù)、引力以及漂浮與使場景平直等,它們只能對場景的全局進(jìn)行操作,而對整個場景中的局部或個體操作無能為力。為達(dá)到交互的自然性和高效性,僅僅采用VRML本身難以勝任,在本文中,主要借助第三方語言-JavaScript來補(bǔ)充VRML本身的不足。為了滿足不同用戶瀏覽虛擬電路原件實(shí)驗(yàn)系統(tǒng)的要求,一般需要從網(wǎng)頁鏈接交互、文字交互和立體交互三方面出發(fā),使用戶可以通過鼠標(biāo)、鍵盤等手段自由地在虛擬場景中切換視點(diǎn)和視角進(jìn)行漫游,點(diǎn)擊按鈕或菜單等,進(jìn)行信息的獲取和對場景的操作,從而給用戶在視覺或聽覺上,產(chǎn)生和虛擬世界互動的交互式體驗(yàn)。
在以往的虛擬實(shí)驗(yàn)中,數(shù)據(jù)的顯示一般是由一幅幅圖片拼接而成,數(shù)據(jù)的變化是由圖片的變換來顯示,在數(shù)據(jù)變化的細(xì)節(jié)方面就無法完美的顯示出來,當(dāng)需要的數(shù)據(jù)量過大時就必須使用大量的圖片,不僅增加了系統(tǒng)的容量和系統(tǒng)運(yùn)行的響應(yīng)時間,而且還降低了系統(tǒng)在Web中的可傳輸性。在虛擬電路原件實(shí)驗(yàn)中,在某些環(huán)節(jié)需要使用到輸出細(xì)調(diào)旋鈕來調(diào)節(jié)毫安表和萬用表的數(shù)值,所以在系統(tǒng)中使用MFString節(jié)點(diǎn)來實(shí)時的獲取輸出細(xì)調(diào)旋鈕的旋轉(zhuǎn)數(shù)值,再通過Math數(shù)學(xué)模型取值計算之后,賦值給Fontstyle節(jié)點(diǎn)并通過TXT文本的形式實(shí)時的顯示在屏幕上。不僅減少了系統(tǒng)的總?cè)萘俊⑻岣吡嗽诰W(wǎng)絡(luò)中的傳輸速率,而且在很大程度上減少了系統(tǒng)的相應(yīng)時間,使整個系統(tǒng)運(yùn)行起來更加的流暢。如下所示為本文中使用到的關(guān)鍵代碼:
DEF control script
{eventIn SFTime shuzi
url"JavaScript:
function shuzi 1(value)
{if(f>8&&f;<10){
wybstring 1[0]=(-Math.round (hlxt.
rotation. angle)+2)/100;
wybtxt1. string=wybstring 1;
dlxstring1[0]=wybstring 1[0]*0.50
dlxtxt1.string=dlxstring 1}}
ROUTE time.cycleTime TO control.shuzi1
本系統(tǒng)中需要通過調(diào)節(jié)輸出細(xì)調(diào)、輸出粗調(diào)等按鈕來調(diào)節(jié)萬用表和毫安表的數(shù)值,在實(shí)例中使用了CylinderSensor節(jié)點(diǎn),使用該圓柱體傳感器節(jié)點(diǎn)可以使旋鈕模型垂直于某個坐標(biāo)軸旋轉(zhuǎn),由于電路箱中的旋鈕數(shù)值是有上限和下限的,所以需要使用CylinderSensor節(jié)點(diǎn)的maxAngle屬性來限制模型的最大旋轉(zhuǎn)角度,使用minAngle來限制模型的最小旋轉(zhuǎn)角度,在數(shù)據(jù)處理方面,需要使用MFString節(jié)點(diǎn)實(shí)時的讀取旋鈕的旋轉(zhuǎn)數(shù)值,在VRML中使用圓柱體傳感器所獲得的旋轉(zhuǎn)數(shù)值精確到了小數(shù)點(diǎn)后16位,所以需要使用Math.round數(shù)學(xué)方法進(jìn)行取值,獲取最接近該數(shù)值的整數(shù),之后通過數(shù)學(xué)公式及伏安特性公式對該數(shù)值進(jìn)行相應(yīng)計算,再通過FontStyle節(jié)點(diǎn)實(shí)時的顯示出來,從而達(dá)到了使用輸出細(xì)調(diào)、輸出粗調(diào)等按鈕來調(diào)節(jié)萬用表和毫安表的數(shù)值的目的。
3.結(jié)論
綜上所述,虛擬現(xiàn)實(shí)建模語言VRML是開發(fā)基于Internet虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)的首選,利用虛擬現(xiàn)實(shí)建模語言構(gòu)建的虛擬實(shí)驗(yàn)系統(tǒng)能夠模擬出逼真的實(shí)驗(yàn)場景,并提供與實(shí)際實(shí)驗(yàn)相似的實(shí)踐體驗(yàn),這些功能的實(shí)現(xiàn),對于力求達(dá)到人在虛擬環(huán)境中的現(xiàn)實(shí)感是必不可少的。因此,虛擬現(xiàn)實(shí)建模語言在虛擬實(shí)驗(yàn)系統(tǒng)教學(xué)中的應(yīng)用前景十分光明。
參考文獻(xiàn):
[1] 胡源淵.基于VRML的交互式虛擬實(shí)驗(yàn)環(huán)境構(gòu)建[J].硅谷,2008年23期.
[2] 張中偉;汪慶偉.基于VRML的虛擬實(shí)驗(yàn)系統(tǒng)設(shè)計[J].價值工程,2010年09期.