标题 | 浅谈一种基于Kinect的体感交互应用开发方法 |
范文 | 张永林 摘要:体感技术是人机交互的新方式,近年来倍受欢迎。该文结合Kinect技术和体感交互应用的开发经验,介绍了一种基于Kinect的体感交互应用开发方法。 关键词:Kinect;人机交互;新媒体;体感操作 中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2014)14-3369-03 Abstract: Motion-sensing technology is a new way of human-computer interaction, popular in recent years. This paper introduces a kind of development methods of Kinect-based Motion-sensing interactive application with Kinect technology and authors experiences. Key words: kinect;human-computer interaction;new media;motion-sensing control 长期以来,计算机人机交互的方式是采用鼠标键盘的输入,之后出现的语音识别技术和触摸屏技术,也为人机交互领域增光添彩。近年来体感技术的出现给人们增添了新的操控电子设备的方法,也为我们开发交互式应用扩展了新思路。该文介绍了Kinect体感技术,并结合体感应用程序开发经验提供了一个基于Kinect的体感交互应用开发方法,希望能够集思广益,让更多人的创意变成有趣并且有价值的应用。 1 体感技术与Kinect简介 1.1 体感技术 体感技术的出现意味着人机交互方式的革命性突破,体感技术的基础是动态捕捉,大多通过光学被动式和惯性运动测量混合的方式来记录动作。 1.2 Kinect技术 Kinect技术区别于其他体感技术的特点在于其控制是在人和设备不接触的情况下完成的,它能够感应全身运动并进行声音识别。 Kinect发射出具有高度随机性的激光散斑给空间打上结构光,从而标记整个空间。这些激光散斑会随着距离不同而变换图案,之后Kinect再通过景深摄像机捕捉这些光点,用相应处理器计算出整个空间的景深信息。 之后Kinect会自动从景深数据中抽离出人体骨骼,识别出人体的20个骨骼点,形成骨骼点数据。Kinect通过各个骨骼点的位置构建出使用者的骨架,进而判断使用者的动作和姿势,达到人机交互的目的。 2 一种基于Kinect的交互应用开发方法 本方法采用WPF程序架构。 2.1 前期准备阶段 程序开发与程序运行需要的硬件配置如下: 1)一台内存2G以上,CPU主频2.66Ghz以上的电脑; 2)支持Microsoft DirectX9.0c兼容的显卡; 3)Kinect for Windows Sensor(体感传感器)。 软件配置如下: 1)Windows 7或Windows 8操作系统; 2).NET Framework 4.0; 3)Visual Studio 2010 Express或以上版本的Visual Studio开发软件; 4)最新版本的Kinect for Windows SDK; 5)Adobe Photoshop; 6)Microsoft Expression Blend 4。 2.2 界面设计阶段 界面的设计工作使用Photoshop进行,将界面的每一部分用Photoshop布置好,图层要分离开(最好能给每个功能区域分组)。如果要在交互程序中使用动画效果,则要在psd文件中根据动画的设定加入相应的素材。例如你希望界面中的一个人物眨眼睛,则要把人物的眼皮画在一个单独的图层中,并覆盖在人物眼睛上方。 之后,我们使用Microsoft Expression Blend 4将psd文件直接转换为XAML表达式,它会自动将不同的图层分成不同的XAML结构图片,并分别赋予对应的名称。这样我们就可以在可视化界面编辑器中对界面进行进一步编辑,减少了设计师很大的工作量。 动画的设计也是在Blend中完成的,设计的方法类似于Flash动画的设计方法。可以使用关键帧动画,也可以使用逐帧动画让界面“动起来”,这会给予交互应用以无限的魅力。 2.3 程序设计阶段 2.3.1 数据处理 当界面设计的工作完成后,就进入了程序设计阶段。 在基于Kinect的交互应用开发中,基本数据架构如图1,我们基于这个架构调用并处理数据,使其更有利于交互应用开发者使用。 首先,Kinect传感器通过CMOS原件获得镜头前整个场景的景深数据。一台电脑可以驱动多台传感器,开发人员就可以用开发软件获取到每一台传感器传递过来的数据。 之后,开发人员要从传感器中提取出应用程序所需要的数据流(对于交互式应用程序来说,主要为骨骼点数据流)。利用骨骼点数据可以获取使用者每一处骨骼点在x,y,z轴上的位置,进而得知使用者现在的位置和姿势。 API获取到的骨骼点数据是没有经过加工的,范围在0~1之间,不适合运用在交互程序中,因此要对数据进行相应的放大。例如,下面的语句可以将骨骼点原始数据转换为与屏幕像素点对应的数据(纵坐标范围内): private static double ScaleY(Joint joint) {double y = ((SystemParameters.PrimaryScreenHeight / 0.4) * -joint.Position.Y) + (SystemParameters.PrimaryScreenHeight / 2); return y;} 2.3.2 数据绑定 WPF程序的特点在于开发过程中可以使用数据绑定(data binding)将界面中元件的属性与后台数据建立关联。利用这个特点,我们将界面中手势鼠标的位置属性与经过处理的骨骼点位置数据建立关联。经过关联后,我们就能以体感的方式实时控制手势鼠标的移动。例如下面的XAML代码就可以控制整个Grid的位置与用户某一只手的位置保持一致。
2.3.3 悬浮按钮 当我们控制了手势鼠标的移动后,还要实现手势鼠标的点击功能。方法是引入悬浮按钮的思想:用户将手势鼠标移入悬浮按钮一段时间后触发点击事件。换言之,悬浮按钮为手势鼠标的交互对象。当手势鼠标移入悬浮按钮后执行的代码如下: private void OnPreviewHandEnter(object sender, HandInputEventArgs args) {if (this.trackedHandHovers.FirstOrDefault(t => t.Hand.Equals(args.Hand)) == null) {this.IsHoveredOver = true; args.Hand.IsInteracting = true; var timer = new HandHoverTimer(DispatcherPriority.Normal, this.Dispatcher); timer.Hand = args.Hand; timer.Interval = TimeSpan.FromMilliseconds(Settings.Default.SelectionTime); timer.Tick += (o, s) => { this.InvokeHoverClick(args.Hand); }; this.trackedHandHovers.Add(timer); timer.Start();} args.Handled = true;} 3 体感交互应用实例 利用上述介绍的体感交互开发方法,程序开发者可以尽情发挥想象力,开发出许多新奇实用的应用。举两个我们研发过程中开发的应用为例: 《民族服饰虚拟试衣间》(如图2)的主要目标人群是对民族服饰文化有兴趣并希望获得试穿体验的用户。用户可以站在传感器前用双手隔空操控程序选择合适的衣服进行虚拟试穿,并可以保存照片并给予评价。 利用体感交互开发方法和骨骼点跟踪的技术,开发人员可以建立衣服图片坐标和用户骨骼点坐标的关联,使“衣服”紧贴在用户身上,创造了新的试衣方式。 《昆曲六百年体感交互式课件》(如图3)的目标是提供一个可以体感操控的昆曲教学应用程序。学生可以用自己的身体做遥控器,无需接触任何设备,从而增进了课程的趣味性。系统可以提供许多有关昆曲的数字多媒体信息,帮助学生更好的融入课堂氛围,吸引学生关注昆曲知识和昆曲文化,帮助增进学生对教学知识的理解,从而更好的实现学习目的。 4 Kinect技术当前存在的不足 在交互应用的开发中,用户体验的重要性无须多言。Kinect等体感技术将人们从单一的手柄中解放出来,是一大突破。但作为一款以红外感应为技术基础的设备,Kinect与其他类似设备一样存在许多不足。价格高、复杂度高、精度低、延迟高等是它面临的几大问题。价格的昂贵极大的限制了体感器的普及率,技术的复杂也给体感交互应用的开发带来了一定困难,30fps左右的体感采集速度只适用于一般的体感交互,对于一些动作游戏而言就会不尽人意。 5 结束语 对于交互应用而言,体感技术的出现是一个良好的开端,它拓展了开发者想象的空间,缩短了虚拟世界和现实世界的距离。将Kinect技术应用到交互应用中可以方便人们的生活,甚至创造新的生活方式。例如在手术室内的医生,由于无菌要求不方便亲自动手使用电脑,应用Kinect技术就可以解决这一问题;再如有一些公司将Kinect技术用于老人行动检测,体育教学等领域,带来了不少新意。总之,在体感交互方面还有许多未知等待我们去开发和探索,需要的是我们的智慧与创意。 参考文献: [1] 王康. 基于Kinect的体感交互式电子白板初探[J]. 中国现代教育装备,2012(06):29-30. [2] 邵隽,马娜. 浅谈基于Kinect的应用程序开发[J]. 计算机光盘软件与应用,2012(08):179+173. [3] 林填锋,杨洁霞. 基于kinect的人体识别技术的一些改进[J]. 电脑知识与技术,2012(21):5220-5223. [4] 张浩鹏. Kinect:人机交互新入口[J]. IT经理世界,2012(19):20. {double y = ((SystemParameters.PrimaryScreenHeight / 0.4) * -joint.Position.Y) + (SystemParameters.PrimaryScreenHeight / 2); return y;} 2.3.2 数据绑定 WPF程序的特点在于开发过程中可以使用数据绑定(data binding)将界面中元件的属性与后台数据建立关联。利用这个特点,我们将界面中手势鼠标的位置属性与经过处理的骨骼点位置数据建立关联。经过关联后,我们就能以体感的方式实时控制手势鼠标的移动。例如下面的XAML代码就可以控制整个Grid的位置与用户某一只手的位置保持一致。
2.3.3 悬浮按钮 当我们控制了手势鼠标的移动后,还要实现手势鼠标的点击功能。方法是引入悬浮按钮的思想:用户将手势鼠标移入悬浮按钮一段时间后触发点击事件。换言之,悬浮按钮为手势鼠标的交互对象。当手势鼠标移入悬浮按钮后执行的代码如下: private void OnPreviewHandEnter(object sender, HandInputEventArgs args) {if (this.trackedHandHovers.FirstOrDefault(t => t.Hand.Equals(args.Hand)) == null) {this.IsHoveredOver = true; args.Hand.IsInteracting = true; var timer = new HandHoverTimer(DispatcherPriority.Normal, this.Dispatcher); timer.Hand = args.Hand; timer.Interval = TimeSpan.FromMilliseconds(Settings.Default.SelectionTime); timer.Tick += (o, s) => { this.InvokeHoverClick(args.Hand); }; this.trackedHandHovers.Add(timer); timer.Start();} args.Handled = true;} 3 体感交互应用实例 利用上述介绍的体感交互开发方法,程序开发者可以尽情发挥想象力,开发出许多新奇实用的应用。举两个我们研发过程中开发的应用为例: 《民族服饰虚拟试衣间》(如图2)的主要目标人群是对民族服饰文化有兴趣并希望获得试穿体验的用户。用户可以站在传感器前用双手隔空操控程序选择合适的衣服进行虚拟试穿,并可以保存照片并给予评价。 利用体感交互开发方法和骨骼点跟踪的技术,开发人员可以建立衣服图片坐标和用户骨骼点坐标的关联,使“衣服”紧贴在用户身上,创造了新的试衣方式。 《昆曲六百年体感交互式课件》(如图3)的目标是提供一个可以体感操控的昆曲教学应用程序。学生可以用自己的身体做遥控器,无需接触任何设备,从而增进了课程的趣味性。系统可以提供许多有关昆曲的数字多媒体信息,帮助学生更好的融入课堂氛围,吸引学生关注昆曲知识和昆曲文化,帮助增进学生对教学知识的理解,从而更好的实现学习目的。 4 Kinect技术当前存在的不足 在交互应用的开发中,用户体验的重要性无须多言。Kinect等体感技术将人们从单一的手柄中解放出来,是一大突破。但作为一款以红外感应为技术基础的设备,Kinect与其他类似设备一样存在许多不足。价格高、复杂度高、精度低、延迟高等是它面临的几大问题。价格的昂贵极大的限制了体感器的普及率,技术的复杂也给体感交互应用的开发带来了一定困难,30fps左右的体感采集速度只适用于一般的体感交互,对于一些动作游戏而言就会不尽人意。 5 结束语 对于交互应用而言,体感技术的出现是一个良好的开端,它拓展了开发者想象的空间,缩短了虚拟世界和现实世界的距离。将Kinect技术应用到交互应用中可以方便人们的生活,甚至创造新的生活方式。例如在手术室内的医生,由于无菌要求不方便亲自动手使用电脑,应用Kinect技术就可以解决这一问题;再如有一些公司将Kinect技术用于老人行动检测,体育教学等领域,带来了不少新意。总之,在体感交互方面还有许多未知等待我们去开发和探索,需要的是我们的智慧与创意。 参考文献: [1] 王康. 基于Kinect的体感交互式电子白板初探[J]. 中国现代教育装备,2012(06):29-30. [2] 邵隽,马娜. 浅谈基于Kinect的应用程序开发[J]. 计算机光盘软件与应用,2012(08):179+173. [3] 林填锋,杨洁霞. 基于kinect的人体识别技术的一些改进[J]. 电脑知识与技术,2012(21):5220-5223. [4] 张浩鹏. Kinect:人机交互新入口[J]. IT经理世界,2012(19):20. {double y = ((SystemParameters.PrimaryScreenHeight / 0.4) * -joint.Position.Y) + (SystemParameters.PrimaryScreenHeight / 2); return y;} 2.3.2 数据绑定 WPF程序的特点在于开发过程中可以使用数据绑定(data binding)将界面中元件的属性与后台数据建立关联。利用这个特点,我们将界面中手势鼠标的位置属性与经过处理的骨骼点位置数据建立关联。经过关联后,我们就能以体感的方式实时控制手势鼠标的移动。例如下面的XAML代码就可以控制整个Grid的位置与用户某一只手的位置保持一致。
2.3.3 悬浮按钮 当我们控制了手势鼠标的移动后,还要实现手势鼠标的点击功能。方法是引入悬浮按钮的思想:用户将手势鼠标移入悬浮按钮一段时间后触发点击事件。换言之,悬浮按钮为手势鼠标的交互对象。当手势鼠标移入悬浮按钮后执行的代码如下: private void OnPreviewHandEnter(object sender, HandInputEventArgs args) {if (this.trackedHandHovers.FirstOrDefault(t => t.Hand.Equals(args.Hand)) == null) {this.IsHoveredOver = true; args.Hand.IsInteracting = true; var timer = new HandHoverTimer(DispatcherPriority.Normal, this.Dispatcher); timer.Hand = args.Hand; timer.Interval = TimeSpan.FromMilliseconds(Settings.Default.SelectionTime); timer.Tick += (o, s) => { this.InvokeHoverClick(args.Hand); }; this.trackedHandHovers.Add(timer); timer.Start();} args.Handled = true;} 3 体感交互应用实例 利用上述介绍的体感交互开发方法,程序开发者可以尽情发挥想象力,开发出许多新奇实用的应用。举两个我们研发过程中开发的应用为例: 《民族服饰虚拟试衣间》(如图2)的主要目标人群是对民族服饰文化有兴趣并希望获得试穿体验的用户。用户可以站在传感器前用双手隔空操控程序选择合适的衣服进行虚拟试穿,并可以保存照片并给予评价。 利用体感交互开发方法和骨骼点跟踪的技术,开发人员可以建立衣服图片坐标和用户骨骼点坐标的关联,使“衣服”紧贴在用户身上,创造了新的试衣方式。 《昆曲六百年体感交互式课件》(如图3)的目标是提供一个可以体感操控的昆曲教学应用程序。学生可以用自己的身体做遥控器,无需接触任何设备,从而增进了课程的趣味性。系统可以提供许多有关昆曲的数字多媒体信息,帮助学生更好的融入课堂氛围,吸引学生关注昆曲知识和昆曲文化,帮助增进学生对教学知识的理解,从而更好的实现学习目的。 4 Kinect技术当前存在的不足 在交互应用的开发中,用户体验的重要性无须多言。Kinect等体感技术将人们从单一的手柄中解放出来,是一大突破。但作为一款以红外感应为技术基础的设备,Kinect与其他类似设备一样存在许多不足。价格高、复杂度高、精度低、延迟高等是它面临的几大问题。价格的昂贵极大的限制了体感器的普及率,技术的复杂也给体感交互应用的开发带来了一定困难,30fps左右的体感采集速度只适用于一般的体感交互,对于一些动作游戏而言就会不尽人意。 5 结束语 对于交互应用而言,体感技术的出现是一个良好的开端,它拓展了开发者想象的空间,缩短了虚拟世界和现实世界的距离。将Kinect技术应用到交互应用中可以方便人们的生活,甚至创造新的生活方式。例如在手术室内的医生,由于无菌要求不方便亲自动手使用电脑,应用Kinect技术就可以解决这一问题;再如有一些公司将Kinect技术用于老人行动检测,体育教学等领域,带来了不少新意。总之,在体感交互方面还有许多未知等待我们去开发和探索,需要的是我们的智慧与创意。 参考文献: [1] 王康. 基于Kinect的体感交互式电子白板初探[J]. 中国现代教育装备,2012(06):29-30. [2] 邵隽,马娜. 浅谈基于Kinect的应用程序开发[J]. 计算机光盘软件与应用,2012(08):179+173. [3] 林填锋,杨洁霞. 基于kinect的人体识别技术的一些改进[J]. 电脑知识与技术,2012(21):5220-5223. [4] 张浩鹏. Kinect:人机交互新入口[J]. IT经理世界,2012(19):20. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。