1. 引言
传统游戏中,人们都通过键盘、鼠标、触摸屏以及手柄游历于游戏世界,弊端是人和游戏交流的肢体仅限于手,长此以往,对人们身心健康无益,特别是对青少年,《中国学校卫生》指出沉溺于上网、玩游戏、看电视等不良生活习惯大大减少了学生身体活动量,占用时间与肥胖呈正相关关系 [1],而体感技术的诞生恰恰改变了这一点,其融合了电子游戏和运动健身,十分适合人们,尤其是青少年改变生活习惯、提高健身意识。而目前对于体感游戏的研究多聚焦于特殊疾病的恢复、改善训练,如对帕金森病患者认知、步态的影响 [2]、自闭症儿童行为康复训练 [3] 等。此类体感游戏由于用于专业性较强的领域,不需要具备极高的趣味性来吸引用户持续使用,而市面上流通的部分体感游戏又不具备合理的运动时间和强度安排无法达到最好的健身运动效果。本文致力于将趣味性和合理的健身运动安排作为首要研究问题,基于Kinect动作识别技术、U3D (Unity3D游戏引擎)和Maya实现了一个包含多关卡、多场景、多玩法的健身闯关体感游戏。主要内容包括:
游戏设计:游戏设计分为动作设计和场景设计两个部分。广泛浏览热门健身网站,以高强度间歇训练(high-intensity interval training, HI-IT,是WHO和美国运动医学会(ACSM)推荐的一种有效提高身体机能的运动方式 [4] )的理论为基础,筛选了六个健身动作,合理安排其顺序和时间,保证其高效性和合理性。场景设计参考了美国芝加哥大学的匈牙利裔美籍心理学家、教授Mihaly Csikszentmihalyi于1975年在其著作Beyond Boredom and Anxiety (超越乏味与焦虑) [5] 中提出的挑战与技能平衡、行动与意识融合、专注当下任务、明确的反馈等沉浸体验模型特征,以荒野逃生为主线,为每个动作匹配了契合度极高的场景任务,以紧张氛围、丰富的任务、明确的目标来提高用户沉浸感从而忽略运动带来的疲乏感。
虚拟游戏场景搭建:利用Autodesk Maya创建三维模型、游戏角色、动画,利用U3D游戏引擎搭建地形,实现三维虚拟场景。
体感动作定义与识别:基于Kinect获取的骨骼关节点数据、关键动作特征,定义交互动作,并在游戏过程中识别玩家动作,实现对游戏的操控。
体感游戏实现:设计基于动作识别的游戏关卡,开发具有良好体验的体感交互游戏。
本文中的体感技术是指利用Kinect设备获取的人体骨骼节点数据,识别人体动作,进而实现自然语言交互的过程。
体感技术,全称为体感交互技术,是基于体感信息处理,由机器对用户的语音、动作等进行识别和解析,并做出反馈的一种人机交互技术 [6]。2010年随着体感外设KINECT的推出,掀起了第三次游戏革命——“体感游戏”。体感游戏(SomaticGame)是一种能够促使人类本能思维引导肢体反映操作的游戏,它是视觉与本体感觉和动作控制,以娱乐学习为主要目标的器官运动,包含了人类器官与肢体运动的高度参与 [7]。
各种采用Kinect设备开发的软件及应用快速进入各行各业,其主要利用Kinect可以摆脱鼠标键盘控制的优势,实现快速与计算机沟通,减少了沟通障碍,而Kinect的应用也遍及各个领域,主要包括游戏领域、教育领域和医疗领域等 [8]。在教育领域,可穿戴技术、增强现实技术以及虚拟现实技术都被视为教育领域的重要技术,它们将在未来的1~5年中,影响并促进教育的变革 [9]。微软公司发布的AvatarKinect是一款帮助小学生克服阅读障碍,顺利进行阅读学习的教学游戏,学生在为虚拟人“Avatar”配音的同时,同步学生的肢体动作以及面部表情,让学生在游戏和娱乐提升语文阅读能力 [10]。在医疗领域,郑传钦 [7] 开发的基于Kinect的颈部康复训练系统,可以帮助颈部受伤患者在社区家庭环境中有效地进行康复训练。Rosenberg等 [11] 研究发现体感游戏对亚综合抑郁患者改善作用明显。在商业领域,很多的大型活动都在使用体感交互游戏,2019年北京世界园艺博览会“光影森林”展区的光影墙,用户站在大屏幕前就能够产生一个由花瓣组成的身体,虚拟的身体会随着用户的移动而移动,每天晚上这个展区都有许多前来体验的游客,备受欢迎 [12]。Kinect还应用在机器人领域,充当机器人的眼镜,匹兹堡大学一研究小组使用Kinect传感器,让机器人和人们一起玩抛球游戏,完成接球和抛球的动作 [13]。在其他领域,Kinect还用于行为检测、动画生成、三维重建技术等等,拥有很好的应用前景 [14]。
2. 体感技术
2.1. 动作识别技术
基于Kinect的动作识别技术,主要利用Kinect获取的骨骼节点位置信息,计算与目标动作关联度高的节点间距离与节点间向量夹角及其变化趋势,然后与预定义的动作进行匹配、识别。
根据日常健身知识和本文设计的游戏场景,共定义5个动作,包括:跑、跳、俄罗斯转体、高抬腿(爬楼)、平面支撑。动作识别的特征信息包括关键骨骼点的位置、骨骼点距离、骨骼点向量夹角,不同动作依赖信息有所差异,但定义和识别过程相同,下面以跑步动作为例说明定义、识别过程。
2.1.1. 动作定义
动作由一系列连续的姿势形成,跑步动作如图一所示(按图1的形式,替换为下方四个姿势的序列图像),一个完整的跑步动作定义由四个关键姿势组成,由图1可知姿势一的特征信息:左脚抬起、左臂后摆、右脚踏定、右臂前移,关键特征包括:左膝盖、左脚踝向量与左膝盖与左髋向量夹角变化,左、右肘位置变化。骨骼节点的位置信息可以通过Kinect获得,如图2所示左脚位置
,左膝位置
,左髋位置
,左膝和左脚形成的向量
,左膝与左髋形成的向量
,向量a和向量b的夹角为
,则其计算方法如公式1,2,3所示,
(1)
(2)
(3)
![](//html.hanspub.org/file/5-2690475x18_hanspub.png)
Figure 1. Running key posture sequence
图1. 跑步动作关键姿势序列
![](//html.hanspub.org/file/5-2690475x19_hanspub.png)
Figure 2. Characteristic bone point coordinates
图2. 特征骨骼点坐标
跑步动作的姿势序列向量夹角特征信息的变化如图3(a)所示,左肘关节z向位置变化趋势如图3(b)所示。
![](//html.hanspub.org/file/5-2690475x20_hanspub.png)
Figure 3. (a) The trend of the Angle between the eigenvectors; (b) Trend of left elbow joint position information
图3. (a) 特征向量夹角变化趋势;(b) 左肘关节位置信息变化趋势
根据动作的姿势序列特征信息的变化趋势定义动作,以供捕获的骨骼序列帧匹配。
2.1.2. 动作识别
基于Kinect的动作识别主要采用Kinect的骨骼数据信息序列帧,计算特征信息及其变化趋势,用来与预定义标准姿势进行匹配、识别。由于每个人的体型与所处位置的不同,在对人体标准姿势以及模仿姿势进行识别之前,还需借助齐次坐标系统将三维笛卡尔坐标系中的人体骨骼关节点进行几何转换。三维笛卡尔坐标系中的人体骨骼关节点在经过这种归一化处理之后,将会使原本不同身体比例的姿势骨架具备一致性。动作识别算法流程如图4:
![](//html.hanspub.org/file/5-2690475x21_hanspub.png)
Figure 4. The flow of motion recognition algorithm
图4. 动作识别算法流程
3. 体感游戏的设计与实现
本文对设计实现了一款多场景的体感交互游戏,游戏场景中的主要模型、角色及其骨骼利用Autodesk Maya制作完成,利用U3D完成对游戏的制作。
Unity3d系统预定义了角色的关键骨骼点枚举类型,通过将模型Animation Type设置为“Humanoid”,并将Avatar Definition设置为“Create from this model”,获取模型的骨骼点信息,通过进一步配置,将模型骨骼点与Unity3d系统预定义的骨骼点进行匹配,值得注意的一点是模型的初始姿势必须是“T-Pose”,它是Kinect骨骼点朝向的起始姿势。在骨骼进行正确匹配后,通过动画系统实现对模型的控制,并获得与动作相关的关键骨骼点位置及特征向量,从而利用第一部分描述的动作识别技术实现动作的识别。
3.1. 游戏流程
玩家启动游戏,进入开始场景,选择帮助按钮可以预览游戏关卡和动作设计,选择开始按钮玩家进入游戏。按要求完成游戏后,游戏将根据玩家完成的时间和动作准确率评测分数,整个游戏功能如图5所示。
3.2. 故事情节
游戏主角(“Angel”)初始在森林场景中(对应场景一),通过慢跑穿越森林进入峡谷(对应场景二),在峡谷中Angel需要通过快跑、跳跃躲避上方落下的巨石,通过峡谷后,Angel来到海边(对应场景三),划船穿过海面后,上岸来到小镇(对应场景四)通过慢跑穿越小镇,紧接着来到草原(对应场景五),同样慢跑通过后来到冰原(对应场景六),以支撑平移的动作通过后来到山谷,登上阶梯,成功完成游戏。
3.3. 游戏过程
在每个独立场景中,玩家都需要根据左上方提示框提示的动作完成相应2动作,若动作标准则能成功识别,此时游戏主人公会完成与用户相同的动作,并在虚拟场景进行移动。到达终点后会自动触发下一场景,游戏流程如图6所示。
3.4. 关卡设计
游戏共六个关卡。
3.4.1. 第一关卡——森林
此关卡的场景设定为森林(如图)。进入场景,玩家需要根据左上角的动作提示(如图7)完成连续的跑步动作,检测动作正确后,游戏主人公也完成同样的跑步动作,并在游戏场景中前进。根据设定,用户需要跑步运动直到到达第一关卡的终点,终点设定为一个断崖,此时将自动触发跳跃断崖的动画。
作为游戏的第一个关卡,玩家通过跑步达到热身的目的,以此预防肌肉、肌腱韧带的伤害。
3.4.2. 第二关卡——峡谷
此关卡的场景设定为峡谷(如图8)。首先玩家需要完成跑步动作令游戏主人公在场景中前进,路过一处山谷时,玩家需要“跳跃”躲避山谷滚落的巨石,完成躲避巨石的任务后玩家继续跑步前进,来到海边,此为第二关卡的终点,这时会触发登上船的动画。
此关卡在跑步基础上增加了躲避滚石的部分,以此制造紧张感,同时提高了游戏的可玩性和沉浸感。
2.4.3. 第三关卡——海边
此关卡的设定为海面(如图9),在关卡中游戏主人公坐在船中,玩家需要完成连续的类似于划船的转体的动作,检测正确后,船向岸边行驶,到达岸边后会触发上岸的动画来作为与下个关卡的衔接。
此动作可以很好的训练玩家腹直肌和腹外斜肌,属于低强度无氧运动,且能很好的与场景融合,增加趣味性。
3.4.4. 第四关卡——草原 + 小镇
此关卡的设定为草原(如图10(a))和小镇(如图10(b))。玩家需要完成慢跑和躲避行人的动作。经过前一段有氧和无氧结合运动,玩家已经消耗一定的体力,此关卡用于玩家恢复体力,同时场景中增加了许多行走的行人、动物等,作为视觉停留点,可以分散玩家一定的注意力,更好地起到放松、平复心率的功能,低强度的运动使玩家恢复体力。
![](//html.hanspub.org/file/5-2690475x27_hanspub.png)
Figure 10. (a) Grassland scene; (b) Small town scene
图10. (a) 草原场景;(b) 小镇场景
3.4.5. 第五关卡——冰原
此关卡设定为冰原(如图11),游戏主人公面对薄弱冰面即将开裂的危险,必须选择四肢着地分散对冰面的压力,此时玩家需要完成支撑平移动作,正确检测此动作后,游戏主人公会以同样的动作向岸边移动,到达岸边,此关卡到达终点。
此动作可以很好的训练玩家的腹横肌,加之冰面破碎的音效,增加游戏的氛围感,提高玩家紧张度。
3.4.6. 第六关卡——山谷
此关卡设定为山谷(如图12)。为了到达山谷顶端,游戏主人公需要登上通往山顶的一段台阶。游戏主人公登台阶的动作对应玩家的高抬腿动作。玩家根据提示完成高抬腿的动作,正确检测后,游戏主人公会完成登楼梯的动作。作为最后一个运动动作,高抬腿很好的提高了玩家心率,使得后续能够有一定的持续燃脂效果,同时也是游戏难度的一个提升。
3.5. 结论与展望
国务院总理李克强2020年9月23日主持召开国务院常务会议,会议提出将推进“互联网+健身”,丰富线上线下结合的全民体育活动,支持线上运动平台发展 [15]。本文积极响应号召,在认真研究了健身运动理论后,筛选了六个推广性高、效果突出的健身动作,设计实现了七个虚拟运动场景,将运动健身和虚拟游戏相结合,兼顾了真实的临场感和健身的科学性,将枯燥的健身运动与妙趣横生的体感游戏相结合,既刺激了用户运动的欲望,也突破了传统游戏交互的局限。
目前此款游戏仅有单机模式,下一步希望增加联机模式,玩家可与其他玩家进行远程互动和比赛,建立运动分享社区,增添游戏的趣味性,提升游戏体验,使其成为首个“体感游戏娱乐健身社交分享”平台,真正做到互联网 + 健身。