孫 艷,顧維彬,王 冠,葛 巖,2,袁梓涵
(1.北華大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,吉林 吉林 132013;2.吉林大學(xué)管理學(xué)院,吉林 長春 130025;3.東北大學(xué)醫(yī)學(xué)與生物信息工程學(xué)院,遼寧 沈陽 110167)
2019年4月,中共中央辦公廳、國務(wù)院辦公廳印發(fā)的《關(guān)于以2022年北京冬奧會(huì)為契機(jī)大力發(fā)展冰雪運(yùn)動(dòng)的意見》指出,力爭到2022年,我國冰雪運(yùn)動(dòng)總體發(fā)展更加均衡、普及程度明顯提升、冰雪產(chǎn)業(yè)蓬勃發(fā)展、冰雪運(yùn)動(dòng)競(jìng)技水平明顯提高[1],而有效利用信息技術(shù),推動(dòng)冰雪運(yùn)動(dòng)普及是目前被普遍關(guān)注的重點(diǎn).基于VR的虛擬仿真實(shí)驗(yàn)可以為參與者提供沉浸式體驗(yàn)[2],使用戶產(chǎn)生置身于冰雪世界之中的感覺,營造出具有豐富想象力的虛擬空間,在視覺、觸覺及聽覺等方面獲得更好的感受與體驗(yàn)[3-5].作為冰雪運(yùn)動(dòng)的重要組成部分,冰壺具有廣闊的發(fā)展前景.本文利用Unity3D游戲引擎與HTC vive 硬件設(shè)備開發(fā)基于VR的虛擬仿真實(shí)驗(yàn),促進(jìn)冰壺運(yùn)動(dòng)的普及推廣.
國家體育總局發(fā)布的《“帶動(dòng)三億人參與冰雪運(yùn)動(dòng)”實(shí)施綱要(2018—2022年)》提出普及群眾冰雪運(yùn)動(dòng),實(shí)現(xiàn)三億人參與冰雪運(yùn)動(dòng)的目標(biāo)[6],使得中國冰雪產(chǎn)業(yè)迎來了發(fā)展契機(jī).冰壺運(yùn)動(dòng)是一項(xiàng)技巧與智慧、個(gè)人與集體相結(jié)合,策略性較強(qiáng)的運(yùn)動(dòng),具有既鍛煉體力,又鍛煉腦力的特點(diǎn).中國冰壺運(yùn)動(dòng)曾在國際賽事中取得過可喜成績,國家體育總局也將冰壺列為北京冬奧會(huì)的重點(diǎn)項(xiàng)目.但受制于基礎(chǔ)條件薄弱[7-10]、群眾參與度低[7]等問題,冰壺運(yùn)動(dòng)未能得到普及.黑龍江省體育局曾建設(shè)可拆裝移動(dòng)冰壺場(chǎng)館,以彌補(bǔ)群眾性冰雪運(yùn)動(dòng)基礎(chǔ)設(shè)施的缺失[11];金晶[12]將冰壺運(yùn)動(dòng)和機(jī)器人技術(shù)相結(jié)合,自制冰壺機(jī)器人實(shí)驗(yàn)教學(xué)設(shè)備,搭建人工智能實(shí)驗(yàn)教學(xué)平臺(tái).但與仿真技術(shù)相比,移動(dòng)冰壺場(chǎng)館耗資巨大、便捷程度低,很難實(shí)現(xiàn)普及;人工智能教學(xué)實(shí)驗(yàn)平臺(tái)缺少情景與臨場(chǎng)感,不能提升用戶參與度,而采用計(jì)算機(jī)模擬仿真技術(shù)可再現(xiàn)運(yùn)動(dòng)員的訓(xùn)練過程,從而達(dá)到訓(xùn)練目的.目前,可視化仿真、多媒體仿真、基于VR的虛擬仿真已成為研究熱點(diǎn)[13].
基于HTC vive的VR虛擬仿真實(shí)驗(yàn)可進(jìn)行數(shù)字內(nèi)容的3D模擬開發(fā),借助沉浸式虛擬實(shí)驗(yàn)?zāi)M冰壺運(yùn)動(dòng)環(huán)境與流程,高仿真、可視化的內(nèi)容可為用戶創(chuàng)設(shè)具有臨場(chǎng)感、沉浸感和交互性的實(shí)驗(yàn)情境,獲得與現(xiàn)實(shí)環(huán)境相近的運(yùn)動(dòng)體驗(yàn)[12];只需通過肢體控制就可實(shí)現(xiàn)與虛擬場(chǎng)景中的物體進(jìn)行交互,激發(fā)使用興趣,提升使用意愿,即使無法克服因場(chǎng)地條件帶來的摩擦阻力,用戶仍能進(jìn)行相關(guān)動(dòng)作的反復(fù)練習(xí)與節(jié)奏把握,提升訓(xùn)練效果[14],助力冰壺運(yùn)動(dòng)普及.
1)用戶分析.將用戶定位為冰壺愛好者及從未接觸過冰壺運(yùn)動(dòng)但有學(xué)習(xí)意愿的人群,該人群對(duì)冰壺知識(shí)與技能的學(xué)習(xí)有一定需求.冰壺運(yùn)動(dòng)虛擬仿真實(shí)驗(yàn)的設(shè)計(jì)與開發(fā),依托沉浸式虛擬仿真技術(shù)模擬出真實(shí)環(huán)境供使用者身臨其境地進(jìn)行實(shí)驗(yàn)與練習(xí),能夠促使其加強(qiáng)對(duì)動(dòng)作的理解,提升運(yùn)動(dòng)技能.
2)目標(biāo)分析.冰壺運(yùn)動(dòng)后期訓(xùn)練要求較高,本實(shí)驗(yàn)僅主要用于認(rèn)識(shí)冰壺運(yùn)動(dòng)并掌握相關(guān)運(yùn)動(dòng)技巧,達(dá)到對(duì)有學(xué)習(xí)需求的冰壺愛好者進(jìn)行初步教學(xué)及提高認(rèn)知的目的.冰壺運(yùn)動(dòng)新穎易學(xué),但由于存在諸多問題,使得普及度與參與度較低,利用該實(shí)驗(yàn)可以起到促進(jìn)冰壺運(yùn)動(dòng)普及、發(fā)展的作用.
依據(jù)“以虛輔實(shí)”的設(shè)計(jì)思路,建立多模塊、多層級(jí)的高質(zhì)量沉浸式虛擬仿真實(shí)驗(yàn),解決冰壺運(yùn)動(dòng)普及推廣中存在的問題.虛擬仿真實(shí)驗(yàn)主要由教學(xué)模塊、學(xué)習(xí)模塊和考核模塊3個(gè)模塊組成,從教到學(xué)再到評(píng)價(jià)構(gòu)成完整的教學(xué)過程,實(shí)現(xiàn)高效自主學(xué)習(xí).按照使用者可接受度,各模塊由淺入深、循序漸進(jìn)進(jìn)行設(shè)計(jì).系統(tǒng)整體架構(gòu)見圖1.
圖1 整體架構(gòu)Fig.1 Overall architecture
教學(xué)模塊位于最底層,是基礎(chǔ)知識(shí)的掌握階段.這部分主要包括講解器材,以圖文形式闡明比賽規(guī)則,以動(dòng)畫形式解析、演示相關(guān)動(dòng)作,幫助使用者掌握冰壺運(yùn)動(dòng)的基本知識(shí).學(xué)習(xí)模塊位于第2層級(jí),是自主操作練習(xí)階段,即在掌握相關(guān)知識(shí)的基礎(chǔ)上進(jìn)行自主練習(xí),要求熟悉器材、規(guī)則與相關(guān)動(dòng)作,通過自主練習(xí)更好地掌握冰壺得分技巧.考核模塊位于最高層級(jí),采用相關(guān)知識(shí)客觀評(píng)價(jià)與動(dòng)作姿勢(shì)主觀評(píng)價(jià)相結(jié)合的考核方式,對(duì)使用者的使用情況進(jìn)行評(píng)價(jià),發(fā)現(xiàn)不足即可在接下來的實(shí)驗(yàn)中予以改正.
基于VR的虛擬仿真實(shí)驗(yàn)開發(fā)流程包括前期分析、整體內(nèi)容設(shè)計(jì)、素材制作及整體功能實(shí)現(xiàn)4個(gè)步驟,可劃分為前期準(zhǔn)備與后期開發(fā)兩個(gè)階段.開發(fā)流程見圖2.
圖2 基于VR的虛擬仿真實(shí)驗(yàn)開發(fā)流程Fig.2 Development process of virtual simulation experiment based on VR
1)前期準(zhǔn)備階段包括前期分析、整體內(nèi)容設(shè)計(jì)及素材制作3個(gè)步驟.由開發(fā)人員與專業(yè)教練員共同確定用戶群體,進(jìn)行用戶、需求、學(xué)習(xí)內(nèi)容分析及規(guī)則解析,在總體架構(gòu)的基礎(chǔ)上進(jìn)一步細(xì)化.首先確定虛擬仿真實(shí)驗(yàn)的整體內(nèi)容,再進(jìn)行素材制作.運(yùn)用3DS MAX 2016軟件建立器材、場(chǎng)景及人物模型,后續(xù)制作均在模型的基礎(chǔ)上進(jìn)行;利用Photoshop CC 2015軟件制作三維模型的材質(zhì)貼圖、背景貼圖與UI素材;利用After Effects CC 2015軟件制作教學(xué)模塊的分解動(dòng)作演示動(dòng)畫.
2)后期開發(fā)階段(功能實(shí)現(xiàn)階段).虛擬仿真實(shí)驗(yàn)主框架由教學(xué)模塊、學(xué)習(xí)模塊和考核模塊3個(gè)功能模塊組成.運(yùn)行時(shí),首先打開初始界面,運(yùn)用手柄點(diǎn)擊不同按鈕觸發(fā)場(chǎng)景、切換事件、加載相應(yīng)的場(chǎng)景.在教學(xué)模塊會(huì)觸發(fā)視頻以及圖文播放,在學(xué)習(xí)與考核模塊均會(huì)觸發(fā)不同形式的人機(jī)交互功能.采用C#語言編寫冰壺的抓取與投擲動(dòng)作、區(qū)域限制、冰刷擦地、答題交互等功能,運(yùn)用VRTK插件實(shí)現(xiàn)以上模塊功能的VR交互.
基于VR虛擬仿真實(shí)驗(yàn),利用Unity3D游戲引擎和HTC vive 硬件設(shè)備進(jìn)行開發(fā).通過分析處理從硬件設(shè)備手柄、頭顯傳遞回電腦的數(shù)據(jù),結(jié)合定位儀定位,使該虛擬仿真實(shí)驗(yàn)項(xiàng)目中的場(chǎng)景和冰壺的運(yùn)動(dòng)軌跡與真實(shí)世界保持一致,以帶給用戶較強(qiáng)的沉浸感.要將現(xiàn)實(shí)中的冰壺比賽規(guī)則應(yīng)用到實(shí)驗(yàn)中,就要遵循物理規(guī)律,還原現(xiàn)實(shí)中冰壺的物理行為與受擊反饋.用戶可通過手柄完成投擲冰壺的動(dòng)作;操控冰刷,改變冰壺的滑行速度及調(diào)整滑行方向,只有更靠近圓壘的一方,才能獲得比賽勝利,進(jìn)入更高階的比賽.
該模塊界面均使用UGUI功能中的Canvas實(shí)現(xiàn),運(yùn)用Image、Button、Text等組件進(jìn)行搭建,并在C#腳本頭部位置添加引用:using.UnityEngine.Scene Management.運(yùn)用SceneManagement.LoadScene()方法實(shí)現(xiàn)各場(chǎng)景的直接切換.在動(dòng)畫演示部分使用Resources.Load動(dòng)態(tài)加載資源的方式,查找并顯示播放相關(guān)解析視頻.最后利用VRTK插件實(shí)現(xiàn)該項(xiàng)目模塊的VR交互,為Canvas掛載VRTK_UICanvas腳本后就可使用頭顯與手柄實(shí)現(xiàn)人機(jī)交互.按下手柄上的不同按鈕可發(fā)射與UI交互的射線,實(shí)現(xiàn)VR交互功能.教學(xué)模塊界面見圖3.
圖3 教學(xué)模塊界面Fig.3 Teaching module interface
該模塊各個(gè)界面均使用UGUI功能中的Canvas進(jìn)行搭建,見圖4、圖5.該模塊主要實(shí)現(xiàn)各場(chǎng)景之間的切換以及冰壺投擲、區(qū)域限制、冰壺碰撞、冰刷擦地等功能.
圖4學(xué)習(xí)模塊實(shí)操場(chǎng)景Fig.4Learning module practice scene圖5學(xué)習(xí)模塊顯示器畫面Fig.5Learning module display screen
1)冰壺投擲.將其功能設(shè)置為按下右手柄的Trigger鍵進(jìn)行冰壺抓取與投擲,且若持續(xù)按下右手柄的Trigger鍵可實(shí)現(xiàn)冰壺的長時(shí)間抓取與投擲.首先,為所抓取的冰壺添加由VRTK提供的組件:VRTK_InteractHaptics、VRTK_SwapControllerGrabAction、VRTK_ChildOfControllerGrabAttach、VRTK_InteractableObject.然后為右手柄RightControler添加由VRTK提供的組件:VRTK_ControllerEvents、VRTK_Pointer、VRTK_InteractTouch、VRTK_InteractGrab.在Inspector界面VRTK_InteractGrab中Grab Button選擇Trigger Press即可通過按壓右手柄Trigger鍵對(duì)冰壺進(jìn)行抓取.通過將冰壺上VRTK_InteractableObject中Hold Button To Use設(shè)置為True,實(shí)現(xiàn)長時(shí)間對(duì)冰壺的抓取,松開手柄按鈕進(jìn)行投擲.核心代碼:
interactableObject = GetComponent
if (interactableObject != null) {
interactableObject.InteractableObjectUngrabbed += OnUnGraph;∥抓住冰壺然后扔出事件添加監(jiān)聽
}
private void OnUnGraph(object sender,InteractableObjectEventArgs e)∥放下事件 {
interactableObject.isGrabbable = false;∥由可抓取變?yōu)椴豢勺ト?/p>
MoveManger.Instance.Floow();∥對(duì)目標(biāo)跟隨
}
2)冰壺區(qū)域限制.根據(jù)冰壺運(yùn)動(dòng)規(guī)則:當(dāng)冰壺觸碰到界限邊緣時(shí)將立即停止運(yùn)動(dòng);當(dāng)冰壺抵達(dá)擲球端欄線時(shí),運(yùn)動(dòng)員可跟隨冰壺進(jìn)行摩擦運(yùn)動(dòng).所以,需要對(duì)冰壺運(yùn)動(dòng)區(qū)域進(jìn)行限制.首先,為其增加Collider并打開Is Trigger,然后調(diào)用OnCollisionEnter()函數(shù)與OnCollisionExit()函數(shù).部分核心代碼:
public voidOnTriggerEnter(Collider collider){ ∥區(qū)域邊緣
if (collider.tag == "Line"){
∥人物開始跟隨球運(yùn)動(dòng)
isHaveDrag = true;∥開始摩擦
if (MoveManger.Instance.RedTimePlay){
VR_Floow.Instance.floowGo = gameObject; ∥設(shè)置跟隨目標(biāo)
MoveManger.Instance.GameState = GameState.WipeFloor;
}
}
else if(collider.tag=="OutLine"){
MoveToStatic(); ∥停止運(yùn)動(dòng)
}
}
3)冰壺碰撞.為撞擊冰壺,在增加Collider的基礎(chǔ)上再增加Rigidbody,開啟Is Trigger,盡量符合現(xiàn)實(shí)物理現(xiàn)象并產(chǎn)生碰撞.當(dāng)冰壺間發(fā)生碰撞時(shí),由速度大的一方給予速度小的一方緩沖能力,而速度小的一方也會(huì)阻礙速度大的一方繼續(xù)運(yùn)動(dòng),并改變其方向.部分核心代碼:
if(isHaveDrag==false|| Vector3.Magnitude(rigidbody.velocity)<=0.05)
∥由速度大者向速度小者提供沖量
return;
CanNext = false;
collision.gameObject.GetComponent
*Vector3.Magnitude(rigidbody.velocity)* 0.8f;
rigidbody.velocity = (rigidbody.velocity-collision.gameObject.GetComponent
∥計(jì)算速度及方向改變
isCollision = true;∥被碰撞標(biāo)識(shí)
IECurling ie = collision.gameObject.GetComponent
∥獲取被碰撞者的CurlingMove組件
4)冰刷擦地.將其功能設(shè)置為按下左手柄的Trigger鍵切換到擦球員視角進(jìn)行觀看,以及搖晃手柄控制擦地速度.為盡量符合現(xiàn)實(shí)物理現(xiàn)象與規(guī)律,在冰壺抵達(dá)擲球端欄線后,使用冰刷擦地,以減小摩擦力,實(shí)現(xiàn)冰壺的持續(xù)滑動(dòng)與方向改變.部分代碼:
if (floow){ ∥跟隨過程
v3=BingHu.position + new Vector3(0.3f,0,0);∥跟隨目標(biāo)位置
var dis = Vector3.Distance(transform.position,v3);
∥當(dāng)前位置與目標(biāo)位置的距離
if (dis >= 0.1f){∥距離大,則靠近
transform.position = Vector3.MoveTowards(transform.position,v3,Time.deltaTime * move_Speed);
gameObject.transform.localRotation = Quaternion.Euler(new Vector3(0,-180,0));
∥旋轉(zhuǎn)角度改變
}
else{
ransform.position = v3;
∥設(shè)置位置為目標(biāo)位置
transform.LookAt(BingHu);∥看向目標(biāo)
gameObject.transform.localRotation = Quaternion.Euler(new Vector3(0,-90,0));
∥旋轉(zhuǎn)角度改變
}
}
在使用者完成教學(xué)、學(xué)習(xí)兩個(gè)模塊任務(wù)后,即可進(jìn)入考核模塊.該模塊由客觀評(píng)價(jià)與主觀評(píng)價(jià)兩部分組成:對(duì)于理論知識(shí)與規(guī)則的掌握通過客觀選擇題進(jìn)行自我測(cè)驗(yàn),運(yùn)用遍歷循環(huán)與if語句實(shí)現(xiàn)答題正誤的判斷與計(jì)分,當(dāng)使用者選擇的答案與正確答案不符時(shí),便會(huì)彈出消息,提示該題回答錯(cuò)誤;由于對(duì)于冰壺運(yùn)動(dòng)的姿勢(shì)掌握難以進(jìn)行客觀評(píng)價(jià),因此,由使用者根據(jù)自身掌握情況,并與演示動(dòng)畫相結(jié)合進(jìn)行主觀自我評(píng)價(jià).經(jīng)過主、客觀評(píng)價(jià)后,使用者可自行選擇是否繼續(xù)進(jìn)行鞏固練習(xí).
我國冰壺運(yùn)動(dòng)發(fā)展處于初級(jí)階段,推廣與普及還存在問題.本次研究,基于VR設(shè)計(jì)實(shí)現(xiàn)了冰壺運(yùn)動(dòng)虛擬仿真實(shí)驗(yàn),構(gòu)建了教學(xué)模塊、學(xué)習(xí)模塊和考核模塊,使用者可進(jìn)行冰壺運(yùn)動(dòng)相關(guān)知識(shí)的學(xué)習(xí)、練習(xí)與考核.將該VR虛擬仿真實(shí)驗(yàn)在冰壺愛好者間進(jìn)行了小規(guī)模試用,調(diào)查發(fā)現(xiàn),該仿真實(shí)驗(yàn)具有較高的滿意度,使用者有較濃厚的學(xué)習(xí)興趣.由于不受基礎(chǔ)條件限制,使用者可以足不出戶,在虛擬環(huán)境下理解并習(xí)得冰壺運(yùn)動(dòng)的相關(guān)知識(shí)與技巧,大幅提高了參與興趣,提升了參與度,對(duì)冰壺運(yùn)動(dòng)的宣傳、推廣等具有重要的現(xiàn)實(shí)意義.
北華大學(xué)學(xué)報(bào)(自然科學(xué)版)2022年1期