楊軍杰 王小霞
摘要:化學(xué)實(shí)驗(yàn)是一門操作性非常強(qiáng)的實(shí)驗(yàn)科學(xué),許多化學(xué)實(shí)驗(yàn)存在一定的危險(xiǎn)性、不可現(xiàn)實(shí)操作性、難以理解性。而虛擬現(xiàn)實(shí)實(shí)驗(yàn)直接操作對(duì)象是三維模型,并結(jié)合文字、聲音的提示,不僅能使學(xué)生達(dá)到身臨其境的效果也能夠提高學(xué)生的學(xué)習(xí)興趣,而且具有可靠的安全性。因此,基于虛擬現(xiàn)實(shí)技術(shù)的化學(xué)實(shí)驗(yàn)就顯得尤其重要。本研究基于虛擬現(xiàn)實(shí)技術(shù),結(jié)合硬件設(shè)備HTC Vive和Unity3D三維引擎,進(jìn)行化學(xué)教學(xué)資源的開發(fā)與實(shí)現(xiàn),以期優(yōu)化教學(xué)效果提高學(xué)生學(xué)習(xí)的積極性,同時(shí)也希望豐富化學(xué)實(shí)驗(yàn)教學(xué)方式。
關(guān)鍵詞:虛擬現(xiàn)實(shí)技術(shù);HTC Vive;Unity3D;化學(xué)教學(xué)資源
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)30-0219-03
1概述
自2016年虛擬現(xiàn)實(shí)元年以來,虛擬現(xiàn)實(shí)發(fā)展迅速,多用來三維空間、物體的展示以及醫(yī)療、工業(yè)、飛行等技能的訓(xùn)練。通過文獻(xiàn)研究分析發(fā)現(xiàn),國(guó)內(nèi)學(xué)者關(guān)于虛擬現(xiàn)實(shí)應(yīng)用于化學(xué)實(shí)驗(yàn)教學(xué)中的研究較少、研究表述不夠詳盡,且多偏向于理論研究,可實(shí)踐性不強(qiáng)?;谠撗芯勘尘埃诒狙芯恐性敿?xì)介紹了VR化學(xué)實(shí)驗(yàn)教學(xué)資源的開發(fā)過程,實(shí)現(xiàn)了通過SteamVR Plugin插件以及VRTK插件實(shí)現(xiàn)實(shí)驗(yàn)室制氧氣實(shí)驗(yàn)。希望給相關(guān)的實(shí)驗(yàn)教學(xué)研究者、使用者和VR資源開發(fā)者提供一定的參考。
2虛擬現(xiàn)實(shí)技術(shù)
VR(Virtual Reality,即虛擬現(xiàn)實(shí),簡(jiǎn)稱vR)以計(jì)算機(jī)技術(shù)和頭戴顯示器技術(shù)為核心融合傳感器、眼動(dòng)儀、數(shù)據(jù)手套和大數(shù)據(jù)等多領(lǐng)域技術(shù)生成三維虛擬世界,并通過手柄或數(shù)據(jù)手套實(shí)現(xiàn)人機(jī)交互,實(shí)現(xiàn)能拓展人類的感知邊界效果。VR技術(shù)作為一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)仿真技術(shù),結(jié)合當(dāng)前峰值傳輸速率10Gbps的5G技術(shù),可以滿足VR應(yīng)用對(duì)網(wǎng)絡(luò)寬帶和延時(shí)的需求,能夠真正實(shí)現(xiàn)沉浸性。VR平臺(tái)被認(rèn)為是下一代計(jì)算平臺(tái),而VR眼鏡也被認(rèn)為是人類的最后一塊屏幕。本研究以“VR實(shí)驗(yàn)室制氧氣實(shí)驗(yàn)”為例以豐富化學(xué)教學(xué)資源。
3硬件設(shè)備及軟件
HTC Vivef浸入式頭戴顯示器)是由HTC與Valve軟件公司共同開發(fā)的一款浸入式虛擬現(xiàn)實(shí)設(shè)備,主要有頭顯本體、兩個(gè)手柄、兩個(gè)基站、轉(zhuǎn)接盒和各類線材組成。當(dāng)連接所有設(shè)備,并在設(shè)置SteamVR時(shí)按照提示用手柄劃出虛擬空間,體驗(yàn)者能夠自由探索虛擬空間中的任何地方。HTC Vive采用OLED液晶屏來作為頭盔顯示器屏幕,該屏幕雙眼合并的有效分辨率可高達(dá)2160*1200像素,一定程度上減少頭暈的感覺。HTC Vive采用Valve公司研發(fā)的Lighthouse定位技術(shù),Valve在頭顯和控制器上安裝了很多光敏傳感器,高速運(yùn)行的攝影機(jī)通過Light—house基站發(fā)出的紅外激光,在各個(gè)傳感器的位置定位,當(dāng)體驗(yàn)者移動(dòng)或者旋轉(zhuǎn)時(shí),根據(jù)位置差可以計(jì)算出頭顯的位置和運(yùn)動(dòng)軌跡。
Unity3D是由Unity Technologies開發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)引擎。插件是制作優(yōu)秀VR資源的基礎(chǔ)。SteamVR Plugin插件是開發(fā)虛擬現(xiàn)實(shí)的必備工具,其最重要的是該插件提供了一個(gè)虛擬環(huán)境中的攝像機(jī)[Camera-Rig]預(yù)制體。VRTK(Virtual RealiIv Toolkit)是使用Unity進(jìn)行VR交互開發(fā)的利器,VRTK能實(shí)現(xiàn)VR開發(fā)中大部分交互效果。本研究使用Unity3D作為開發(fā)工具,并結(jié)合SteamVR Plu-gin插件和VRTK插件,實(shí)現(xiàn)VR實(shí)驗(yàn)室制氧氣實(shí)驗(yàn)。
4虛擬現(xiàn)實(shí)教學(xué)資源開發(fā)
本研究主要分為三部分內(nèi)容,一是Uinty場(chǎng)景搭建;二是物體的交互,該部分是VR開發(fā)的重點(diǎn)也是關(guān)鍵之處,本研究主要運(yùn)用SteamVR Plugin插件和VRTK插件提供接口與HTC Vive硬件連接,實(shí)現(xiàn)物體的交互;三是實(shí)驗(yàn)室制氧氣實(shí)驗(yàn)的實(shí)現(xiàn)。
4.1實(shí)驗(yàn)場(chǎng)景建模實(shí)現(xiàn)
本研究用3D Studio Max創(chuàng)建模型,3ds Max以模型的快速編輯、提供多種修改器和貼圖方便的優(yōu)點(diǎn),得到很多建模用戶的青睞。本研究將.MAX文件導(dǎo)出為.FBX格式文件,再將.FBX導(dǎo)入到Unity中Project的Assets文件夾中,將其放到Hierarchy面板中,使其成為Gameobject物體,對(duì)模型的位置進(jìn)行歸零處理,以便后期制作,并分別賦予其材質(zhì),本實(shí)驗(yàn)?zāi)P腿鐖D1所示。
4.2實(shí)驗(yàn)交互實(shí)現(xiàn)
由于VR的多維特點(diǎn)注定了其交互要比平面圖形交互具有更豐富的形式,在VR資源的制作中,交互是重中之重。本研究實(shí)現(xiàn)的三個(gè)交互功能分別是:①實(shí)驗(yàn)物體的抓取操作,這是VR制作的最基本的物體交互;②點(diǎn)燃酒精燈開始試驗(yàn),以酒精燈的點(diǎn)燃與熄滅為例,自定義腳本實(shí)現(xiàn)物體的深層次交互;③VR中的uI制作及交互,制作滾動(dòng)提示輪播畫面。
4.2.1 VR場(chǎng)景搭建
在開發(fā)VR之前,環(huán)境的搭建是關(guān)鍵,本研究所用的軟件版本為:Unity:2017.3.0f3、VRTK:3.2.1、SteamVR:1.2.2,Unity引擎和插件版本最好對(duì)應(yīng),否則就會(huì)出現(xiàn)配置錯(cuò)誤的情況。配置環(huán)境的具體步驟:①打開UniIv開發(fā)平臺(tái),新建一個(gè)New UnityProject選擇3DTemplate,把在3ds Max中做好的模型.FBX文件導(dǎo)入到Unity的Assets中;然后將所需模型放至Hierarchy層級(jí)樹面板中;②刪除Main Camera,在Hierarchv層級(jí)樹中CreateEmpty新建Gameobject重命名為[VRTK_SDKManager],新建[VRTK_SDKSetup]、LeftController、RightController空物體,布局如圖2所示;③使[CameraRig]成為[VRTK_SDKSetup]的子物體;④分別為[VRTK_SDKManager]添加VRTK_SDKManager、[VRTK_SDKSetup]添加VRTK_SDKSetup、LeftController和Right-Controller添加VRTK_ControllerEvents腳本控件,VRTK_SDKSetup的配置如圖2所示。
打開SteamVR以及HTC Vive,在SteamVR軟件上會(huì)有頭顯本體、兩個(gè)手柄、兩個(gè)基站圖標(biāo),均顯示綠色,即可以使用。在Unity中點(diǎn)擊Play按鈕即可實(shí)現(xiàn)虛擬世界的漫游。
4.2.2實(shí)驗(yàn)儀器的抓取及交互
(1)抓取3D物體的基本原理及實(shí)現(xiàn)
抓取3D物體的基本原理分為①獲取手柄的引用;②手柄與3D物體的碰撞檢測(cè);③獲取按鈕事件;④抓取:失去rigibodv相關(guān)屬性;⑤松開:重新獲取自身的rigibodv相關(guān)屬性。在VRTK配置面板中最重要的就是抓取機(jī)制(Grab Attach Mechan-ic)以及抓取的二級(jí)聯(lián)動(dòng)(Secondary Grab Attach)的選擇。在抓取機(jī)制中本實(shí)驗(yàn)選擇默認(rèn)也是最典型的Child of Controller,將要抓取的物體作為控制手柄的子物體;另外一項(xiàng)FixedJoin在手柄和抓取物體之間建立Fixed Joint連接,當(dāng)有物體擋住被抓取物體時(shí),會(huì)產(chǎn)生碰撞,超過默認(rèn)1500的力時(shí)就會(huì)斷開與手柄的連接。在二級(jí)聯(lián)動(dòng)機(jī)制中,默認(rèn)Swap Controller允許抓取的物體在兩個(gè)手柄之間交換;以下兩項(xiàng)分別為Control Direction和AxisScale允許物體在被另外一個(gè)手柄抓取時(shí)控制物體的旋轉(zhuǎn)方向和物體的縮放。本研究以抓取酒精燈為例,為酒精燈添加腳本選擇默認(rèn)的VRTK配置面板即可,點(diǎn)擊Setup selected object(s),同時(shí)選中LeftController、RightController,添加腳本如圖3所示,使用手柄的Grib鍵實(shí)現(xiàn)物體的抓取。
(2)酒精燈火焰的點(diǎn)燃與熄滅
本研究用火柴來點(diǎn)燃酒精燈,一個(gè)手柄觸碰到火柴盒并按下Grib鍵時(shí),在另一只手柄上出現(xiàn)一只火柴,按下Trigger鍵火柴點(diǎn)燃,碰觸到酒精燈時(shí)酒精燈點(diǎn)燃,開始試驗(yàn)。其可以分為兩個(gè)步驟:①為火柴(Match)添加為可交互,配置如圖7所示大致相同,做成預(yù)制體備用;②火柴盒的Collider替換為VRTK實(shí)例里面的ArrowSpawnerBox;③配置Arrow Peffab即可。同時(shí)輯寫自定義C#腳本ChangeLight.cs如圖4,把此腳本掛載到Match上,并指定火焰粒子特效給Lightl,當(dāng)產(chǎn)生Match時(shí)火柴點(diǎn)燃,酒精燈點(diǎn)燃,效果如圖5所示。
(3)VR中uI的制作及交互
在VR中uI的制作和交互是制作VR資源很重要的一環(huán),其制作和一般Unity開發(fā)的uI制作大致相同,將Canvas的Ren-der Mode修改為世界坐標(biāo)系(world Space),調(diào)整至合適位置,添加相應(yīng)的交互腳本即可。在VR中uI的交互與一般Unity的uI主要兩方面不同,首先VR中的uI交互是基于手柄(射線),所以必須添加VRTK_UIPointer腳本,然后需要給Canvas畫布添加可交互腳本VRTK_UICanvas。添加這兩個(gè)基礎(chǔ)的腳本之后,在原有手柄上已有VRTK_Pointer以及渲染器的前提下,即可實(shí)現(xiàn)在VR中的uI交互。
在虛擬實(shí)驗(yàn)中,通常會(huì)對(duì)某物體的功能進(jìn)行提示以便于實(shí)驗(yàn)者更好地理解和掌握該場(chǎng)景,而突兀的文字提示不能達(dá)到沉浸的效果。本實(shí)驗(yàn)中當(dāng)實(shí)驗(yàn)者移動(dòng)時(shí)提示標(biāo)簽會(huì)跟隨實(shí)驗(yàn)者的移動(dòng)而轉(zhuǎn)動(dòng)方向,像是標(biāo)簽一直注視著實(shí)驗(yàn)者,使實(shí)驗(yàn)者更能沉浸其中。對(duì)于VR中的uI交互,在項(xiàng)目開始時(shí),會(huì)有選擇場(chǎng)景,或者在實(shí)驗(yàn)時(shí)提供提示功能的作用,點(diǎn)擊按鈕會(huì)輪播圖片或者場(chǎng)景。在本實(shí)驗(yàn)中實(shí)現(xiàn)點(diǎn)擊前進(jìn)、后退按鈕實(shí)現(xiàn)畫面輪播,在這里使用了DOTween插件,以達(dá)到有過渡的效果,實(shí)現(xiàn)效果如6圖所示。
4.3打包與發(fā)布
本實(shí)驗(yàn)是基于Unity+HTC Vive的VR項(xiàng)目,所以發(fā)布在PC平臺(tái)上,借助HTC Vive實(shí)現(xiàn)運(yùn)行。如果項(xiàng)目用到Shader,打包時(shí)需要注意要將Shader同時(shí)打包,具體操作步驟為Edit→Proj-ect Settings→Graphics,將用到的Shader拖至右側(cè)的Inspector面板的AlwaysIncluded Shaders選項(xiàng)中。然后就可以打包發(fā)布,其操作步驟為File→Build Settings→Add Open Scenes→Player Set-tings(設(shè)置參數(shù):XR Setting→OpenVR)一Build,填入項(xiàng)目名稱并選擇路徑存儲(chǔ)生成.EXE文件。打包完成后,連接HTC Vive并打開SteamVR,雙擊.EXE文件,即可實(shí)現(xiàn)漫游與項(xiàng)目操作。
5結(jié)論
本研究開發(fā)了實(shí)驗(yàn)室制氧氣的交互實(shí)驗(yàn),主要利用3DSMax進(jìn)行建立模型,通過HTC Vive交互設(shè)備和Unity3D開發(fā)引擎實(shí)現(xiàn)了實(shí)驗(yàn)物體的抓取、交互、uI制作,通過本研究的沉浸式交互,體驗(yàn)者可以增加對(duì)化學(xué)實(shí)驗(yàn)的興趣,提高實(shí)驗(yàn)效率,避免一些不必要的危險(xiǎn),同時(shí)也給虛擬現(xiàn)實(shí)開發(fā)者一定的借鑒。