基于Kinect的教育游戏的设计与实现*
2016-03-15田元龙艳
田 元 龙 艳
(华中师范大学教育信息技术学院 武汉 430079)
基于Kinect的教育游戏的设计与实现*
田元龙艳
(华中师范大学教育信息技术学院武汉430079)
摘要实现一个基于Kinect体感器的教育游戏系统。利用Kinect传感器获取3D深度图像数据,通过骨骼追踪技术处理这些数据,进而得到人体骨骼信息。通过各个骨骼点的空间坐标位置的运算,实现手势识别。实验结果表明该游戏能够用手势来操作,提高了儿童的参与感,并且能够帮助儿童识别图形和颜色、提高记忆力和反应力、学习数字计算、认识空间和时间。
关键词Kinect; 骨骼追踪; 教育游戏
Design and Implementation of Educational Game Based on Kinect
TIAN YuanLONG Yan
(College of Educational Information Technology, Central China Normal University, Wuhan430079)
AbstractAn educational game system based on Kinect sensor is implemented. Firstly, Kinect is used to capture the 3D depth image data. Then the data is processed using skeletal tracking technology to obtain the human skeleton information. The hand gesture is recognized by calculating the spatial coordinates of each bone point. The experimental results show that gestures can be used to operate the game to improve the child’s sense of participation, and the game can help children to identify shapes and colors, improve memory and reaction ability, learn digital computation, and understand space and time.
Key WordsKinect, skeleton tracking, educational game
Class NumberTP391
1引言
教育游戏是一种新型的教育资源,它以教育为目的,以游戏为手段,集知识性、趣味性于一体,是寓教于乐的完美体现。到目前为止,国内学术界对教育游戏的概念界定并没有一致的定义,有学者将其定义为:教育游戏是指以学习学科的基本知识为目的,可以用来辅助或者替代一般教学的游戏,能够使学生在游戏进行中学习或者巩固知识[1]。教育游戏虽然在国内是新生事物,但是它在国外教育中已经成为了一个重要的教育手段,在国内不久的将来也一定会成为一种重要的教育手段[2]。
目前大多数教育游戏都借助于鼠标和键盘来操作,虽然这些设备便宜且容易操作,但是它们并不能增加用户的参与感。Kinect体感交互技术的出现给教育游戏带来了革命性的改变。将Kinect体感交互技术与教育游戏相结合,增强了用户学习的兴趣,提高了用户的参与感。本研究利用Kinect体感交互技术开发一款教育游戏——点点乐,该游戏能帮助儿童识别图形和颜色、提高记忆力和反应力、学习数字计算、认识空间和时间,是一款辅助基础教育学习的游戏。
2Kinect简介
体感交互是自然交互中的一个重要方面[3],可以通过去除用户与计算机之间的硬件约束降低用户的认知负荷。体感交互起源于游戏行业,指用户通过身体运动和身体感受等方式完成人机交互[4]。体感交互技术的发展,体现了对人的因素的重视,标志着人机交互技术从人适应计算机向计算机不断适应人的方向发展。传统的人机交互技术构建的交互界面事实上成为隔离物质世界和信息世界的屏障。在体感交互技术的发展过程中,出现过任天堂的Wii和索尼的PS3,但它们都需要额外的控制器。2010年,微软公司推出了基于体感交互的Kinect硬件,Kinect向世人宣布:你就是遥控器(You are the controller)[5]。借助Kinect,用户不需要使用任何遥控器、摇杆、鼠标或者其他手柄,即用身体就可以直接操作机器。
Kinect拥有“三只眼”和“四只耳朵”。“三只眼”分别对应着红外投影机、彩色摄像头、红外摄像头;“四只耳朵”对应着四个麦克风。彩色摄像头提供了彩色图像;红外投影机发射红外线,由红外摄像头接收红外线,并提供深度数据。Kinect传感器可以同时获取RGB和深度图像数据,支持实时的全身骨骼跟踪,可以识别一系列动作[6]。骨骼跟踪系统最多同时侦测到6个交互者的精确位置,并同时辨识2个交互者的动作,每个交互可记录包含躯干、四肢以及手指等追踪范围的20组细节,实现全身体感交互操作[7]。Kinect的音频系统采用了四元线性麦克风阵列技术,因此,在捕获彩色数据、深度数据的同时,可以捕获声音信号。此外,Kinect的底座电动机可以控制Kinect的仰角,调整最佳姿态来适应用户的位置,确保用户全身肢体被覆盖。Kinect具有追焦功能,如果用户超出影像范围,底座电动机可以驱动Kinect垂直调整-28°~+28°。
3基于Kinect的教育游戏的设计
传统的教育游戏需要鼠标键盘等第三方工具来操作,对儿童来说,缺少参与感、操作过于复杂。体感游戏以自然用户行为操作游戏,是一种健康的游戏模式,有利于孩子在游戏过程中得到身体的运动,达到生理和心理的愉悦感[8]。教育游戏与Kinect体感交互技术的有效结合,使之具有以下两个优点: 1) 自然的人机交互方式,增加玩家的参与感; 2) 操作简单,易于掌握。Kinect价格实惠且易于购得,便于普及。利用Kinect开发的体感教育游戏,在设计过程中要注意如下几点:用户群、用户数目、肢体的运动强度和频率。本文设计的教育游戏把用户定位在4~7岁的学龄前儿童或低年级儿童,因而在设计游戏功能、界面、关卡等时,需要考虑到这一特殊的年龄段。
3.1功能设计
Kinect体感交互技术与教育游戏的结合,使其摆脱了鼠标键盘等第三方工具的束缚。用户在玩游戏时,不需要用户学习新的操作方法,只需要用肢体动作就能控制游戏的进行。本文设计的游戏不需要使用任何其它设备,用户通过手掌的移动和手势来控制游戏的进程。游戏分为两种,一种是识别颜色,另一种是识别图形。当Kinect识别到用户时,屏幕上的手掌随用户手掌的移动而移动,当手掌移动到“开始”按钮上,手掌向前推,游戏便开始;当手掌移动到游戏区域,点中某个物体时,该物体就从左边或者右边飞出界面;当手掌移动到关卡选择区,用户手握拳头上下移动,就能够上下滚动关卡级数,以便用户选择关卡级数。
3.2界面设计
由于该游戏用户定位在4~7岁的学龄前儿童或低年级儿童,因而在设计游戏界面时,应该选择儿童喜欢的卡通背景图。在文字设计上,应该尽量设计得易读性、明确性、适合性。在区域划分上,应尽量设计得合理。本文设计的游戏界面区域图如图1所示,区域1、3、7是隔离区,用户对该区域不能操作;区域2是游戏区,用户可以通过手掌点击物体,从而使物体从两边飞出界面;区域4是游戏信息区,显示游戏的要求和进程;区域5是控制游戏进程区,控制游戏的暂停和恢复;区域6是游戏关卡选择区,选择游戏的关卡等级;区域8是用户显示区,显示用户的深度图。图中的“*”号代表比例因子,界面的长与高的比例因子不同,一个方向上的比例因子是相同的。如区域1、区域2、区域4、区域6在长度上的比例是3∶6∶2∶1,在高度上的比例是15∶15∶6∶9,但区域2与区域4的高度并不相同,虽然都是6*,但“*”代表不同值。
图1 区域图
3.3关卡设计
本文设计教育游戏关卡时,要保证教育性与游戏性的有效结合。在教育游戏中,玩家既是游戏者又是学习者,游戏的目的是在游戏的同时能学习到知识。教育游戏的关卡设计须服从于教学目的,目前的教育游戏关卡的设计并没有固定的模式可以遵循,各种各样的形式都存在。我们在设计教育游戏关卡时可以遵循的一些原则有:首先,要确保关卡的设计能够充分的激励学习者(游戏者)的学习意愿;其次,设计关卡时要根据知识的不同类型设计不同的知识呈现方式;再次,在设计关卡时要准确定位游戏者的知识水平、年龄;最后,关卡难度的设计要有一个递进的过程,保证游戏者通过努力能过完成任务,产生乐趣和成就感。
在本文设计的教育游戏中,设置了这样一组关卡机制:必须通过第一关才可以闯第二关,以此类推,在通过第七关后,才能闯第八关,此时前面的关卡都解开,你可以选择任意你想玩的关卡级数。该教育游戏的关卡数据信息如表1、表2所示。从表中可以看出,各个关卡难度的设计是逐级递增的,要求游戏者通过更多的努力才能够过关。现对表中的数据做一个简要的介绍:T1:每隔T1s随机产生一个物体;T2:每个物体从产生到落下消失需要T2s;数据:在60s内理论上应该产生各个物体的个数(实际是不能产生不是整数的个数,这里只是数值上的表示)和所有物体的总个数和;目标:“+”表示点中一个物体加一分,“+n”表示在这一关中,必须至少点中n个该物体,“-”表示该物体是炸弹,点中该物体就减一分,“总数”表示通过这一关所需的分数。如在识别颜色的点点乐游戏中,第6关表示:在60s内,理论上可以产生120个小球,游戏规则:点中一个炸弹球(靛球)要扣一分,点中其余的球加一分,点中至少8个红球、8个蓝球,且总分要达到60min,只有满足这三个条件,才能过关。
表1 颜色识别游戏关卡数据信息
表2 图形识别游戏关卡数据信息
3.4实现流程
考虑到该游戏的用户群,因而在设计游戏的实现流程时,应尽量简单明了,流程图如图2所示。软件运行开始后,儿童站在离Kinect摄像头3~5m的位置,用肢体动作选择界面中的“颜色”或者“形状”按钮,进入颜色识别游戏或图形识别游戏,选择关卡级数,然后选择“开始”按钮,闯关开始。在游戏过程中,可以选择“暂停”、“恢复”按钮,控制游戏的进行。若在规定的时间内完成相应的任务,进入下一关,若没有完成相应的任务,继续闯这一关。随时可以选择“退出”按钮,退出游戏。
图2 实现流程图
4基于Kinect的教育游戏的实现
本文设计的游戏需要解决的关键技术包括:控件的自定义、物体的随机生成、骨骼跟踪、手势识别以及控件的响应。
4.1自定义控件
在本游戏的开发过程中,一个难点就是需要自定义按钮且可以被Kinect识别,而游戏是在WPF中开发的,为自定义控件提供了方便。所有的WPF控件都是无外观的,这意味着它们具有硬编码的功能,但是它们的外观是通过控件模板单独定义的[9],为我们自定义控件提供了思路。选择正确的基类进行继承,然后使用控件模板制作外观,具体步骤如下:
1) 添加类。添加一个KinectHoverButton新类,其继承于KinectButtonBase。在该类中,添加两个重要的函数:(1)private void OnHandPointerEnter (object sender, HandPointerEventArgs e){...},该函数模拟鼠标进入时,引发的事件。(2)public void OnHandPointerLeave(object sender, HandPointerEventArgs e){...},该函数模拟鼠标移出时,引发的事件。
2) 自定义外观。为了定义外观,需要将.NET名称空间映射到XAML名称空间,语法如:xmlns:local="clr-namespace:WpfApplication1"(KinectHoverButton类位于WpfApplication1命名空间中)。在这个窗口中,通过路径、样式、控件模板为其添加外观。路径Path绘制图案,可以绘制出任何想要的图案,控件模板ControlTemplate为按钮制定模板,样式Style将路径所绘制的图案、控件模板制定的模板以及一些其它属性设置应用到KinectHoverButton上(样式名为:KinectHoverButtonStyleStar1),这样就完成了自定义外观。
3) 使用控件。只需要使用KinectHoverButton kbtn = new KinectHoverButton();kbtn.Height=50;kbtn.Width=50;kbtn.Style=(Style)FindResource("KinectHoverButtonStyleStar1");便可以生成一个长50、宽50的KinectHoverButton类型的名kbtn按钮。之后就可以对kbtn按钮进行操作。
4.2物体随机生成
游戏中会随机出现各种物体,为了实现物体的随机出现,需要用到DispatcherTimer类,它是一种能够很好地用在WPF用户界面中的计时器,因为它是在用户界面线程中触发事件。通过设置一个合理的时间间隔,然后DispatcherTimer会在该时间间隔上引发一个周期性的Tick事件。在Tick事件中,可以动态生成一个个物体,并给该物体应用动画,让该物体从上而下的下落。也可以设置出现的某种物体的概率,这里s使用机函数Random(),例如在颜色识别的点点乐游戏中,用Random()函数,随机产生一个1~7的数字,若产生一个1,则产生一个红色球,若为2,就产生一个橙色球,以此类推,每个颜色球的产生概率都是1/7。若想让某种颜色的球出现的概率大,可以随机多产生一些数字,然后让某种颜色球多分几个数字,如随机产生数字1或者2时,都产生一个红色球,这样红色球出现的概率就大。
4.3骨骼跟踪及手势识别
Kinect工作时,首先由Kinect左侧的红外投影机向环境发射红外线,这束红外线具有很高的随机性,其在空间的任意两个不同的位置所反射形成的光斑都会不相同,因而可以对环境形成立体的光编码;然后通过右侧的红外摄像头来采集Kinect视野中的红外线图像;最后,使用这幅红外图像和Kinect的原始参数进行一系列的复杂计算,就可以得到具有3D深度图像的数据信息。根据3D深度图像信息即可得到人体骨骼信息[10]。Kinect for Windows SDK最多可以支持20个骨骼点,每个骨骼点位置在空间坐标中用X、Y、Z坐标系表示如图3所示,X、Y和Z轴表示深度传感器主轴。如HandLeft骨骼空间坐标系(X,Y,Z)可表示为:(JointType.HandLeft.Position.X,JointType.HandLeft.Position.Y,JointType.HandLeft.Position.Z)。此时需要将用户手掌坐标与屏幕坐标进行对应,通过Kinect SDK的核心类KinectSensor的MapSkeletonPointToColor()方法将骨骼跟踪坐标系转换为彩色图像坐标系,再用ScaleOut()方法将彩色图像坐标系转换为如图4所示的屏幕坐标系,这样,屏幕上的手掌就能根据用户手掌位置的移动而移动了。通过各个骨骼点的空间坐标位置的运算,可以设置手势识别。如手向前推的动作,只需要设置手的各个关节点在一定的时间内在Z轴坐标上的变化超过一定的距离即可。当Kinect捕获用户自定义的手势时,系统将做出相应的响应。
图3 20个骨骼点及坐标
图4 坐标转换
4.4控件响应
游戏中,当手掌在游戏区域时,移动到物体上,就能够立刻让该物体停止下落,并从左上边或者右上边飞出界面,实现方法如下:界面中的手掌移到物体上时,首先停止物体正在下落的动画并删除该动画,然后添加2个新动画,一个动画是让物体水平飞出界面,一个动画是让物体垂直向上飞出界面。当手掌移到关卡选择区时,Kinect识别到用户手握成拳头,并在Y轴方向上上下移动,就能够让系统做出相应的响应,可以上下浏览关卡级数。其它的控件,如“开始”、“退出”、关卡级数“3”等按钮,跟其它的普通按钮用法差不多,只是它们的响应过程是手掌移动到这些按钮上并且手在Z轴方向上向前推,这些按钮才会引发相应的响应,如选择“开始”按钮,能让游戏开始。
5游戏测试
本游戏的硬件开发环境为:PC和Kinect体感设备,软件的开发环境为:Windows7、Visual Studio 2010和Kinect for Windows SDK。
根据游戏功能设计,本游戏主要实现了用户通过肢体动作就能够与计算机进行交互,进而控制游戏的进程。测试选用一般的家用计算机,硬件环境为:双核,2.66GHz;2GB的RAM;显卡支持Microsoft DirectX 9.0c。在分辨率为1366*768、窗口最大化的情况下进行体感交互。在测试中,当儿童进入Kinect检测范围后,Kinect识别出儿童的手,屏幕上会出现一个手掌随儿童手的移动而移动。此时用户可以根据界面中的内容,来控制游戏的进行,如选择“颜色”按钮,将进入到识别颜色的点点乐教育游戏中,此时可以控制游戏的关卡级数、开始、退出等操作,对各个按钮的识别率达到100%。在游戏进行中,手掌移动到“开始”按钮上,如图5所示,手掌向前推,开始闯关;手掌移动到物体上,物体立刻向左或者向右飞出界面,如图6所示。在不同身形、不同性别的用户测试中,所有的用户都可以被系统成功检测。本文开发的教育游戏,无需用户触碰任何硬件,真正地实现了自然人机交互的方式。
图5 手掌向前推,游戏将开始
图6 手掌点到绿球上,绿球正飞出界面
6结语
基于Kinect体感交互技术的教育游戏,摆脱了鼠标和键盘的单一交互方式,以用户的手势来操作游戏,这种操作方式给用户带来了更多的便捷。实验证明,Kinect体感交互能为用户提供有效方便的交互手段,使儿童能够在娱乐的同时学习到相关知识。值得一提的是,该教育游戏只做了两种类型的识别:颜色识别和几何形状识别,可以将其扩展为更多的种类识别(如水果识别、动物识别、蔬菜识别等),只需要将一个个随机产生的自定义控件应用不同的外观就可以实现。
参 考 文 献
[1] 朱慧娟.教育游戏的国内发展现状及启示[J].远程教育杂志,2008,(6):29-31.
ZHU Huijuan. The Domestic Development Present Situation and Enlightenment of Educational Game[J]. Distance Education Journal,2008(6):29-31.
[2] 周伯华,曲玮婷.国内教育游戏存在的问题及对策研究[J].中国电化教育,2011,294:92-94.
ZHOU Bohua, QU Weiting. Existing Problems and Countermeasures Research of Educational Games in China[J]. China Educational Technology,2011,294:92-94.
[3] PANTIC M, PENTLAND A, NIJHOLT A, et al. Human computing and machine understanding of human behavior: a survey[C]//Proc. the 8th International Conference on Multimodal Interfaces.[S.1]: IEEE Press,2006:239-248.
[4] Saffer D. Designing For Interaction Creating Innovative Application and Devices[M]. 2nd ed. New Piders Press,2009.
[5] 余涛.Kinect应用开发实战:用最自然的方式与机器对话[M].北京:机械工业出版社,2013:21-22.
YU Tao. Kinect Application Development: with the most Natural Way to Dialogue with the Machine[M]. Beijing: China Machine Press,2013:21-22.
[6] Ikemura Sho, Fujiyoshi Hironobu. Real-Time Human Detection using Relational Depth Similarity Features[C/OL]//ACCV2010, Lecture Notes in Computer Science, 2011. [2012-12-06]http://www.vision.cs.chubu.ac.jp/04/pdf/PIA64.pdf.
[7] 姚强.从一部体感游戏开始,把家变作你的娱乐场[J].互联网天地,2012,(3):58-59.
YAO Qiang. From the Beginning of a Game, to Make Your Home Entertainment Field[J]. China Internet,2012,(3):58-59.
[8] 马建荣,章苏静,李凤.基于体感技术的亲子互动游戏设计与实现[J].中国电化教育,2012,308:85-88.
MA Jianrong, ZHANG Shujing, LI Feng. The Design and Implementation of Parent-child Interactive Games Based on the Technology of Body Feeling[J]. China Educational Technology,2012,308:85-88.
[9] 王德才.WPF编程宝典—C# 2010版[M].北京:清华大学出版社,2011:451-452.
WANG Deicai. WPF Programming Book — C# 2010 Edition[M]. Beijing: TsingHua University Press,2011:451-452.
[10] 吴国斌,李斌,阎骥洲.Kinect人机交互开发实践[M].北京:人民邮电出版社,2012:12-13.
WU Guobin, LI Bin, YAN Jizhou. Kinect human computer interactive development Practice[M]. Beijing: Posts & Telecom Press,2012:12-13.
中图分类号TP391
DOI:10.3969/j.issn.1672-9722.2016.02.044
作者简介:田元,女,博士,讲师,研究方向:增强现实,数字图像处理,计算机视觉。龙艳,女,硕士,研究方向:体感游戏。
*收稿日期:2015年8月15日,修回日期:2015年9月22日