Unity3D中的Kinect主角位置检测与体感交互

催化剂12.1Unity3D中的Kinect主角位置检测与体感交互
陈鹏艳;王洪源;陈慕羿
【摘 要】Kinect combined with Unity3D will take players into three-dimensional virtual scene and control game through their body.According to the principle of the skeleton tracking,the user′s skeleton is tracked in real-time by using Kinect SDK,which obtains joint three-dimensional position records by Kinect to implement communication of hardware devices and Windows platform.Kinect Wrapper of CMU will implement data interaction between the Kinect SDK and Unity3D.Three-dimensional virtual scene is built in Unity3D when testing by using the ControllerV2 script in Kinect Wrapper,which controls the character models and determines user′s real-time three-dimensional position on Unity3D playform,and somatosensory interaction between Kinect and Unity could be extended for advanced human-computer interaction applications like virtual reality system and combat simulation training.%将Kinect与Unity3D联合,使玩家在三维虚拟场景里通过肢体控制游戏.根据Kinect的骨骼跟踪原理,对用户进行实时骨骼跟踪,利用Kinect SDK获取Kinect记录的关节点家谱管理系统
日盲紫外探测器
三维数据,实现硬件设备与Windows平台的连通.通过CMU的Kinect Wrapper实现Kinect SDK与Unity3D之间的数据交互.测试时,在Unity3D中建立三维虚拟场景,通过Kinect Wrapper中的KinectModelControllerV2脚本对场景内的人物模型进行控制,并在Unity3D平台上实时确定用户的三维位置信息,完成Kinect与Unity3D的体感交互,可以扩展应用于高级人机交互应用,如虚拟现实系统、作战模拟训练等方面.
【期刊名称】《沈阳理工大学学报》
【年(卷),期】2017(036)002
【总页数】5页(P17-21)
【关键词】Kinect;Unity3D;位置检测;体感交互
【作 者】陈鹏艳;王洪源;陈慕羿
【作者单位】沈阳理工大学 信息科学与工程学院,沈阳 110159;沈阳理工大学 信息科学与工程学院,沈阳 110159;沈阳理工大学 信息科学与工程学院,沈阳 110159引出线
【正文语种】中 文
【中图分类】TP391
Unity3D(也称Unity)是一款跨平台次世代游戏引擎,以其强大的跨平台特性,独特的技术优势与绚丽的3D渲染效果而闻名出众[1],其人机交互主要依靠鼠标键盘进行,不具备检测玩家位置、肢体动作并用于交互的功能。
Kinect是微软公司于2009年6月发布的Xbox 360的体感周边外设,是功能强大的3D外接体感摄影机,被誉为第三代人机交互的划时代之作[2]。Kinect利用微软剑桥研究院研发的基于深度图像的人体骨骼追踪算法,不需要使用任何道具即可完成玩家整个动作的识别与捕捉,并能记录人体关节点的三维位置信息。
研究将Kinect与Unity联合,可以使用户身临其境地在三维虚拟场景里通过肢体或语言控制游戏,给体验者带来更真实的沉浸感。在Unity中建立3D虚拟场景,通过Kinect SDK 获取Kinect硬件采集到的原始数据,Kinect SDK NUI API对画面进行识别并对人体骨骼进行分类,获得20个人体骨骼关节点的三维坐标信息[3],利用CMU Kinect Wrapper for Unity3D
实现Unity与Kinect间的数据交互,人物模型控制及各关节点三维位置信息的实时跟踪。用户在Unity中三维位置信息的确定有利于满足高级游戏设计需求,并可以应用于虚拟现实系统、作战模拟训练系统中。
印花交联剂如图1所示,Kinect共有3个摄像头,中间为RGB摄像头,用来获取640×480的彩图像,每秒钟最多获取30帧[4];左侧为红外线发射器,右侧为红外线CMOS摄像机所构成的3D结构光深度感应器,两侧不对称地分布着麦克风阵列,采用四元线性麦克风阵列技术,底座配有传动马达。Kinect传感器设备提供三类原始数据信息,包括深度数据流、彩视频流、原始音频数据,整体可实现骨骼跟踪、影像识别、语音识别等功能[5]。
骨骼跟踪是Kinect“体感操作”的基础,Kinect的两个深度传感器会产生并接收随机分布的红外光线,通过Kinect Primesense芯片获取深度数据流,以计算出视场范围内每个像素的深度值,得到深度数据并从中提取出物体的主体和形状,与背景图像进行分割,根据这些信息对人体各部位进行分类匹配,从而获得人体关节点的三维坐标。Kinect对人体部位的分类可以通过对像素逐一判断来确定人体关节点,系统会根据“骨骼跟踪”的20个关节点来生成一幅骨架系统,准确评估人体实际位置。图2为Kinect记录的深度图像和彩图像,主要关节点连线组成的“火柴人”为Kinect识别的人体骨架系统。
骨骼位置信息的获取依赖于Kinect SDK的核心NUI API,Kinect SDK允许开发者借助微软Visual Studio 2010,利用C++或C#等语言开发相关应用,可以使Kinect在Windows平台释放无限潜能。Kinect SDK的设备驱动程序首先从硬件读取原始数据,包括图像数据、深度数据和音频数据,然后在NUI类库中进行计算,得到骨骼点位置,声源位置信息等,而Kinect应用则通过与NUI类库中的接口进行交互,来获取所需数据。目前,Kinect for Windows SDK中的骨骼API可以提供至多两位用户的位置信息,包括详细的姿势和骨骼点的三维坐标信息[6]。在SDK中每个骨骼点都采用Joint类型表示,每一帧的20个骨骼点组成基于Joint类型的集合,包括三个属性:
1)JointType 骨骼点的类型,是一种枚举类型,列举了20个骨骼点的特定名称,如“HEAD”表示头部骨骼点。
2)Position SkeletonPoint类型表示骨骼点的位置信息,是一个结构体,包含x、y、z三个数据成员,用以存储骨骼点的三维坐标。
3)TrackingState JointTrackingState类型也是一种枚举类型,表示该骨骼点的追踪状态。其中,Tracked表示正确捕捉到该骨骼点,NotTracked表示没有捕捉到骨骼点,Inferred表示
状态不确定[4]。
眼模
Unity是Unity Technologies提供的跨平台游戏开发工具和专业的游戏引擎,高效的开发模块,强大的渲染效果和可扩展能力,备受广大开发者青睐,便于实现实时游戏动画、三维虚拟场景、游戏逻辑设计等多元化游戏开发。Unity支持通用语言脚本,可在一个平台上开发,多平台发布,使用DirectX和OpenGL图形引擎,提供高度优化的图形渲染管道,并且内置物理引擎,模拟刚体、关节等物理效果。此外,Unity可兼容多种外部资源,可与3dsMax、Maya等程序协同工作。通过以上的功能特点,Kinect传感器可与Unity结合实现人体三维位置检测。由于Unity不直接支持Kinect SDK,因此本文利用CMU Kinect Wrapper for Unity3D实现Unity与Kinect间的数据交互。
Kinect Wrapper for Unity package是一个对Kinect与Unity非常实用的中间件,其中包含一些脚本和场景示例。如:KinectExample示例场景;KinectPrefab预制件;Kinect Model Controller V2脚本用于操纵模型骨骼,实现人物模型控制;KinectPointController是对应于KinectPointMan的骨骼控制器;Display Depth脚本用于获取深度图像;DisplayColor脚本用于获取RGB图像;Kinect Recorder用于记录用户动作,为Kinect模拟器(Emulator)产生
回放文件;KinetEmulator模拟Kinect设备,与KinectRecorder产生的回放文件一起工作;KinectSensor用于获取Kinect中的数据;DeviceOrEmulator用于设置使用Kinect物理设备或者模拟设备;SkeletonWrapper脚本用于抓取骨骼数据;DepthWrapper用于获取深度图像数据;KinectInterop用于从Microsoft Kinect SDK中获取数据[7]。为了便于实现Kinect与Unity交互时场景的切换,在场景中放入Kinect Prefab,使人物模型在切换场景时能正常使用。Kinect Prefab包含开发体感项目的必需脚本,但不包含控制模型所需的控制器。因此,要为人物模型添加角控制器KinectModelControllerV2脚本,并将Bip骨骼与人物模型在Untiy的Inspector外部变量中进行绑定,通过测试,人物模型能非常相似地模仿出用户动作。

本文发布于:2024-09-22 08:23:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/142208.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:骨骼   位置   数据   深度   进行   人体   游戏   用于
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议