一、Unity和Kinect交互的环境配置
我所使用的Unity3D的版本是Unity4.1,使用的Kinect SDK版本是SDK1.7,令Kinect和Unity交互的方法是使用CMU的封装,但是这个方法支持的Kinect SDK版本是SDK1.0,要想使用1.5及以上版本的Kinect SDK,就要做一些相应的修改。完整的方案如下:
1、安装Uinty3D
我使用的Unity3D版本是4.1,也可以在Unity3D官网上下载free版本的Unity。
2、安装Kinect SDK
我使用的SDK版本是1.7,可以在Kinect for Windows官方网站上下载。
3、安装Kinect Wrapper Package for Unity3D
这个就是CMU封装的用于Kinect开发的Unity3D导入包了。以后在Unity3D工程中,如果需要使用和Kinect交互,那么就需要在这个工程中导入这个包。点击这里下载KinectWrapperPackage。
4、运行示例工程
在CMU提供的KinectWrapperPackage包中,已经包含了一个叫做KinectExample.untiy的Unity示例工程。在工程中导入KinectWrapperPackage包之后,在Unity的project面板上找到Scences->KinectExample,双击就可以打开这个示例工程。
打开示例工程后,在Hierarchy面板中,可以看到这些内容:
5、修改导入包中的相关文件
CMU提供的Unity导入包支持的Kinect SDK版本是1.0,如果想使用其他版本的SDK,就要下载并替换导入包中的一些文件。具体来说就是KinectInterop.cs和KinectSensor.cs这两个文件。
点击这里下载适用于Kinect SDK1.7版本的替换文件。
下载完成之后,将下载之后的文件替换掉上面面板中所标识的这两个文件就可以了。然后就可以运行示例工程,体验在Unity创建的场景中使用Kinect控制人物模型及小球的运动。
二、用于Kinect开发的包中包含的资源
用于Kinect开发的包中(Kinect Wrapper Package for Unity3D)包含了所有我们开发Unity+Kinect需要用到的脚本。
导入包之后,所有我们需要的资源都会出现在project面板中,具体来说是以下的一些资源:
Scenes
KinectExample - 示例场景,这个例子向你展示了如何通过在每一个Kinect 可以追踪的骨骼点上放置小球来产生骨骼运动。以及怎样使用Kinect来控制模型。
Prefabs
Kinect_Prefab- 这个预设(prefab)包含了我们开发Unity+Kinect程序所必需的所有脚本。但是它并没有包含你需要的用于控制模型的控制器(controller)。
KinectPointMan - 这个预设(prefab)向你展示了KinectPointController这个控制器是怎样使用的。
Kinect
KinectModelControllerV2 - 你需要将这个脚本拖放到你想要应用Kinect控制的模型上。为了让模型能够跟上人的节奏,你需要将模型上控制模型动作的关键骨骼拖放到这个脚本暴漏的合适的变量中 ,也就是将模型中的骨骼与kincet识别到的人的骨骼绑定起来。另外这个脚本暴漏的变量中,还有一个变量时标识模型是受哪个玩家控制。
KinectPointController - 你也需要将这个脚本拖放到场景中的游戏物体上。但是这个游戏物体不是模型,而是由一系列分别代表头部、肩部、手等人体部位的点组成。你需要将游戏物体中的这些关键点都拖放到这个脚本暴漏的外部变量中。这样就可以使用Kinect控制游戏物体了,游戏物体是由一系列的点组成的人体。
DisplayDepth - 这个脚本得到深度图像。
DisplayColor - 这个脚本得到RGB图像。
KinectRecorder - 这个脚本用于记录你的动作,并为Kinect模拟器(emulator)产生回放文件。
KinectEmulator - 这个脚本模拟Kinect设备.和KinectRecorder产生的回放文件一起工作。
KinectSensor - 这个脚本从Kinect设备中取得数据。需要替换这个文件使用特用版本的SDK.
DeviceOrEmulator - 这个脚本设置使用Kinect物理设备还是Kinect模拟设备.
SkeletonWrapper - 这个脚本抓取骨骼数据.
DepthWrapper - 这个脚本抓取深度图像数据.
KinectInterop - 这个脚本从Microsoft Kinect SDK中抓取数据.
Recordings/playbackDefault - 这是为Kinect模拟设备准备的默认的回放文件.
Models and Materials
rainbowMan
这是示例模型。你需要将KinectModelControllerV2这个脚本拖放在这个模型上,并将组成模型的骨骼与脚本中暴漏的骨骼部位变量绑定在一块。然后就开始测试吧。
三、在自己的工程中使用KinectWrapperPackage包
要想在自己的工程中,使用KinectWrapperPackage包来达到Unity3d和Kinect交互。首先需要导入这个包到Unity中,然后经过下面的步骤完成交互。
1、设置Kinect_Prefab
前面提到过了,如果在Unity中和Kinect交互,Kinect_Prefab这个游戏物体是必不可少的。 这个物体需要存在于你的场景中的某处。并且在KinectWrapper 脚本中调用了DontDestroyOnLoad这个函数,所以当你切换场景时,它仍旧存在着,因此你不必在每个场景中都实例一个Kinect_Prefab。
在Unity中,将project面板中的Kinect_Prefab直接拖拽到Hierarchy面板就可以了。
2、控制游戏中的角色
为了控制场景中的角色的移动,你需要将KinectModelControllerV2这个脚本拖拽到场景中的模型上,并绑定骨骼;或者你为了控制一系列的游戏物体,你需要将KinectPointController拖拽这些物体上。下面分别说明这个脚本的使用。
模型控制器:KinectModelControllerV2
为使用模型控制器,请按照以下步骤:
拖拽脚本资源KinectModelControllerV2到场景中的模型中。
选择场景中的模型。找到模型中的暴漏变量Sw(它代表Skeleton Wrapper). 并将当前场景中的Kinect_Prefab拖拽给Sw这个变量。
详细展开你的模型,让模型的每一块骨骼在hierarchy面板中可见。
一个接一个地把模型中的骨骼拖拽到脚本中暴漏的对应的变量中.确保每一个骨骼都对应到了正确的变量上。
当模型中所有的骨骼都放置好了之后,改变暴漏的Player变量的值,这个变量表明该模型是受哪个玩家控制, 0代表第一个玩家,1 代表第二个玩家。
接下来要设置暴漏的Mask变量的值。设置合适的值,以决定是所有的骨骼都受Kinect控制,还是仅仅一部分骨骼受Kinect控制.如果这些受Kinect控制的骨骼都不是你想要的,你可以自己写一个控制模型的脚本来代替KinectModelControllerV2。
当游戏玩家在控制模型时,如果你想要该模型同时播放自带的动画,那么你需要在暴漏的变量中选animated选项,并设置BlendWeight变量的值,来决定模型受自带模型动画和Kinect驱动动作的最终混合效果。该变量取值范围为0到1之间。
例如示例程序中骨骼和变量的对应关系如下:
一系列点的控制器:KinectPointController
为了使用该控制器控制一系列的点,请遵从下面几步:
在场景中创建一个空物体对象,作为你想要控制的一系列点的容器。将其他的物体拖拽到刚刚创建的空物体中,并放置到相同的位置。使刚才创建的空物体成为这些物体的父节点。拖拽KinectPointController脚本到这些物体的父节点上。选中父节点,在Inspector面板中暴漏的变量中,找到Sw变量 (该变量表示Skeleton Wrapper).拖拽当前场景中Kinect_Prefab赋给这个变量。
拖拽你想利用Kinect控制的每一个物体到Inspector面板对应的合适的变量中。设置Player变量(代表玩家)和Mask变量(代表哪些骨骼收到监控).
示例程序中,不同的物体和变量的对应关系如下:
我们可以自己建立三维模型,再将其进行骨骼绑定,在Unity3D中将关节点一一对应,就可以用Unity中结合Kinect开发了。
KinectWrapperPackage for SDK 1.7替换文件下载:
相关推荐
Kinect V2 for Unity3D是一款专为Unity3D游戏引擎设计的插件,它使得开发者能够利用微软的第二代...结合Unity3D的强大3D渲染能力和Kinect V2的先进传感器技术,我们可以期待更多富有创意的体感项目出现在我们的生活中。
总之,"Unity结合Kinect2体感开发:KinectForWindows_UnityPro"项目提供了一个学习和实践体感技术的平台,通过Unity3D与Kinect 2的结合,可以创造出富有创意和互动性的应用程序。无论是游戏开发者还是希望探索新交互...
在现代游戏开发和交互式应用中,体感技术的应用日益广泛,尤其是微软的Kinect 2.0,它为开发者提供了强大的人体追踪和环境感知能力。本文将深入探讨如何利用Unity3D的插件技术,有效集成Kinect 2.0的功能,实现更为...
在 Unity3D 这样的游戏引擎中,Azure Kinect 的插件可以帮助开发者轻松集成这些功能,创建出更加真实和互动的体验。 Azure Kinect Unity 插件是将 Azure Kinect 的硬件功能与 Unity 游戏引擎相结合的关键工具。这个...
在Unity引擎中集成Kinect v2,能够构建出更为生动、直观的3D应用。本文将深入探讨Unity Asset Store上的"Kinect v2.0开发包",以及如何利用其中的资源进行开发。 首先,该开发包包含两个重要的PDF文档:Readme-...
标题中的“KinectV2结合Unity3D人物模型绑定”是指使用微软的Kinect V2传感器与Unity3D游戏引擎相结合,实现对人体动作的捕捉,并将这些动作实时地同步到Unity3D中的3D人物模型上,从而创建出互动性强、真实感高的...
Unity支持3D和2D游戏开发,同时在VR和AR领域的应用也日益广泛。当与Kinect结合时,Unity可以实时处理来自Kinect的数据,创建出与用户动作紧密相关的动态环境。 "kinect2.8.unitypackage"这个压缩包文件正是将Kinect...
总的来说,"KINECT Unity3d资源包"是一个为了简化和加速开发过程而设计的工具,它将Kinect的强大功能与Unity3D的灵活性结合起来,为开发者提供了丰富的体感交互开发可能性。无论是游戏制作、教育应用还是艺术展示,...
- **与其他技术的集成**:除了基本的Kinect功能外,还可以结合Unity的其他功能,如物理引擎、粒子系统等,创建更为复杂的应用。 综上所述,Kinect for Unity SDK v2.9.unitypackage不仅提供了一个强大的工具集来...
标题“Kinect V2 with MS-SDK for Unity3D”涉及的是使用微软的Kinect V2传感器和Microsoft SDK在Unity3D游戏引擎中进行交互式应用开发的技术。这个标题表明了我们将探讨如何将体感输入设备Kinect V2集成到Unity3D...
Unity3D是一个流行的游戏引擎,Kinect OpenNI是一个开源的自然用户界面(NUI)开发工具包,两者结合可以实现许多有趣的应用场景,例如获取人的身高。下面将详细介绍如何使用Unity3D与Kinect OpenNI开发获取人的身高...
总结来说,这个压缩包提供了一个学习和实践如何在Unity中整合Azure Kinect DK的平台,涵盖了计算机视觉、深度感知、骨架追踪和混合现实应用开发等多个关键领域。对于想要深入理解和应用这些技术的开发者来说,这是一...
当Kinect与Unity3D结合,开发者可以创建出更加自然、直观的用户界面,让用户通过身体动作参与游戏或应用程序,极大地提升了互动性和沉浸感。 Kinect1.7UnityPackage这个插件,是专为Unity3D设计的,它包含了所有...
KinectWrapperPackage替换文件,替换...本资源与Blog《Kinect开发之结合Unity3D进行游戏应用开发》配套。 如果您下载到了本资源。请去blog上看原文,方便一起学习交流。 http://yacare.iteye.com/blog/1950164
将这两者结合的"Kinect Wrapper Unity Package",是开发人员实现自然人机交互的理想工具。本文将深入探讨这个包裹包,以及如何利用它来提升你的Unity项目。 首先,"Kinect Wrapper Unity Package"的核心在于它提供...
《Azure Kinect在Unity 2.0中的应用实例详解》 Azure Kinect是由微软开发的一款先进的传感器设备,集成了深度相机、彩色...无论是在游戏开发、教育、医疗还是工业应用中,Azure Kinect与Unity的结合都将带来无限可能。
在Unity3D中集成Microsoft Kinect设备,主要是为了利用其先进的深度感知和人体骨架追踪功能,为游戏或交互式应用提供更为真实的用户输入体验。本文将详细介绍四种常见的Kinect与Unity3D的连接方法,以及各自的优缺点...
在现代游戏开发和虚拟现实领域,Kinect2与Unity3D的结合为开发者提供了强大的工具,用于创建交互式、增强现实(AR)体验。"Kinectv2 for unity3d"这一主题,正是关于如何利用微软的第二代Kinect传感器与Unity3D游戏...