顧鴻良,朱文華,蔡 寶,孫張馳
(上海第二工業(yè)大學(xué) 工程訓(xùn)練中心,201209上海)
混合現(xiàn)實技術(shù)(Mixed reality)是虛擬現(xiàn)實技術(shù)(Virtual reality)[1]的進一步發(fā)展。它是技術(shù)組合,不僅提供了新的輸入方法,還提供了新的虛擬影像的呈現(xiàn)方式。該技術(shù)通過混合現(xiàn)實眼鏡等硬件設(shè)備,在用戶看到的現(xiàn)實場景中疊加虛擬場景的信息,在現(xiàn)實世界、虛擬世界和用戶三者之間,搭起互動和反饋的信息回路,實現(xiàn)虛擬場景和現(xiàn)實環(huán)境相結(jié)合的使用體驗。
對于虛擬現(xiàn)實技術(shù)在工程訓(xùn)練中的應(yīng)用,國內(nèi)外已多有探索和研究[2]。本文借鑒前人在虛擬現(xiàn)實方面的研究成果[3],在減速機拆裝教學(xué)課程中,結(jié)合增強現(xiàn)實技術(shù),利用混合現(xiàn)實眼鏡實現(xiàn)虛擬信息和實物拆裝操作相融合的訓(xùn)練過程。通過構(gòu)建豐富的交互方式和交互反饋,達成多感官沉浸的學(xué)習(xí)體驗,提高學(xué)生的思考能力和實踐能力,同時也為學(xué)生提供主動探索和互動交流的機會。
將混合現(xiàn)實技術(shù)應(yīng)用于虛實結(jié)合的工程訓(xùn)練中的技術(shù)實現(xiàn)路線如圖1所示。
圖1課題研究的技術(shù)路線Fig.1 Technical roadmap of the research
實現(xiàn)步驟如下:
(1)畫面采集。通過混合現(xiàn)實眼鏡上的攝像機采集用戶對現(xiàn)實世界的視覺畫面,將畫面數(shù)據(jù)傳遞給眼鏡中的增強現(xiàn)實引擎進行處理。
(2)標(biāo)識定位。通過增強現(xiàn)實引擎對采集畫面中的“標(biāo)識圖”(本案例為貼在減速機軸承端蓋上的?;請D標(biāo))進行特征識別。根據(jù)標(biāo)識圖的大小和變形等特征,推算出現(xiàn)實中標(biāo)識圖相對于攝像機的位置和角度,從而定位設(shè)備整體的位置和角度,并計算出設(shè)備每個零件的位置。
(3)疊加虛擬信息。制作虛擬設(shè)備的零件模型、標(biāo)牌、參數(shù)等指導(dǎo)信息。根據(jù)上一步驟中得到的實物設(shè)備零件的位置,將這些信息擺放至虛擬空間中和實物一致的位置。
(4)投影虛擬畫面。通過眼鏡上的微型投影儀,將虛擬信息投影到用戶眼前以45°安裝的折射鏡片上,使得用戶產(chǎn)生虛擬信息疊加在現(xiàn)實中的場景和設(shè)備上的錯覺。
采用影創(chuàng)科技有限公司的ActionOne混合現(xiàn)實眼鏡作為硬件載體。該眼鏡視場角(可在鏡片上投影虛擬影像的范圍)為45°,單眼分辨率720p,攝像頭為1 300萬像素,操作系統(tǒng)為Android。這款國產(chǎn)眼鏡在市場中屬于中端產(chǎn)品,可以滿足虛實結(jié)合的工程訓(xùn)練的教學(xué)需求。同時其相較于進口產(chǎn)品(如Hololens)售價較低,也使得面向工程訓(xùn)練的混合現(xiàn)實教學(xué)方案有了較高的費效比和經(jīng)濟上的可行性。
制作虛擬設(shè)備的首步是通過三維建模軟件對設(shè)備進行建模。三維建模軟件的種類很多,本文使用SketchUp作為三維建模軟件。SketchUp又稱為草圖大師,是由Google公司開發(fā)的一款三維輔助設(shè)計軟件。其主要優(yōu)點是簡單易用,建??焖?即見即得。即使缺乏建模經(jīng)驗的學(xué)生,也能通過短時間的培訓(xùn)快速上手。
需要注意的是建模過程中的尺寸控制。為了后期將虛擬模型和實物模型進行擬合時虛擬模型能夠正確地“套”到實物模型上,建模時必須嚴(yán)格以“1單位=1米”的比例,按照實物模型的尺寸和結(jié)構(gòu)來進行建模。SketchUp中建立的減速機模型如圖2所示。
圖2建模軟件中的減速機模型Fig.2 The reducer in modeling software
在用于機械和工程制圖方面的建模軟件中,雖然UG和AutoCAD專業(yè)性更強,但是SketchUp使用門檻低,泛用性好,可以說是“性價比”最高的三維建模軟件。
Unity3D是由Unity Technologies公司開發(fā)的跨平臺專業(yè)虛擬現(xiàn)實引擎。利用Unity3D,用戶可以快速實現(xiàn)自己的游戲設(shè)計或虛擬互動應(yīng)用,創(chuàng)作出精彩的2D或3D仿真交互內(nèi)容。在虛擬現(xiàn)實和游戲行業(yè),尤其是手機游戲行業(yè),Unity開發(fā)的應(yīng)用占據(jù)著相當(dāng)大的市場份額。
Vuforia增強現(xiàn)實引擎是一系列的靜態(tài)鏈接庫。以擴展包的形式作為SDK導(dǎo)入到Unity中,實現(xiàn)基于Unity平臺的特征圖像和特征物體的識別、定位等功能。這些功能可以根據(jù)需要隨Unity打包發(fā)布到iOS、Android和UWP等平臺。因此,“Unity+Vuforia”搭配方案非常適合使用Android系統(tǒng)的ActionOne混合現(xiàn)實眼鏡。
(1)確定本教案中所使用的教學(xué)設(shè)備(工業(yè)減速機),以及設(shè)備的拆裝步驟和需要學(xué)生掌握的知識點。
(2)在詳細設(shè)計階段,參考文獻[3]的設(shè)計思路,將整個設(shè)備的拆裝教學(xué),從邏輯上分為拆卸上箱體、低速軸、高速軸和下箱體等4大步驟,每個步驟中包含若干子步驟。
(3)設(shè)計每個步驟中需要顯示的虛擬模型和動畫,以及向用戶提供的虛擬指導(dǎo)信息,形成“教案”。
(4)設(shè)計單個步驟表現(xiàn)方式和的互動方式。當(dāng)用戶進入某個教學(xué)步驟,則根據(jù)“教案”,在實物設(shè)備上投影虛擬模型和動畫,以及拆裝操作的指導(dǎo)信息。完成該步驟的操作后,用戶可以凝視虛擬空間中浮動的“下一步”或“上一步”按鈕,跳轉(zhuǎn)到下一個教學(xué)步驟繼續(xù)學(xué)習(xí),或返回上一步驟進行溫習(xí)。
通過測量實物工業(yè)減速機及減速機的二維圖紙,可以得到每個設(shè)備零件的具體尺寸參數(shù)。根據(jù)這些參數(shù)可以在SketchUp軟件中簡單快速地建立減速機的虛擬三維模型。
SketchUp在建模工作中生成的.skp模型文件,可以直接被Unity識別并導(dǎo)入虛擬場景中,無需其他軟件進行轉(zhuǎn)換。
本文所列舉的混合現(xiàn)實技術(shù)開發(fā)應(yīng)用案例是通過硬件設(shè)備投影虛擬的三維模型,使得用戶在視覺上產(chǎn)生虛擬模型和現(xiàn)實中的實物模型疊加在一起的錯覺,借此實現(xiàn)虛實結(jié)合的工程訓(xùn)練的教學(xué)目標(biāo)。這個過程中最大的難點是硬件設(shè)備中的程序需要知道實物模型在“虛擬空間”中的位置。此“虛擬空間”以混合現(xiàn)實眼鏡的中心點為笛卡爾坐標(biāo)系的原點,用戶鼻尖方向為坐標(biāo)系正Z軸方向,頭頂方向為正Y軸方向。由于在教學(xué)過程中用戶會作出移動、觀察、擺放等操作,“虛擬空間”本身,會隨著用戶頭部的運動而移動、旋轉(zhuǎn)。因此,程序不僅需要識別實物模型在“虛擬空間”中的位置和角度,還必須隨著用戶頭部的運動隨時更新。
本文的技術(shù)實現(xiàn)方式是在實物模型上粘貼標(biāo)識圖片,使用Vuforia增強現(xiàn)實引擎識別前置攝像頭捕捉到的畫面,計算畫面中標(biāo)識圖片相對于攝像機的位置和角度,即可得到實物模型的位置和角度。如圖3所示,實物模型上粘貼的圓形標(biāo)記即為用來識別的標(biāo)識圖片。
圖3疊加在實物減速機上的虛擬減速機Fig.3 The virtual reducer superimposed on the real reducer
識別函數(shù)定義如下:
public void OnTrackableStateChanged(
//當(dāng)跟蹤狀態(tài)發(fā)生變化時觸發(fā)事件
TrackableBehaviour.Status previousStatus,
//事件發(fā)生前的跟蹤狀態(tài)
TrackableBehaviour.Status newStatus
//事件發(fā)生后的新跟蹤狀態(tài)
){···};
其中,TrackableBehaviour.Status類型,包含 3種枚舉值,分別是:DETECTED-表示跟蹤對象丟失;TRACKED-表示識別到跟蹤對象;EX-表示識別到多個跟蹤對象般來說這也是種異常狀態(tài))。
得到實物模型的位置和角度信息后,執(zhí)行程序即可通過混合現(xiàn)實眼鏡,將虛擬空間中的虛擬模型通過投影疊加到用戶現(xiàn)實視覺中實物模型所對處的位置。圖3的上方為用戶佩戴混合現(xiàn)實眼鏡觀察實物模型,左側(cè)為眼鏡前置攝像頭拍攝到的實物模型畫面,右側(cè)為用戶透過混合現(xiàn)實眼鏡鏡片所看到的實際畫面,白色的虛擬模型疊加到了用戶視覺中實物模型的位置。
在使用Vuforia增強現(xiàn)實引擎對標(biāo)識圖進行定位并將定位信息應(yīng)用到混合現(xiàn)實程序的實際操作過程中,會遇到兩個技術(shù)上的難點。
難點1:Vuforia增強現(xiàn)實引擎對標(biāo)識圖進行識別時,對標(biāo)識圖在前置攝像機畫面中的大小有一定的要求。標(biāo)識圖太小或離得太遠,很容易造成標(biāo)識圖的“丟失”。
為了應(yīng)對這個問題,程序會自動記錄標(biāo)識圖“丟失”前最后一次有效識別的位置和角度信息。并且讓虛擬模型保留在這個位置,“假裝”識別圖還在那里。由于“虛擬空間”會隨著用戶的頭部運動而移動和旋轉(zhuǎn),程序還需要通過混合現(xiàn)實眼鏡的位移傳感器捕獲用戶頭部的運動信息,將位移和角度變化通過相應(yīng)的計算,疊加到標(biāo)識圖留下的位置角度信息上。
難點2:在標(biāo)識圖逐漸遠離至“丟失”前的幾幀,由于其在畫面中越來越小,特征越來越模糊,往往導(dǎo)致Vuforia引擎識別出錯誤的角度信息,使得模型扭向一些不正常的角度。而為了應(yīng)對難點1,這些不正常的角度將在標(biāo)識圖“丟失”后被記錄下來,導(dǎo)致疊加在實物模型上的虛擬模型角度不正確。
為了應(yīng)對這個問題,程序在運行中會記錄當(dāng)前時間到1 s之前(30幀)的所有角度信息,并對這30幀數(shù)據(jù)進行實時分析。根據(jù)不同幀之間角度變化的速度、方向等,自動判斷那些出現(xiàn)角度“跳變”的數(shù)據(jù)。若這些數(shù)據(jù)出現(xiàn)在標(biāo)識圖的“丟失”點附近,則舍棄這些錯誤數(shù)據(jù),選擇“跳變”出現(xiàn)前的最后數(shù)據(jù)為標(biāo)識圖的角度信息。
混合現(xiàn)實眼鏡的成像原理是通過在用戶左右眼中投影同一個虛擬物體不同角度的畫面,從而產(chǎn)生立體視覺。因此,在虛擬空間坐標(biāo)原點的兩側(cè)分別部署兩臺攝像機,以模擬用戶的左右眼。兩臺攝像機間隔68 mm(人眼的平均瞳距),每臺攝像機采集到的畫面通過一個單獨的渲染通道渲染至1張720p的貼圖中。然后將這兩張貼圖分別顯示到混合現(xiàn)實眼鏡的左右眼投影中。
混合現(xiàn)實眼鏡在使用過程中的操作方式和傳統(tǒng)的三維游戲有很大區(qū)別。最顯著的區(qū)別是用戶無法使用鍵盤鼠標(biāo)在三維虛擬空間中進行選擇、點擊、拖動等操作。為此我們開發(fā)了適用于混合現(xiàn)實眼鏡的“凝視”操作方式,其實現(xiàn)方式如下:
(1)在坐標(biāo)原點正Z軸方向(用戶頭部鼻尖方向)延伸出一根不可見的射線。通過這根射線和其他虛擬物體進行碰撞檢測,一旦有物體被射線“拾取”,程序就認(rèn)為用戶正在“凝視”此物體。
(2)當(dāng)用戶“凝視”的時間足夠長(超過1.5 s),程序即自動觸發(fā)此物體的“點擊”事件。至于物體被“點擊”后執(zhí)行哪些操作(顯示信息、被拖動、進入到下一個教學(xué)步驟等),則寫在這些物體各自的OnClick事件腳本中。
通過這種“凝視”機制,在負責(zé)事件觸發(fā)的EventTrigger類中添加了兩個自定義句柄IPointer-EnterHandler和IPointerExitHandler,借此三維場景中的每個可觸發(fā)物件都獲得了兩個相關(guān)的自定義事件,其定義如下:
void OnPointerEnter(PointerEventData eventData)
//當(dāng)用戶的“凝視”觸碰到此物體時,觸發(fā)事件
void OnPointerExit(PointerEventData eventData)
//當(dāng)用戶的“凝視”離開到此物體時,觸發(fā)事件
通過這兩個事件,程序可以明確用戶當(dāng)前有沒有“凝視”對象以及對象是誰。實現(xiàn)了用戶在虛擬三維空間中操作物體和進行交互的功能之后,可以根據(jù)之前設(shè)計的教案,編排用戶的整個互動教學(xué)流程。
在本案例中,通過在虛擬空間中設(shè)置“上一步”和“下一步”的按鈕,用戶使用“凝視”對相應(yīng)的按鈕進行觸發(fā),發(fā)送“點擊”事件給按鈕。按鈕在各自的事件處理腳本中根據(jù)收到的OnClick事件,判斷當(dāng)前所在的教學(xué)步驟處于教案的哪個環(huán)節(jié),并跳轉(zhuǎn)到下一教學(xué)步驟或返回上一個步驟的操作。
混合現(xiàn)實眼鏡的成像原理是在用戶的目鏡前設(shè)置一塊半透明的折射透鏡,微型投影儀投射的光線通過透鏡折射到用戶眼中。由于其成像原理的制約,混合現(xiàn)實眼鏡無法投影“黑色”到用戶眼中。即虛擬物體和信息的不透明度受其使用的顏色亮度的制約。亮度越高(越接近白色)的顏色,其不透明度越高;亮度越低(接近黑色)的顏色,不透明度也越低,純黑的物體無法被顯示。受這一特點的制約,在教案設(shè)計和建模過程中,在各種虛擬物體和信息的配色方面,需要多加考慮。越是重要的物體和信息,在設(shè)計時賦予其越明亮的顏色,不太重要的信息則可以使用較深較暗的顏色。
本案例制作過程的最后一步是將制作好的項目工程文件編譯為可執(zhí)行文件,并復(fù)制到相應(yīng)的硬件平臺上運行。所使用的混合現(xiàn)實眼鏡ActionOne所搭載的操作系統(tǒng)是Android,因此需要在Unity中將制作好的工程打包為apk文件,并復(fù)制到混合現(xiàn)實眼鏡中進行安裝。
圖4學(xué)生進行教學(xué)測試Fig.4 Teaching test with students
虛實結(jié)合的減速機課件開發(fā)完成后,招募8名學(xué)生進行了小范圍的測試,如圖4所示。測試顯示,所有學(xué)生都可以在無人指導(dǎo)的情況下,根據(jù)程序的教學(xué)和提示完成減速機的拆裝操作。其中最快的學(xué)生用時5 min 30 s,最慢的學(xué)生用時12 min 55 s,平均完成時間為9 min 45 s。
由于受設(shè)備數(shù)量和疫情的限制,未能實現(xiàn)更大規(guī)模的測試?,F(xiàn)有的小范圍測試結(jié)果顯示,這種教學(xué)方式可以適應(yīng)無輔導(dǎo)、離散式的自主教學(xué)需求,可以為后疫情時期的實踐類課程授課提供探索和借鑒。
本文研究的基于混合現(xiàn)實的虛實結(jié)合的工程訓(xùn)練教學(xué),不同于常規(guī)的虛擬現(xiàn)實應(yīng)用實踐,并不著眼于用虛擬設(shè)備彌補硬件設(shè)施不足,或避免實踐操作的危險。這種虛實結(jié)合的教學(xué)方式的意義,對學(xué)生來說在于實現(xiàn)實踐類課程的自主學(xué)習(xí)、遠程學(xué)習(xí);對學(xué)校來說則在于實現(xiàn)無輔導(dǎo)教學(xué)、無需集中示范教學(xué)。經(jīng)過實踐和測試,證明這種虛實結(jié)合的教學(xué)方式,可以實現(xiàn)學(xué)生自主學(xué)習(xí),滿足無輔導(dǎo)、無示范、不集中的教學(xué)要求。
當(dāng)然這種教學(xué)方式也存在不足之處。首先混合現(xiàn)實眼鏡,即使是國產(chǎn)品牌也屬于價值較高的設(shè)備。在使用、保管、責(zé)任人認(rèn)定,以及批量配置所需的成本等方面,都會對這種教學(xué)方式的推廣和部署造成很大的限制。其次,機械裝置在裝配過程中,往往會存在一定的裝配誤差。如何發(fā)現(xiàn)并消除這些誤差是實踐訓(xùn)練過程的重要考核指標(biāo)。但就目前的混合現(xiàn)實眼鏡的測量精度來說無法觀測出實際裝配中存在的誤差,這只能在教案設(shè)計和文字說明中盡量彌補。
近幾年來,虛擬現(xiàn)實技術(shù)在教育領(lǐng)域的應(yīng)用越來越廣泛。2013年,教育部開始認(rèn)定國家級虛擬仿真實驗室建設(shè)成果[4-5],大批高校開始建設(shè)虛擬仿真實驗室?;旌犀F(xiàn)實技術(shù)作為虛擬現(xiàn)實技術(shù)的延伸方向之一,在工程訓(xùn)練中有相當(dāng)大的應(yīng)用價值。其虛實結(jié)合的特點相比傳統(tǒng)的教學(xué)方式,在可視化、交互性方面有巨大提高[6]。
2020年,全球多國爆發(fā)了新冠疫情,對正常的教育計劃和教學(xué)秩序產(chǎn)生了嚴(yán)重沖擊。為了控制疫情,多地停工停課,教育方式多轉(zhuǎn)向網(wǎng)絡(luò)授課。由于工程訓(xùn)練等實踐類課程具有極強的操作性和實踐性,教師教學(xué)過程中需要集中示范和手把手地操作指導(dǎo),這使得實踐類課程的教學(xué)目標(biāo)與為了抗擊疫情而實行的在線授課等教學(xué)方式之間,產(chǎn)生了難以調(diào)和的矛盾。而本文所研究的基于混合現(xiàn)實的虛實結(jié)合的教學(xué)方式,為新冠疫情下如何更有效地完成實踐類課程的教學(xué)目標(biāo),提供了探索和研究的思路,有望在不遠的將來,成為多媒體現(xiàn)代化教學(xué)的有力補充。