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