李世杰,夏 斌
(上海海事大学 信息工程学院,上海 201306)
基于Kinect的体感康复游戏系统设计*
李世杰,夏 斌
(上海海事大学 信息工程学院,上海201306)
传统的康复训练因理疗师和设备紧缺、训练场地有限、娱乐性差等问题,存在着很大的局限性。构建了基于Kinect与Unity3D的体感康复游戏系统,主要特色包括:虚拟人物与玩家运动同步;通过引导轨迹实现运行引导反馈、卡通目标点设定算法实现游戏的不同难度等。测试结果表明,系统具有很好的实时性、交互性和娱乐性,对类似体感游戏开发有较好的参考价值。
体感交互技术;Unity3D;Kinect;医疗康复
近年来,运动能力问题成为了人们关注的焦点,越来越多的人群需要进行康复训练。研究表明,科学的康复训练可使患者的机体功能得到最大限度的恢复,提高患者生活自理、工作和学习能力[1]。经过几十年的实践,康复医学对运动功能障碍的疗效已获得广泛的肯定,特别是康复训练的介入,能有效地增强对肢体的控制力[2-3]。
但是,传统康复训练必须在限定的康复场所,而且医师在旁进行指导才能进行,有很大的局限性,整个康复训练过程比较单调、缺乏趣味性。随着科技的发展,新型人机交互技术步入人们的视线,越来越多的人使用该技术进行体感康复训练[4-5],TAYLOR M J等人率先证实Kinect技术在康复领域的可行性[6-7],随后,WANN J P[9]等提出了可视化虚拟康复治疗。
上述表明,基于Kinect的康复训练系统可以用来进行肢体康复训练[9],但是目前的康复系统中动作设计复杂,难度不合适,设计形式缺乏趣味性。本研究充分考虑到传统康复训练系统的不合理性和单调性问题,使用易于携带的Kinect设备,结合Unity3D游戏引擎[10-11],将康复动作融入到游戏中,对游戏进行系统测试,设计出一款不受地点限制、操作简单、趣味性强、稳定性强的体感游戏康复训练系统[12]。
Kinect体感器设备共有3个摄像头,分别为RGB彩色摄像头、红外线发射器和红外线CMOS摄像头。通过红外线发射器发射出近红外线,红外线CMOS摄像机记录,对测量空间进行编码处理,得到3D深度图像。对3D深度图像进行再处理,获取到关键关节点上的三维坐标。在Unity3D与Kinect的连接方面,存在两种方式,一种是基于C++的头文件和静态链接库的方式,另一种是程序集的方式[13],这两种方式在Unity中不可以直接调用,但是在C#平台中提供与非托管程序的使用方式,导入动态链接库DLL文件,通过自定义数据结构和算法,能够实现对Kinect中获得的数据重新组织,在Unity[14]中使用,完成连接。
系统框架结构图如图1所示,包含两个部分,一是体感游戏康复系统开发,二是康复过程评估系统的研究。本文主要侧重于体感康复游戏开发部分,其中包括菜单界面、标定界面、游戏界面和得分界面。菜单界面主要用于配置游戏的参数,如:训练手部、动作难度的设置等。标定界面主要用于对人物位置的标定。患者在游戏界面中进行康复游戏训练。得分界面用于显示完成不同动作后的得分情况。在游戏设计过程中存在三个难点,包括游戏中人物标定、目标点设定、引导轨迹绘制等。
图1 系统框架结构图
2.1人物标定
由于现实中玩家与虚拟人物的坐标系不同,虚拟场景中的目标点位置设定需要根据虚拟人物的初始位置相应设定,因此需要进行人物标定。通过分析Kinect获取的人物骨骼数据,检测是否在Kinect的最佳范围之内。系统中是通过移动向量的方式来控制虚拟手部图标的移动,因此人物标定的另一个目的是确定人物执行游戏前所处的位置,以及提醒在游戏过程中要保持位置不发生移动。当人体偏离最佳位置时,游戏界面中会出现调整提示语,当处于最佳位置时,界面会出现保持当前位置,以提醒在游戏过程中,位置不发生移动,倒计时显示,游戏开始。
2.2目标点设定
目标点是指康复动作中,手臂运动完成最终所处的位置。系统中实现了四个康复训练动作,如图2所示,观察四个康复动作可以发现患者在做四个康复动作时,手部是围绕着对应的肩做圆周运动。游戏设计中每个动作有三个难度等级,即简单、一般、困难。
图2 康复动作
不同难度对应不同的目标点,鉴于此,通过设置圆心角的大小来改变动作难度等级。目标点的位置如图3所示,其中A点为参考坐标点,坐标表示为(xa,ya,za),B点即图中小猪所处的位置为目标点,坐标表示为(xb,yb,zb),C点为起始坐标点,坐标表示为(xc,yc,zc),游戏中的所有元素z值相等,所以在计算时采用二维坐标进行计算 ,θi代表不同难度等级下的圆心角,通过A、C点坐标和θi的值即可求出B点的坐标,完成目标点设定,公式如下
(1)
(2)
其中θi的大小通过康复动作完整角度θ获得,四个动作的完整角度θ大小如表1所示,因为每个动作有三种难度等级,所以i的取值为1、2、3,公式如下:
(3)
图3 目标点位置
(°)
2.3引导轨迹线绘制
引导轨迹指的是在游戏执行过程中,引导患者进行康复动作的标准轨迹线。在游戏设计中,考虑了两种制作引导轨迹线的方法,第一种方法为使用Sphere球体进行创建,即在引导轨迹上每隔很小的距离创建一个小球,因为小球的距离很近,在视觉效果上构成了一条引导轨迹线。第二种方法为使用Unity3D游戏引擎中的线渲染器lineRenderer来动态绘制引导轨迹线。
通过Sphere球体绘制引导轨迹线的方法,虽然在效果上可以实现目的,但是当轨迹线较长、间隔较小时,需要创建很多的Sphere球体,无疑加重了CPU和GPU的负担,有可能导致游戏出现卡顿现象,最严重的可能会导致死机。
使用lineRenderer渲染器进行绘制,在性能方面,Unity对该渲染器进行了性能上的优化,CPU和GPU的损耗很小,而且lineRenderer提供了很多绘制轨迹的方法,只需要将引导轨迹上的若干坐标点坐标和坐标点个数作为参数传递给lineRenderer,就可以绘制出引导轨迹线。坐标点坐标(xj,yj)的计算公式如下:
(4)
(5)
(6)
其中,n为坐标点个数,θj为坐标点对应的圆心角,xa、ya为图3中A点坐标,xc、yc为图3中C点坐标,θi为图3中动作难度对应的圆心角。
2.4坐标转换
游戏设计中使用Kinect体感器获取人体25个关节点数据,将这些数据直接传递给Unity场景中的物体实现运动同步。如果直接使用Kinect手部坐标数据来控制Unity中的虚拟手部图标的运动,由于Unity中的长度比例和Kinect不一致,导致运动效果不明显。而且Kinect获取的坐标数据所在的平面与游戏界面不属于同一个平面, 有可能导致虚拟手部图标不在摄像机视角范围内,无法正常显示等问题。
在系统设计过程中,为了解决上述问题,使用移动矢量来控制虚拟手部图标移动。图4为控制原理图。Kinect数据直接传递给Unity中物体,形成与实际运动同步的虚拟人物。A点代表虚拟人物肩部,坐标为(xA,yA,zA),B点代表虚拟人物手部,坐标为(xB,yB,zB),从而计算出虚拟人物的手臂长度lAB:
(7)
D点为屏幕中参考点,坐标为(xD,yD,zD),C点为屏幕中虚拟手部图标,坐标为(xC,yC,zC),从而计算出屏幕中C、D两点间的距离,可以想象成屏幕中虚拟手臂,其长度为lCD:
(8)
(9)
lBB′=(xB-xB′,yB-yB′,zB-zB′)
(10)
(11)
(12)
图4 控制原理图
3.1流程测试
进入游戏,首先进入菜单选择界面,可进行训练手部设置、动作难度设置,点击开始按钮,进入标定界面。进入标定界面,根据标定提示语调整到最佳游戏位置,游戏开始,进入游戏界面,用户根据引导轨迹线移动手部,碰到敌人或者规定时间内未完成,跳转到下一个游戏界面,动作执行完毕后,跳转到得分界面。在得分界面中,显示四个动作得分情况,最后跳转回菜单界面。测试流程如图5所示。测试表明,游戏能够实现所有功能,实时性和交互性较好。
图5 流程图
3.2可用性测试
本游戏选取了不同年龄阶段不同健康状况的用户试玩游戏,最终测试者给出了下列几点建议:第一,玩家在游戏过程中,位置不能发生改变,缺乏灵活性;第二,玩家在进行游戏过程中,引导轨迹线没有动态效果,引导性较差;第三,年龄较大的用户、患有肩部疾病的用户很难完成游戏,难度等级需要调整;第四,虚拟手部图标可替换成玩家抠图的形式,这样参与感更强。
本文利用Kinect传感器和Unity游戏引擎技术,设计出一款用于康复训练的游戏系统。利用Kinect体感器获取人体关节点的实时数据,记录患者的实时动作。利用Unity游戏引擎设计出菜单界面、标定界面、游戏界面和得分界面,将每个模块实现界面化,患者可以更好、更方便地选择出最合适自己难度的康复训练。同时,在游戏执行画面中设置了轨迹提示、敌人不同状态的动画效果,很好地增强了游戏的趣味性,让患者更好地沉浸于游戏中,达到“快乐的游戏,快乐的康复”。
[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体感交互技术及其在医疗康复领域的应用[J].中国康复理论与实践,2013,19(2):136-138.
[3] 王宏图.虚拟现实技术在脑卒中运动康复中的应用现状[J]. 中国康复理论与实践, 2014, 20(10):911-915.
[4] 何晓鹏.基于Kinect的人机体感交互关键技术研究[D].厦门:厦门大学,2013.
[5] 周柳,王英华,刘强,等.虚拟现实技术在运动康复中的应用[J].中国组织工程研究与临床康复,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] 王静,马景全,陈长香.体感游戏Kinect改善脑卒中患者执行功能的效果研究[J].中国康复医学杂志,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 深度图像信息的手势轨迹识别及应用[J].计算机应用研究,2012,29(9):3547-3550.
[13] 邹曙光. 基于GSM网络的无线显示系统设计[J].现代电子技术,2011,34(17):34-36.
[14] 张海程,李效伟,郭玮玮,等.基于Unity3D的三维页游的设计与实现[J].微型机与应用,2016,35(5):53-55.
2017-04-27)
李世杰(1992-),男,硕士研究生,主要研究方向:Unity3D体感游戏设计与研发。
夏斌(1975-),通信作者,男,博士,副教授,硕士生导师,主要研究方向:脑-机接口、云计算及人工智能。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的体感康复游戏系统设计J.微型机与应用,2017,36(22):95-98.
国家自然科学基金(61550110252);上海海事大学基金;同济大学嵌入式系统与服务计算教育部重点实验室开放课题资助