陳 宸,趙志靖
(揚(yáng)州大學(xué)教育技術(shù)學(xué)系,江蘇揚(yáng)州 225009)
虛擬仿真能夠?qū)崿F(xiàn)傳統(tǒng)實(shí)驗(yàn)中無法實(shí)現(xiàn)或難以完成的教學(xué)功能,特別是對于一些具有危險、時間長、成本高或微觀的實(shí)驗(yàn)。國家相繼出臺一系列政策支持虛擬實(shí)驗(yàn)在教育教學(xué)中的應(yīng)用??梢钥闯?,國家非常重視虛擬實(shí)驗(yàn)及其應(yīng)用。
物理學(xué)是一門以實(shí)驗(yàn)為基礎(chǔ)的自然科學(xué)[1]。目前大多數(shù)物理知識需要通過實(shí)驗(yàn)才能夠加深學(xué)生的認(rèn)識。由于實(shí)驗(yàn)教學(xué)觀念落后、教學(xué)方法與手段單一問題,學(xué)生做實(shí)驗(yàn)的機(jī)會較少,無法保證每位同學(xué)都能參與到實(shí)驗(yàn)當(dāng)中[2]。此外還存在實(shí)驗(yàn)設(shè)備陳舊老化與實(shí)驗(yàn)風(fēng)險等問題。
物理虛擬仿真是虛擬現(xiàn)實(shí)技術(shù)在物理實(shí)驗(yàn)中的實(shí)際應(yīng)用,通過預(yù)設(shè)的實(shí)驗(yàn)場景和實(shí)驗(yàn)內(nèi)容來模擬現(xiàn)實(shí)中的物理實(shí)驗(yàn)[3]。目前應(yīng)用最廣泛的虛擬仿真是基于桌面式的“非沉浸式”虛擬實(shí)驗(yàn),這類實(shí)驗(yàn)大多采用以窗口、圖標(biāo)、菜單、指點(diǎn)式為交互元素的交互界面(Windows,Icon,Menu,Point-Click,WIMP)。研究表明,使用鼠標(biāo)鍵盤交互的虛擬仿真不能充分發(fā)揮虛擬現(xiàn)實(shí)系統(tǒng)的沉浸性、交互性和構(gòu)想性等優(yōu)勢,學(xué)生的學(xué)習(xí)體驗(yàn)不佳[4]。體感技術(shù)作為一種重要的自然交互方式,能夠?qū)崿F(xiàn)“通過指尖、人手的運(yùn)動與計算機(jī)發(fā)生自然交互”[5],在一定程度上打破了WIMP 交互范式的限制,在形式上和空間上極大的改善了交互體驗(yàn),提升交互的沉浸感和效率,增加交互的真實(shí)感。
從用戶可信度水平的視角,將虛擬實(shí)驗(yàn)分為模擬性實(shí)驗(yàn)、探究性實(shí)驗(yàn)以及實(shí)證性實(shí)驗(yàn)3 個層次。其中探究性實(shí)驗(yàn)是面向數(shù)據(jù)的記錄、收集和分析的虛擬實(shí)驗(yàn),強(qiáng)調(diào)交互的自然性以及真實(shí)環(huán)境下測量數(shù)據(jù)的一致性[6]。是用來展示物理、化學(xué)、生物等課程中特殊的事物,以更直觀的方式將難以描述的現(xiàn)象呈現(xiàn)出來。
基于體感技術(shù)的物理虛擬仿真實(shí)驗(yàn)設(shè)計,利用3DsMax 軟件對物理實(shí)驗(yàn)場景進(jìn)行三維建模,利用Unity引擎與Leap Motion 實(shí)現(xiàn)場景渲染與交互功能,最終設(shè)計開發(fā)一款物理虛擬仿真系統(tǒng),以滿足學(xué)生學(xué)習(xí)和實(shí)驗(yàn)操作的需要。
物理虛擬仿真實(shí)驗(yàn)的設(shè)計主要包括:系統(tǒng)框架設(shè)計、手勢交互設(shè)計以及場景設(shè)計。系統(tǒng)框架設(shè)計主要是學(xué)生如何通過Leap Motion進(jìn)行虛擬仿真實(shí)驗(yàn);手勢交互設(shè)計是為用戶提供良好的實(shí)驗(yàn)操作體驗(yàn)感;場景設(shè)計是對場景元素的視覺設(shè)計。
人機(jī)交互強(qiáng)調(diào)以人為本,注重交互方式的自然、和諧[7]。隨著虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)、混合現(xiàn)實(shí)以及普適計算等“脫離桌面”技術(shù)的發(fā)展,出現(xiàn)了新一代基于現(xiàn)實(shí)的人機(jī)交互(Reality-based Interaction,RBI)。RBI利用現(xiàn)實(shí)世界中的一些主題,如從人們對基本常識的理解、對自身肢體動作的理解、對環(huán)境的理解等不同層面,來對新的交互模式進(jìn)行描述[8]。
體感交互是RBI 的一種,強(qiáng)調(diào)利用手勢、肢體動作、語音以及與這些方式相結(jié)合的虛擬人像技術(shù)來實(shí)現(xiàn)交互功能。體感交互減輕人們對鼠標(biāo)、鍵盤等非自然的操控方式的依賴,緩解手指與鼠標(biāo)、鍵盤的緊張關(guān)系,讓學(xué)生將注意力始終集中在實(shí)驗(yàn)任務(wù)當(dāng)中[9]。相比于使用鼠標(biāo)或鍵盤進(jìn)行虛擬實(shí)驗(yàn),使用基于動作智能技術(shù)進(jìn)行實(shí)驗(yàn)操作能夠探究身體運(yùn)動對學(xué)習(xí)的影響研究[10]。
Leap Motion 是為手部識別而設(shè)計的,在手勢捕捉方面與其他體感設(shè)備相比有著更高的靈敏度和準(zhǔn)確性[11]?;隗w感技術(shù)的物理虛擬仿真實(shí)驗(yàn)使用Leap Motion控制器和Unity 引擎進(jìn)行設(shè)計與實(shí)現(xiàn)。當(dāng)學(xué)生使用手勢與虛擬物體進(jìn)行交互時,Leap Motion 將實(shí)時采集學(xué)生的手部數(shù)據(jù),并通過USB接口傳輸?shù)接嬎銠C(jī)中的Leap Motion 驅(qū)動程序。在Unity 引擎中,開發(fā)人員利用C#進(jìn)行手勢交互設(shè)計。
物理虛擬仿真實(shí)驗(yàn)的制作需要硬件和軟件設(shè)備配合完成,硬件包括:Leap Motion,計算機(jī)。軟件包括:3DsMax實(shí)現(xiàn)三維建模,Unity引擎實(shí)現(xiàn)場景渲染,C#腳本語言實(shí)現(xiàn)交互。實(shí)驗(yàn)以三維形式呈現(xiàn)出來,更具沉浸性與真實(shí)性。物理虛擬仿真實(shí)驗(yàn)系統(tǒng)框架如圖1所示。
圖1 物理虛擬仿真實(shí)驗(yàn)系統(tǒng)框架
實(shí)現(xiàn)手勢交互虛擬實(shí)驗(yàn),需要參考實(shí)驗(yàn)過程中使用頻率較高的手勢,對這些手勢特性進(jìn)行分析,根據(jù)Leap Motion手勢交互的原理,設(shè)計出能夠滿足虛擬實(shí)驗(yàn)操作的交互手勢。在實(shí)驗(yàn)過程中,Leap Motion 會實(shí)時采集學(xué)生的手部數(shù)據(jù),在Unity 中判斷這些手部數(shù)據(jù)與預(yù)定義的手勢是否一致。如果不一致,則該手勢不會有任何操作響應(yīng),反之,則執(zhí)行該手勢的操作響應(yīng)。
Leap Motion 的軟件開發(fā)工具包(Software Development Kit,SDK)支持多種手勢的自定義命令[12],依據(jù)物理實(shí)驗(yàn)的需求設(shè)計一組面向虛擬仿真實(shí)驗(yàn)的手勢集,分別是右手點(diǎn)擊、右手揮動、左手向上翻轉(zhuǎn)、左手向下翻轉(zhuǎn)、左手張開、左手握拳。
為使虛擬仿真實(shí)驗(yàn)具有更加真實(shí)的實(shí)驗(yàn)操作體驗(yàn),場景設(shè)計需要參考實(shí)驗(yàn)室的場景進(jìn)行布局。根據(jù)實(shí)驗(yàn)室布局設(shè)計實(shí)驗(yàn)臺,學(xué)生大部分操作都可在實(shí)驗(yàn)臺上完成,實(shí)驗(yàn)臺僅呈現(xiàn)與當(dāng)前實(shí)驗(yàn)相關(guān)的器材,避免因一些無關(guān)的器材迷惑學(xué)生,增加學(xué)生的實(shí)驗(yàn)操作負(fù)擔(dān)。
通過探究閉合電路導(dǎo)體中的電流與導(dǎo)體兩端的電壓、電阻之間的關(guān)系以及測量小燈泡的電功率兩個具體實(shí)例來探索基于體感技術(shù)的物理虛擬仿真實(shí)驗(yàn)的具體制作過程。
學(xué)生進(jìn)入物理虛擬仿真實(shí)驗(yàn)室開始實(shí)驗(yàn),通過Leap Motion與虛擬的實(shí)驗(yàn)器材進(jìn)行交互。在虛擬實(shí)驗(yàn)室中搭建了多個實(shí)驗(yàn)所需的器材,學(xué)生依據(jù)系統(tǒng)預(yù)設(shè)好的器材進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)器材已經(jīng)按照實(shí)驗(yàn)布局進(jìn)行擺放,不需要對實(shí)驗(yàn)器材進(jìn)行挑選與連接,提高了學(xué)生的實(shí)驗(yàn)效率。
物理虛擬仿真實(shí)驗(yàn)的開發(fā)分為2 大階段:第1 階段是分析系統(tǒng)模塊和收集素材,使用3DsMax 搭建物理虛擬仿真實(shí)驗(yàn)相關(guān)的三維模型,使用PhotoShop 繪制實(shí)驗(yàn)器材貼圖,模型制作完成后,以FBX 格式導(dǎo)出并導(dǎo)入Unity 工程文件。第2 階段包括①搭建場景,其主要工作是在Unity 中搭建實(shí)驗(yàn)室場景與實(shí)驗(yàn)器材;②安裝Leap Motion驅(qū)動,將Leap Motion控制器與電腦進(jìn)行連接,將Leap Motion 組件資源包導(dǎo)入Unity引擎,對Leap Motion SDK進(jìn)行基礎(chǔ)環(huán)境配置;③在虛擬三維場景中實(shí)現(xiàn)學(xué)生與虛擬器材之間的交互,采用C#語言與Leap Motion SDK根據(jù)實(shí)驗(yàn)流程編寫交互腳本,實(shí)現(xiàn)場景渲染與交互功能。實(shí)驗(yàn)開發(fā)流程如圖2所示。
圖2 實(shí)驗(yàn)開發(fā)流程圖
2.2.1 三維實(shí)驗(yàn)環(huán)境的搭建
實(shí)驗(yàn)環(huán)境的搭建包括設(shè)計實(shí)驗(yàn)室場景、實(shí)驗(yàn)器材以及用戶界面。使用3DsMax 搭建實(shí)驗(yàn)室場景與實(shí)驗(yàn)器材。搭建實(shí)驗(yàn)器材模型如圖3(a)、(b)所示。
圖3 搭建實(shí)驗(yàn)器材模型
實(shí)驗(yàn)臺是學(xué)生主要的操作場景。針對具體實(shí)驗(yàn),搭建實(shí)驗(yàn)所需的器材,例如電流表、電壓表、滑動變阻器、定值電阻、開關(guān)、導(dǎo)線與電源等。虛擬實(shí)驗(yàn)器材如圖4 所示。
圖4 虛擬實(shí)驗(yàn)器材
實(shí)驗(yàn)系統(tǒng)設(shè)計了虛擬黑板,用于展示實(shí)驗(yàn)步驟與實(shí)驗(yàn)結(jié)論,為學(xué)生提供操作指引,幫助學(xué)生更好地完成實(shí)驗(yàn)。虛擬黑板如圖5(a)、(b)所示。
圖5 虛擬黑板
2.2.2 手勢交互功能實(shí)現(xiàn)
手勢交互功能的實(shí)現(xiàn)主要在Unity 中完成,在計算機(jī)中安裝Leap Motion 驅(qū)動并將組件資源包導(dǎo)入Unity引擎,進(jìn)行基礎(chǔ)環(huán)境配置。采用C#語言與Leap Motion SDK根據(jù)實(shí)驗(yàn)流程編寫手勢交互腳本,實(shí)現(xiàn)場景渲染與交互功能。
(1)場景切換。由于虛擬仿真實(shí)驗(yàn)包含許多功能和模型,如果只使用一個場景,功能模塊會過于復(fù)雜,增加系統(tǒng)的執(zhí)行時間,給學(xué)生帶來不佳的交互體驗(yàn),所以搭建了多個實(shí)驗(yàn)場景,這樣既能夠降低各個場景的復(fù)雜度,提高渲染速度,又能使實(shí)驗(yàn)系統(tǒng)層次更加分明,便于學(xué)生進(jìn)行操作。Leap Motion 與虛擬物體交互的核心是碰撞檢測,需要根據(jù)物體的形狀添加不同類型的Collider。Leap Motion識別范圍有限,大致為設(shè)備頂部以上25~600 mm 處[13],需要賦予Collider 適當(dāng)?shù)腟ize屬性,使虛擬手能夠在適當(dāng)?shù)奈恢门c物體發(fā)生交互。
學(xué)生使用右手點(diǎn)擊手勢切換場景的核心代碼如下:
(2)實(shí)驗(yàn)交互。Leap Motion 的交互基于碰撞檢測,交互對象需要具有某種形式的Collider 組件,Box Collider是一個具有立方體外形的基本碰撞體,在本實(shí)驗(yàn)中使用次數(shù)最多。學(xué)生使用Leap Motion 控制器與實(shí)驗(yàn)器材進(jìn)行交互。
學(xué)生用右手點(diǎn)擊手勢觸碰開關(guān),開關(guān)閉合,電路中產(chǎn)生電流,電流表與電壓表的指針發(fā)生偏轉(zhuǎn)。由于實(shí)驗(yàn)場景視角的原因,電流表與電壓表的示數(shù)不易觀察,在界面左上方增加了兩個放大的示數(shù)面板,學(xué)生在實(shí)驗(yàn)過程中能夠細(xì)致地觀察指針的偏轉(zhuǎn)情況,清晰讀出示數(shù)。在虛擬仿真實(shí)驗(yàn)室中,所進(jìn)行的各種仿真都具有智能化的設(shè)置和功能[14],對于一些實(shí)驗(yàn)步驟,實(shí)驗(yàn)系統(tǒng)會自動播放下一操作環(huán)節(jié)的語音提醒,界面上同時配以文字,多感官提醒學(xué)生注意實(shí)驗(yàn)過程,提高學(xué)生實(shí)驗(yàn)操作的專注度。閉合開關(guān)操作如圖6 所示。
圖6 閉合開關(guān)操作
核心代碼如下:
學(xué)生用右手點(diǎn)擊手勢移動滑動變阻器的滑片改變其阻值,電流表與電壓表的指針也會發(fā)生偏轉(zhuǎn),實(shí)現(xiàn)該功能需要使用到Slider 控件與Transform 類。Slider 控件有兩種類型,分別是水平滾動條和垂直滾動條,其中Direction用來設(shè)置滑塊的方向,默認(rèn)為橫向,也可以調(diào)整為縱向,Value 是滑塊的默認(rèn)值,默認(rèn)范圍為0~1。根據(jù)實(shí)驗(yàn)界面布局的需要,選擇使用水平滾動條進(jìn)行開發(fā)。在Slider中監(jiān)聽onValueChanged事件,當(dāng)Slider的Value值發(fā)生變化時會調(diào)用事件。Transform 類是Unity常用的API接口之一,用于描述和控制物體的位置、旋轉(zhuǎn)、縮放屬性。調(diào)節(jié)滑動變阻器操作如圖7所示。
圖7 調(diào)節(jié)滑動變阻器操作
核心代碼如下:
(3)數(shù)據(jù)記錄。本文中的物理虛擬仿真將交互界面直接附加到學(xué)生的手上,以便某些重要功能始終在虛擬手可操作的范圍之內(nèi)。交互界面中每一個按鈕都有一個盒子碰撞體用于和虛擬手進(jìn)行碰撞檢測,當(dāng)使用虛擬手點(diǎn)擊交互界面的按鈕時,將調(diào)用與按鈕相綁定的功能函數(shù)[15]。學(xué)生左手向上翻轉(zhuǎn),在虛擬實(shí)驗(yàn)環(huán)境中會打開一個交互界面,根據(jù)實(shí)驗(yàn)需求,學(xué)生可以使用虛擬手對界面上的按鈕進(jìn)行操作。學(xué)生點(diǎn)擊記錄數(shù)據(jù)按鈕,黑板上會實(shí)時顯示電流表與電壓表的示數(shù)。操作完成后,學(xué)生左手向下翻轉(zhuǎn),交互界面關(guān)閉。左手向上翻轉(zhuǎn)操作如圖8 所示。
圖8 左手向上翻轉(zhuǎn)操作
測量小燈泡在不同電壓下工作時的電功率,利用電壓表測量小燈泡兩端的電壓,電流表測量通過小燈泡的電流,根據(jù)公式P=UI計算小燈泡的電功率。測量小燈泡在額定電壓、約大于額定電壓、約小于額定電壓下的電流值、電功率值并觀察小燈泡的發(fā)光情況。
學(xué)生使用虛擬手觸碰開關(guān),開關(guān)閉合,電路中產(chǎn)生電流,電流表與電壓表的指針發(fā)生偏轉(zhuǎn),燈泡發(fā)光。實(shí)現(xiàn)燈泡發(fā)光的功能,需要使用自發(fā)光材質(zhì)模擬燈泡發(fā)光的效果,為了使效果更加真實(shí),在燈泡的中心添加了一個點(diǎn)光源(Point Light),通過調(diào)節(jié)intensity屬性的大小,改變點(diǎn)光源的發(fā)光強(qiáng)度,調(diào)節(jié)燈泡的發(fā)光強(qiáng)度。燈泡發(fā)光的效果是通過右手點(diǎn)擊手勢觸碰開關(guān)觸發(fā),以EnableKeyword(“_EMISSION”)實(shí)現(xiàn)。燈泡亮度隨著滑動變阻器滑片的移動而發(fā)生變化,通過ValueChangeCheck()方法實(shí)現(xiàn)。由于開關(guān)閉合后燈泡中點(diǎn)光源的intensity 值為5,所以slider 的Value 值也要加5,使燈泡的亮度在閉合開關(guān)后與開始調(diào)節(jié)滑動變阻器時保持一致。核心代碼如下:
該實(shí)例可以使用右手揮動手勢控制黑板左右切換,查看各個黑板上實(shí)驗(yàn)步驟的內(nèi)容。進(jìn)入實(shí)驗(yàn)器材場景,選擇想要觀察的實(shí)驗(yàn)器材,左手張開,實(shí)驗(yàn)器材放大,左手握拳,實(shí)驗(yàn)器材縮小,移動虛擬手,實(shí)驗(yàn)器材能夠全方位的進(jìn)行旋轉(zhuǎn),使學(xué)生在實(shí)驗(yàn)前能夠仔細(xì)地觀察各種實(shí)驗(yàn)器材。其他功能與閉合電路歐姆定律的實(shí)驗(yàn)類似。實(shí)驗(yàn)界面如圖9 所示。
圖9 實(shí)驗(yàn)界面
利用一種全新的人機(jī)交互技術(shù),借助Unity 引擎和Leap Motion,實(shí)現(xiàn)兩個具體的物理虛擬仿真實(shí)驗(yàn)。探索了基于Unity引擎與Leap Motion進(jìn)行物理虛擬仿真實(shí)驗(yàn)的具體制作過程,實(shí)現(xiàn)“通過指尖、人手的運(yùn)動與計算機(jī)發(fā)生自然交互”,用視覺化的方式,表現(xiàn)信息與數(shù)據(jù)的內(nèi)在聯(lián)系,體現(xiàn)出虛擬仿真實(shí)驗(yàn)自然交互的特點(diǎn)。
本虛擬仿真實(shí)驗(yàn)仍有一些需要改進(jìn)的地方,如沒有對錯誤的操作進(jìn)行反饋設(shè)計、可逆性設(shè)計與容錯性設(shè)計。后續(xù)將繼續(xù)改進(jìn)與完善,為學(xué)生提供一個更佳的虛擬仿真實(shí)驗(yàn)平臺,為體感技術(shù)在虛擬仿真實(shí)驗(yàn)中的應(yīng)用提供有意義的探索。