蔡靜 吉婉穎
摘要:虛擬現(xiàn)實技術(shù)的快速發(fā)展和體感設備的不斷更新為教育提供了新靈感?;谔栂敌行羌捌溥\動規(guī)律,結(jié)合Leap Motion設備和 Unity 3D開發(fā)環(huán)境完成虛擬天文實驗室的構(gòu)建。在介紹虛擬實驗室場景和實驗室定義的一系列控制角色移動和場景切換的手勢后,展示根據(jù)自行定義手勢完成的沉浸式太陽系漫游過程,為虛擬現(xiàn)實技術(shù)在教育領(lǐng)域的應用提供有意義的探索。
關(guān)鍵詞:天文實驗室;太陽系;虛擬操作;Leap Motion;Unity 3D
DOIDOI:10.11907/rjdk.173240
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2018)008-0186-04
英文摘要Abstract:The rapid development of virtual reality technology and the continuous updating of somatosensory devices have provided new inspiration for education.In order to provide a more vivid presentation of the solar system of the planets and their laws of motion,this article combines the Leap Motion device and the Unity 3D development environment to complete the construction of a virtual astronomy laboratory.The virtual laboratory scene,a series of laboratory-defined gestures to control the role of mobile and scene switching gestures are introduced; the immersive solar roaming process is completed by self-defined gestures,which provides a very meaningful exploration in modern education with the technology of virtual reality.
英文關(guān)鍵詞Key Words:astronomy laboratory; solar system; virtual operation; Leap Motion; Unity 3D
0 引言
近年來基于Unity 3D開發(fā)的虛擬現(xiàn)實(Virtual Reality, VR)技術(shù)應用發(fā)展迅猛。VR技術(shù)的到來,打破了傳統(tǒng)多媒體的呈現(xiàn)模式?,F(xiàn)代教育結(jié)合VR,給學習者帶來高沉浸學習體驗。三星在美國的一個調(diào)查研究顯示,85%的老師認可 VR 教育,認為 VR 技術(shù)在教育方面有巨大潛力,能夠提高學生的學習效果[1]。
受到科技館天文實驗室啟發(fā),將虛擬現(xiàn)實與手勢控制結(jié)合,可以為天文教育賦予全新生命。對比傳統(tǒng)課堂中學生通過3D多媒體視頻觀察學習星體運動知識[2],VR虛擬實驗室可以使學生更“近距離”地接觸天文知識。同時,在虛擬實驗室中加入手勢操作,能夠使用戶獲得更好的學習感受和效果[3]。2013年,美國LEAP公司推出了一款毫米級近距離捕獲手運動的體感設備——Leap Motion[4],為人機交互和體感互動帶來新靈感。Leap Motion 的出現(xiàn)加速了手勢控制技術(shù)的發(fā)展[5],它不僅可以追蹤手掌運動、精確識別手勢變化,而且響應速度快,還提供多種應用程序接口,支持多種語言編程[6-7]。
本文將Leap Motion和Unity 3D結(jié)合,構(gòu)建能夠通過手勢控制的虛擬天文實驗室。通過定義不同的虛擬操作手勢,給使用者帶來沉浸式學習體驗,使其能夠漫游浩瀚宇宙。
1 系統(tǒng)總體設計
由于構(gòu)建一個完整的天文虛擬實驗室非常復雜,本文僅討論以太陽系為對象的天文虛擬實驗室的構(gòu)建,主要有以下研究內(nèi)容:
首先,利用Unity 3D 和 Maya搭建實驗室及太陽系場景,并在其中添加望遠鏡、太陽系行星等模型;然后,添加低頭行走并點擊觸發(fā)腳本,使用戶可以在實驗室中走動,并在點擊望遠鏡時切換至虛擬太陽系場景。在太陽系場景中定義3個觀察視角,結(jié)合一系列手勢操作,實現(xiàn)多角度觀察太陽系的效果。
實驗室架構(gòu)如圖1所示。
2 場景介紹
為了增強用戶體驗的沉浸感,本文所有場景都使用第一人稱視角。
2.1 實驗室場景
關(guān)鍵模型:實驗室模型和天文望遠鏡模型。
用戶初始進入場景的位置是在實驗室的入口處,用戶需要控制行走進入天文實驗室。望遠鏡模型在實驗室的左側(cè),用戶在實驗室向左走可以到達天文望遠鏡的位置。點擊天文望遠鏡切換至漫游場景。
2.2 太陽系場景
關(guān)鍵模型:太陽系模型、各個星體模型及對應文字框介紹。
3個視角:漫游視角、俯視視角、行星介紹視角。
用戶初始進入太陽系場景時,默認為漫游視角。用戶可以根據(jù)手掌移動或者手指指向控制角色進行移動,在整個太陽系場景中漫游;第2視角為俯視視角。用戶用手掌畫圈可切換至該視角;第3個視角為行星觀察視角,用戶需要靠近并用手指觸碰具體的行星,切換至該行星的觀察視角,近距離觀察該行星模型及閱讀文字介紹。
3 基于 Leap Motion 的手勢定義
Leap Motion支持自定義手勢,本系統(tǒng)主要有4種識別手勢,如圖5所示,實現(xiàn)在實驗室和虛擬場景內(nèi)的移動和操作,對應的操作功能如表1所示。
4 虛擬天文實驗室構(gòu)建
4.1 公用部分代碼
(1)碰撞檢測——點擊手勢。
物體碰撞可以通過剛體組件(Rigidbody)和碰撞器組件(Collider)進行檢測。其中,碰撞器組件Collider的IsTrigger屬性和OnTrigger Enter函數(shù)在天文實驗室中經(jīng)常用到。IsTrigger屬性值為布爾值,用戶可以在函數(shù)執(zhí)行時設置該屬性值。當值為True時,碰撞器組件可以檢測碰撞,并在碰撞發(fā)生時執(zhí)行OnTiggerEnter函數(shù),當值為False時則不作任何處理。
事實上,所有的手部點擊動作本質(zhì)上都是HandController與其它物體的碰撞。
(2)手勢判斷——手掌開合。
Leap Motion中定義的Hand.SphereRadius屬性保存了當前幀(currentFrame)手掌半徑。此處設置閾值為50,當該值大于50時表示用戶手掌攤開,小于50時表示用戶握拳。根據(jù)判斷手掌開合這兩種不同手勢,觸發(fā)不同動作。
(3)手勢判斷——手部位置。
Hand.PalmPosition返回的是手掌相對于Leap Motion的空間坐標。當手上下平移時,坐標Y值改變。當手前后推動時,坐標Z值改變。通過該屬性,可以獲得用戶手部位置,同時可以判斷手部移動方向。
(4)手勢判斷——畫圈。
Leap Motion可以識別畫圈手勢。如果要在Unity中獲取手勢并判斷是否為畫圈手勢,首先需要在Start函數(shù)中注冊該手勢。另外在Update函數(shù)中可獲取每一幀的手勢。通過判斷當前手勢是否為畫圈手勢,再進行一系列操作。
(5)Leap Motion 手勢方向轉(zhuǎn)換為Unity坐標系。
天文實驗室漫游場景中需camera有朝手指方向移動的功能,所以需將Leap Motion的手勢方向轉(zhuǎn)換為Unity場景中的坐標。調(diào)用Leap Motion的內(nèi)置函數(shù)Leap.UnityVectorExtension.ToUnity(leapDirction,bool),返回Unity場景中的三維坐標。
(6)人物行走。
在天文實驗室里,設置當用戶低頭30°~90°時,觸發(fā)行走動作。天文實驗室采用第一人稱視角,所以將Character Controller(角色控制器)組件掛載在camera上。通過Unity的vrCamera.eulerAngles獲得camera與水平面的角度,即用戶低頭角度。判斷該角度是否處于設置區(qū)間內(nèi),若是則觸發(fā)行走動作。
vrCamera.TransformDirection(Vector3.forward)返回當前camera向前的朝向,再將該方向向量傳入Character Controller 的SimpleMove函數(shù)中,另外再傳入一個速度值,最終實現(xiàn)角色直行移動。
4.2 太陽系構(gòu)建
(1)實現(xiàn)星球自轉(zhuǎn)與公轉(zhuǎn)動作。太陽系中星球的行為分為自轉(zhuǎn)和公轉(zhuǎn),使用Unity自帶的函數(shù)Rotate和RotateAround實現(xiàn)這些動作。
(2)實現(xiàn)星球運動軌跡的繪制。為了方便觀察星球的運動,還需要繪制星球運動軌跡,利用圓的參數(shù)方程實現(xiàn)繪制星球運動的圓環(huán)軌道。
4.3 手勢與場景交互操作實現(xiàn)
(1)手掌控制角色移動功能。
在判斷手的半徑大于閾值后,關(guān)閉觸發(fā)器,此時不會發(fā)生場景切換。在當前場景中,通過手掌上下移動控制攝像機前進后退,手掌前后移動控制相機上下移動,實現(xiàn)在太陽系漫游的效果。
(2)手指控制角色移動功能。
在判斷手的半徑小于等于閾值后,開啟觸發(fā)器,可以通過手指控制角色前進,近距離觀察某個星球。
(3)檢測碰撞場景切換功能。
當觸發(fā)器與標簽為Plant的物體發(fā)生碰撞時,切換到該行星的介紹場景。如圖7所示。
(4)切換視角功能。
切換視角本質(zhì)上就是切換camera??梢酝ㄟ^camera的SetActive方法將某個camera的屬性設為True,同時,將HandController重新綁定到新切換的視角上。不同視角展現(xiàn)如圖8所示,其中左圖為漫游視角。右圖為俯視視角。
(5) 手勢操控星球轉(zhuǎn)動功能。
在星球介紹場景下,如果在場景中只檢測到一只手,那么可以對當前星球執(zhí)行旋轉(zhuǎn)操作。若檢測到手部的水平移動,相應地對物體執(zhí)行順時針旋轉(zhuǎn)或者逆時針移動。如圖9所示。
5 結(jié)語
本文通過 Leap Motion 和Unity 3D的集成,構(gòu)建了以太陽系為對象的天文虛擬實驗室,并驗證了這種構(gòu)建方法的可行性。實驗結(jié)果表明本文描述的方法可以實現(xiàn)體驗者對太陽系“沉浸式”觀測與學習,并能夠使用本文自定義的手勢完成交互,為虛擬現(xiàn)實技術(shù)與教育領(lǐng)域的結(jié)合提供了新的靈感。
參考文獻:
[1] 胡畔.政策 VR 教育已成“互聯(lián)網(wǎng)+教育”下的新模式[N].中國經(jīng) 濟時報,2017 -03 -02(2).
[2] 陳小亮.基于Java3D的太陽系虛擬仿真研究[D].武漢:武漢科技大學,2015.
[3] 魏利,戴佳佳,王小雅,等.太陽系虛擬仿真教學系統(tǒng)的設計與開發(fā)[J].數(shù)字教育,2017,3(05):75-80.
[4] 劉德建,劉曉琳,張琰,等.虛擬現(xiàn)實技術(shù)教育應用的潛力、進展與挑戰(zhàn)[J].開放教育研究,2016,22(4):25-31.
[5] 嚴利民,杜斌,潘浩,等.基于Leap Motion的三維動態(tài)手指姿勢識別[J].激光與光電子學進展,2016,53(11):92-98.
[6] CRRIEL-RAZO Y,ICASIO-HERNANDEZ O,SEPULVEDA-CERVANTES G,et al.Leap motion controller three dimensional verification and polynomial correction[J].Measurement,2016,93:258-264.
[7] 潘佳佳,徐昆.基于Leap Motion的三維自由手勢操作[J].中國科技論文,2015,10(2):207-212.
[8] 黃俊,景紅.基于Leap Motion的手勢控制技術(shù)初探[J].計算機系統(tǒng)應用,2015,24(10):259-263.
[9] 雷安琪,馮玉田,唐子成.改進型手姿態(tài)關(guān)鍵點估計方法在Leap Motion中的應用[J].工業(yè)控制計算機,2017,30(9):36-37.
[10] 朱惠娟.基于 Unity3D 的虛擬漫游系統(tǒng)[J].計算機系統(tǒng)應用,2012,21(10):36-39.
[11] 寧亞楠,楊曉文,韓燮.基于Leap Motion和Unity3D的虛擬沙畫手勢識別及交互[J].計算機工程與應用,2017,53(24):202-206.
[12] 劉哲,張永策,劉志廣,等.移動終端下滴定分析虛擬實驗室的研究[J].計算機與應用化學,2015,32(7):880-884.
[13] WANG R Y.Real-time hand-tracking with a color glove[J].ACM Transactions on Graphics,2009,28(3):1-8.
[14] GIESER S N,BOISSELLE A,MAKEDON F.Real-time static gesture recognition for upper extremity rehabilitation using the leap motion[C].Los Angeles:International Conference on Digital Human Modeling and Applications in Health,Safety,Ergonomics and Risk Management,2015.
[15] KIM S L,SUK H J,KANG J H,et al.Using Unity 3D to facilitate mobile augmented reality game development[C].Internet of Things (WF-IoT),2014:21-26.
(責任編輯:江 艷)