李世杰,夏 斌
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
基于Kinect的體感康復(fù)游戲系統(tǒng)設(shè)計(jì)*
李世杰,夏 斌
(上海海事大學(xué) 信息工程學(xué)院,上海201306)
傳統(tǒng)的康復(fù)訓(xùn)練因理療師和設(shè)備緊缺、訓(xùn)練場(chǎng)地有限、娛樂(lè)性差等問(wèn)題,存在著很大的局限性。構(gòu)建了基于Kinect與Unity3D的體感康復(fù)游戲系統(tǒng),主要特色包括:虛擬人物與玩家運(yùn)動(dòng)同步;通過(guò)引導(dǎo)軌跡實(shí)現(xiàn)運(yùn)行引導(dǎo)反饋、卡通目標(biāo)點(diǎn)設(shè)定算法實(shí)現(xiàn)游戲的不同難度等。測(cè)試結(jié)果表明,系統(tǒng)具有很好的實(shí)時(shí)性、交互性和娛樂(lè)性,對(duì)類(lèi)似體感游戲開(kāi)發(fā)有較好的參考價(jià)值。
體感交互技術(shù);Unity3D;Kinect;醫(yī)療康復(fù)
近年來(lái),運(yùn)動(dòng)能力問(wèn)題成為了人們關(guān)注的焦點(diǎn),越來(lái)越多的人群需要進(jìn)行康復(fù)訓(xùn)練。研究表明,科學(xué)的康復(fù)訓(xùn)練可使患者的機(jī)體功能得到最大限度的恢復(fù),提高患者生活自理、工作和學(xué)習(xí)能力[1]。經(jīng)過(guò)幾十年的實(shí)踐,康復(fù)醫(yī)學(xué)對(duì)運(yùn)動(dòng)功能障礙的療效已獲得廣泛的肯定,特別是康復(fù)訓(xùn)練的介入,能有效地增強(qiáng)對(duì)肢體的控制力[2-3]。
但是,傳統(tǒng)康復(fù)訓(xùn)練必須在限定的康復(fù)場(chǎng)所,而且醫(yī)師在旁進(jìn)行指導(dǎo)才能進(jìn)行,有很大的局限性,整個(gè)康復(fù)訓(xùn)練過(guò)程比較單調(diào)、缺乏趣味性。隨著科技的發(fā)展,新型人機(jī)交互技術(shù)步入人們的視線,越來(lái)越多的人使用該技術(shù)進(jìn)行體感康復(fù)訓(xùn)練[4-5],TAYLOR M J等人率先證實(shí)Kinect技術(shù)在康復(fù)領(lǐng)域的可行性[6-7],隨后,WANN J P[9]等提出了可視化虛擬康復(fù)治療。
上述表明,基于Kinect的康復(fù)訓(xùn)練系統(tǒng)可以用來(lái)進(jìn)行肢體康復(fù)訓(xùn)練[9],但是目前的康復(fù)系統(tǒng)中動(dòng)作設(shè)計(jì)復(fù)雜,難度不合適,設(shè)計(jì)形式缺乏趣味性。本研究充分考慮到傳統(tǒng)康復(fù)訓(xùn)練系統(tǒng)的不合理性和單調(diào)性問(wèn)題,使用易于攜帶的Kinect設(shè)備,結(jié)合Unity3D游戲引擎[10-11],將康復(fù)動(dòng)作融入到游戲中,對(duì)游戲進(jìn)行系統(tǒng)測(cè)試,設(shè)計(jì)出一款不受地點(diǎn)限制、操作簡(jiǎn)單、趣味性強(qiáng)、穩(wěn)定性強(qiáng)的體感游戲康復(fù)訓(xùn)練系統(tǒng)[12]。
Kinect體感器設(shè)備共有3個(gè)攝像頭,分別為RGB彩色攝像頭、紅外線發(fā)射器和紅外線CMOS攝像頭。通過(guò)紅外線發(fā)射器發(fā)射出近紅外線,紅外線CMOS攝像機(jī)記錄,對(duì)測(cè)量空間進(jìn)行編碼處理,得到3D深度圖像。對(duì)3D深度圖像進(jìn)行再處理,獲取到關(guān)鍵關(guān)節(jié)點(diǎn)上的三維坐標(biāo)。在Unity3D與Kinect的連接方面,存在兩種方式,一種是基于C++的頭文件和靜態(tài)鏈接庫(kù)的方式,另一種是程序集的方式[13],這兩種方式在Unity中不可以直接調(diào)用,但是在C#平臺(tái)中提供與非托管程序的使用方式,導(dǎo)入動(dòng)態(tài)鏈接庫(kù)DLL文件,通過(guò)自定義數(shù)據(jù)結(jié)構(gòu)和算法,能夠?qū)崿F(xiàn)對(duì)Kinect中獲得的數(shù)據(jù)重新組織,在Unity[14]中使用,完成連接。
系統(tǒng)框架結(jié)構(gòu)圖如圖1所示,包含兩個(gè)部分,一是體感游戲康復(fù)系統(tǒng)開(kāi)發(fā),二是康復(fù)過(guò)程評(píng)估系統(tǒng)的研究。本文主要側(cè)重于體感康復(fù)游戲開(kāi)發(fā)部分,其中包括菜單界面、標(biāo)定界面、游戲界面和得分界面。菜單界面主要用于配置游戲的參數(shù),如:訓(xùn)練手部、動(dòng)作難度的設(shè)置等。標(biāo)定界面主要用于對(duì)人物位置的標(biāo)定?;颊咴谟螒蚪缑嬷羞M(jìn)行康復(fù)游戲訓(xùn)練。得分界面用于顯示完成不同動(dòng)作后的得分情況。在游戲設(shè)計(jì)過(guò)程中存在三個(gè)難點(diǎn),包括游戲中人物標(biāo)定、目標(biāo)點(diǎn)設(shè)定、引導(dǎo)軌跡繪制等。
圖1 系統(tǒng)框架結(jié)構(gòu)圖
2.1人物標(biāo)定
由于現(xiàn)實(shí)中玩家與虛擬人物的坐標(biāo)系不同,虛擬場(chǎng)景中的目標(biāo)點(diǎn)位置設(shè)定需要根據(jù)虛擬人物的初始位置相應(yīng)設(shè)定,因此需要進(jìn)行人物標(biāo)定。通過(guò)分析Kinect獲取的人物骨骼數(shù)據(jù),檢測(cè)是否在Kinect的最佳范圍之內(nèi)。系統(tǒng)中是通過(guò)移動(dòng)向量的方式來(lái)控制虛擬手部圖標(biāo)的移動(dòng),因此人物標(biāo)定的另一個(gè)目的是確定人物執(zhí)行游戲前所處的位置,以及提醒在游戲過(guò)程中要保持位置不發(fā)生移動(dòng)。當(dāng)人體偏離最佳位置時(shí),游戲界面中會(huì)出現(xiàn)調(diào)整提示語(yǔ),當(dāng)處于最佳位置時(shí),界面會(huì)出現(xiàn)保持當(dāng)前位置,以提醒在游戲過(guò)程中,位置不發(fā)生移動(dòng),倒計(jì)時(shí)顯示,游戲開(kāi)始。
2.2目標(biāo)點(diǎn)設(shè)定
目標(biāo)點(diǎn)是指康復(fù)動(dòng)作中,手臂運(yùn)動(dòng)完成最終所處的位置。系統(tǒng)中實(shí)現(xiàn)了四個(gè)康復(fù)訓(xùn)練動(dòng)作,如圖2所示,觀察四個(gè)康復(fù)動(dòng)作可以發(fā)現(xiàn)患者在做四個(gè)康復(fù)動(dòng)作時(shí),手部是圍繞著對(duì)應(yīng)的肩做圓周運(yùn)動(dòng)。游戲設(shè)計(jì)中每個(gè)動(dòng)作有三個(gè)難度等級(jí),即簡(jiǎn)單、一般、困難。
圖2 康復(fù)動(dòng)作
不同難度對(duì)應(yīng)不同的目標(biāo)點(diǎn),鑒于此,通過(guò)設(shè)置圓心角的大小來(lái)改變動(dòng)作難度等級(jí)。目標(biāo)點(diǎn)的位置如圖3所示,其中A點(diǎn)為參考坐標(biāo)點(diǎn),坐標(biāo)表示為(xa,ya,za),B點(diǎn)即圖中小豬所處的位置為目標(biāo)點(diǎn),坐標(biāo)表示為(xb,yb,zb),C點(diǎn)為起始坐標(biāo)點(diǎn),坐標(biāo)表示為(xc,yc,zc),游戲中的所有元素z值相等,所以在計(jì)算時(shí)采用二維坐標(biāo)進(jìn)行計(jì)算 ,θi代表不同難度等級(jí)下的圓心角,通過(guò)A、C點(diǎn)坐標(biāo)和θi的值即可求出B點(diǎn)的坐標(biāo),完成目標(biāo)點(diǎn)設(shè)定,公式如下
(1)
(2)
其中θi的大小通過(guò)康復(fù)動(dòng)作完整角度θ獲得,四個(gè)動(dòng)作的完整角度θ大小如表1所示,因?yàn)槊總€(gè)動(dòng)作有三種難度等級(jí),所以i的取值為1、2、3,公式如下:
(3)
圖3 目標(biāo)點(diǎn)位置
(°)
2.3引導(dǎo)軌跡線繪制
引導(dǎo)軌跡指的是在游戲執(zhí)行過(guò)程中,引導(dǎo)患者進(jìn)行康復(fù)動(dòng)作的標(biāo)準(zhǔn)軌跡線。在游戲設(shè)計(jì)中,考慮了兩種制作引導(dǎo)軌跡線的方法,第一種方法為使用Sphere球體進(jìn)行創(chuàng)建,即在引導(dǎo)軌跡上每隔很小的距離創(chuàng)建一個(gè)小球,因?yàn)樾∏虻木嚯x很近,在視覺(jué)效果上構(gòu)成了一條引導(dǎo)軌跡線。第二種方法為使用Unity3D游戲引擎中的線渲染器lineRenderer來(lái)動(dòng)態(tài)繪制引導(dǎo)軌跡線。
通過(guò)Sphere球體繪制引導(dǎo)軌跡線的方法,雖然在效果上可以實(shí)現(xiàn)目的,但是當(dāng)軌跡線較長(zhǎng)、間隔較小時(shí),需要?jiǎng)?chuàng)建很多的Sphere球體,無(wú)疑加重了CPU和GPU的負(fù)擔(dān),有可能導(dǎo)致游戲出現(xiàn)卡頓現(xiàn)象,最嚴(yán)重的可能會(huì)導(dǎo)致死機(jī)。
使用lineRenderer渲染器進(jìn)行繪制,在性能方面,Unity對(duì)該渲染器進(jìn)行了性能上的優(yōu)化,CPU和GPU的損耗很小,而且lineRenderer提供了很多繪制軌跡的方法,只需要將引導(dǎo)軌跡上的若干坐標(biāo)點(diǎn)坐標(biāo)和坐標(biāo)點(diǎn)個(gè)數(shù)作為參數(shù)傳遞給lineRenderer,就可以繪制出引導(dǎo)軌跡線。坐標(biāo)點(diǎn)坐標(biāo)(xj,yj)的計(jì)算公式如下:
(4)
(5)
(6)
其中,n為坐標(biāo)點(diǎn)個(gè)數(shù),θj為坐標(biāo)點(diǎn)對(duì)應(yīng)的圓心角,xa、ya為圖3中A點(diǎn)坐標(biāo),xc、yc為圖3中C點(diǎn)坐標(biāo),θi為圖3中動(dòng)作難度對(duì)應(yīng)的圓心角。
2.4坐標(biāo)轉(zhuǎn)換
游戲設(shè)計(jì)中使用Kinect體感器獲取人體25個(gè)關(guān)節(jié)點(diǎn)數(shù)據(jù),將這些數(shù)據(jù)直接傳遞給Unity場(chǎng)景中的物體實(shí)現(xiàn)運(yùn)動(dòng)同步。如果直接使用Kinect手部坐標(biāo)數(shù)據(jù)來(lái)控制Unity中的虛擬手部圖標(biāo)的運(yùn)動(dòng),由于Unity中的長(zhǎng)度比例和Kinect不一致,導(dǎo)致運(yùn)動(dòng)效果不明顯。而且Kinect獲取的坐標(biāo)數(shù)據(jù)所在的平面與游戲界面不屬于同一個(gè)平面, 有可能導(dǎo)致虛擬手部圖標(biāo)不在攝像機(jī)視角范圍內(nèi),無(wú)法正常顯示等問(wèn)題。
在系統(tǒng)設(shè)計(jì)過(guò)程中,為了解決上述問(wèn)題,使用移動(dòng)矢量來(lái)控制虛擬手部圖標(biāo)移動(dòng)。圖4為控制原理圖。Kinect數(shù)據(jù)直接傳遞給Unity中物體,形成與實(shí)際運(yùn)動(dòng)同步的虛擬人物。A點(diǎn)代表虛擬人物肩部,坐標(biāo)為(xA,yA,zA),B點(diǎn)代表虛擬人物手部,坐標(biāo)為(xB,yB,zB),從而計(jì)算出虛擬人物的手臂長(zhǎng)度lAB:
(7)
D點(diǎn)為屏幕中參考點(diǎn),坐標(biāo)為(xD,yD,zD),C點(diǎn)為屏幕中虛擬手部圖標(biāo),坐標(biāo)為(xC,yC,zC),從而計(jì)算出屏幕中C、D兩點(diǎn)間的距離,可以想象成屏幕中虛擬手臂,其長(zhǎng)度為lCD:
(8)
(9)
lBB′=(xB-xB′,yB-yB′,zB-zB′)
(10)
(11)
(12)
圖4 控制原理圖
3.1流程測(cè)試
進(jìn)入游戲,首先進(jìn)入菜單選擇界面,可進(jìn)行訓(xùn)練手部設(shè)置、動(dòng)作難度設(shè)置,點(diǎn)擊開(kāi)始按鈕,進(jìn)入標(biāo)定界面。進(jìn)入標(biāo)定界面,根據(jù)標(biāo)定提示語(yǔ)調(diào)整到最佳游戲位置,游戲開(kāi)始,進(jìn)入游戲界面,用戶(hù)根據(jù)引導(dǎo)軌跡線移動(dòng)手部,碰到敵人或者規(guī)定時(shí)間內(nèi)未完成,跳轉(zhuǎn)到下一個(gè)游戲界面,動(dòng)作執(zhí)行完畢后,跳轉(zhuǎn)到得分界面。在得分界面中,顯示四個(gè)動(dòng)作得分情況,最后跳轉(zhuǎn)回菜單界面。測(cè)試流程如圖5所示。測(cè)試表明,游戲能夠?qū)崿F(xiàn)所有功能,實(shí)時(shí)性和交互性較好。
圖5 流程圖
3.2可用性測(cè)試
本游戲選取了不同年齡階段不同健康狀況的用戶(hù)試玩游戲,最終測(cè)試者給出了下列幾點(diǎn)建議:第一,玩家在游戲過(guò)程中,位置不能發(fā)生改變,缺乏靈活性;第二,玩家在進(jìn)行游戲過(guò)程中,引導(dǎo)軌跡線沒(méi)有動(dòng)態(tài)效果,引導(dǎo)性較差;第三,年齡較大的用戶(hù)、患有肩部疾病的用戶(hù)很難完成游戲,難度等級(jí)需要調(diào)整;第四,虛擬手部圖標(biāo)可替換成玩家摳圖的形式,這樣參與感更強(qiáng)。
本文利用Kinect傳感器和Unity游戲引擎技術(shù),設(shè)計(jì)出一款用于康復(fù)訓(xùn)練的游戲系統(tǒng)。利用Kinect體感器獲取人體關(guān)節(jié)點(diǎn)的實(shí)時(shí)數(shù)據(jù),記錄患者的實(shí)時(shí)動(dòng)作。利用Unity游戲引擎設(shè)計(jì)出菜單界面、標(biāo)定界面、游戲界面和得分界面,將每個(gè)模塊實(shí)現(xiàn)界面化,患者可以更好、更方便地選擇出最合適自己難度的康復(fù)訓(xùn)練。同時(shí),在游戲執(zhí)行畫(huà)面中設(shè)置了軌跡提示、敵人不同狀態(tài)的動(dòng)畫(huà)效果,很好地增強(qiáng)了游戲的趣味性,讓患者更好地沉浸于游戲中,達(dá)到“快樂(lè)的游戲,快樂(lè)的康復(fù)”。
[1] RIZZO A, KIM G.A SWOT analysis of the field of VR rehabilitation andtherapy[J]. Tele-operators and Virtual Environments, 2005,14(2):119-146.
[2] 丁晨,王君譯,瞿暢,等.Kinect體感交互技術(shù)及其在醫(yī)療康復(fù)領(lǐng)域的應(yīng)用[J].中國(guó)康復(fù)理論與實(shí)踐,2013,19(2):136-138.
[3] 王宏圖.虛擬現(xiàn)實(shí)技術(shù)在腦卒中運(yùn)動(dòng)康復(fù)中的應(yīng)用現(xiàn)狀[J]. 中國(guó)康復(fù)理論與實(shí)踐, 2014, 20(10):911-915.
[4] 何曉鵬.基于Kinect的人機(jī)體感交互關(guān)鍵技術(shù)研究[D].廈門(mén):廈門(mén)大學(xué),2013.
[5] 周柳,王英華,劉強(qiáng),等.虛擬現(xiàn)實(shí)技術(shù)在運(yùn)動(dòng)康復(fù)中的應(yīng)用[J].中國(guó)組織工程研究與臨床康復(fù),2007,11(5):957-960.
[6] TAYLOR MJ, MCCORMICK D, SHAWIS T, et al. Activity promoting gaming systems in exercise and rehabilitation[J]. Journal of Rehabilitation Research amp; Development, 2011,48(10): 1171- 1186.
[7] 王靜,馬景全,陳長(zhǎng)香.體感游戲Kinect改善腦卒中患者執(zhí)行功能的效果研究[J].中國(guó)康復(fù)醫(yī)學(xué)雜志,2014,29(8):748-751.
[8] WANN J P, TURNBULL J D. Motor skill learning in cerebral palsy:movement, action and computer-enhanced therapy[J]. Baillieres Clin Neurol, 1993, 2(1):15-28.
[9] CHANG Y J, Chen Shufang, Huang Junda. A Kinect-based system for physical rehabilitation: a pilot study for young adults with motor disabilities[J]. Research in Developmental Disabilities, 2011, 32(6): 2566-2570.
[10] WACHS J P, KOLSCH M, STERN H,et al. Vision based hand gesture application[J]. Communications of the ACM,2011,54(2): 60-71.
[11] KENN H, MEGEN F V, SUGAR R. A glove-based gesture interface for wearable computing applications[C]. Applied Wearable Computing(IFAWC),2007:1-10.
[12] 張毅,張爍,羅元,等. Kinect 深度圖像信息的手勢(shì)軌跡識(shí)別及應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2012,29(9):3547-3550.
[13] 鄒曙光. 基于GSM網(wǎng)絡(luò)的無(wú)線顯示系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(17):34-36.
[14] 張海程,李效偉,郭瑋瑋,等.基于Unity3D的三維頁(yè)游的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(5):53-55.
2017-04-27)
李世杰(1992-),男,碩士研究生,主要研究方向:Unity3D體感游戲設(shè)計(jì)與研發(fā)。
夏斌(1975-),通信作者,男,博士,副教授,碩士生導(dǎo)師,主要研究方向:腦-機(jī)接口、云計(jì)算及人工智能。E-mail:binxia@shmtu.edu.cn。
Design of a motion rehabilitation game system based on the Kinect
Li Shijie, Xia Bin
(College of Information Engineering, Shanghai Maritime University, Shanghai 201306, China)
Traditional rehabilitation training has significant limitations, because the physical therapist and equipment is finite, training field is finite and the training has poor entertainment. The paper sets up a motion rehabilitation game system based on Kinect and Unity3D, and the major contributions are as below: a virtual human has the same action which the people have, the guidance trajectory achieves motion guidance ripping, using the cartoon destination calculation achieves the levels of game difficulty, and so forth. Test results show that this system has good real-time, reciprocity and entertainment. The system has a good reference value for similar development of the rehabilitation game.
gesture-based interactive technique; Unity3D; Kinect; medical rehabilitation
TP302
A
10.19358/j.issn.1674- 7720.2017.22.025
李世杰,夏斌.基于Kinect的體感康復(fù)游戲系統(tǒng)設(shè)計(jì)J.微型機(jī)與應(yīng)用,2017,36(22):95-98.
國(guó)家自然科學(xué)基金(61550110252);上海海事大學(xué)基金;同濟(jì)大學(xué)嵌入式系統(tǒng)與服務(wù)計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室開(kāi)放課題資助