Unity for kinect的开发教程

来源:互联网 发布:品茗软件哪里买 编辑:程序博客网 时间:2024/05/27 00:48

安装Microsoft Kinect SDK

由于这套驱动程序是由Microsoft支持的,安装程序相对比较容易 - 您只需下载SDK安装程序包并按照屏幕上的提示操作即可。

下载并安装SDK

注意:安装前请确保Kinect未连接到本机。

  1. http://www.microsoft.com/en-us/download/details.aspx?id=36996下载SDK和Toolkit
  2. 运行安装程序并按照屏幕提示进行操作。
  3. 安装程序完成后,将Kinect连接到计算机。
  4. 随意运行Sample Skeletal Viewer以确保Kinect功能正常。

Kinect与unity结合

请注意:即使您的机器没有连接Kinect,建议您将驱动程序安装在正在开发的机器上。

为了利用刚刚安装的驱动程序,您只需要在项目中使用提供的脚本。

幸运的是,在这个页面上提供的Unity包将为您安装所有必需的资产。检查下一节,了解如何安装和使用它!

将Kinect SDK载入Unity

安装Unity包

预先构建的Unity包(用于Unity3D的Kinect Wrapper Package)包括开始运行您的世界所需的所有脚本。

要安装,只需导入包,并且所有必需的资产将显示在您的项目中。

包装中包含以下项目:

场景

  • KinectSample - 此场景向您展示如何通过将Kinect放置在每个骨骼上的骨骼上以及如何使用kinect控制模型来生成/跟踪骨架。使用它来了解Kinect的能力。它还显示如何准备您的GameObjects

预制体

  • Kinect_Prefab - 此预制具有一个空节点,其中包含您的世界开始使用Kinect的所有必需脚本 - 这不包括控制器,您需要用它来实际控制模型。见设置
  • KinectPointMan - 这个预制显示了KinectPointController如何工作。

Kinect

  • KinectModelControllerV2 - 这是您将要附加到您想要操作的模型的脚本 - 将要控制的每个骨骼拖放到相应的插槽中,并确定哪个播放器控制哪个模型。
  • KinectPointController - 此脚本将将您定义的GameObjects放置在由Kinect跟踪的点上,生成一个骨架。起始场景附有一个如何看待/应该做的例子。
  • DisplayDepth - 此脚本将获取深度图像。将其附加到具有渲染器的游戏对象。注意:统一,您需要在运行您的世界后每次重新启动统一,否则此脚本将无法正常工作(由于SDK问题)。
  • DisplayColor - 此脚本将获取RGB图像。将其附加到具有渲染器的游戏对象。注意:统一,您需要在运行您的世界后每次重新启动统一,否则此脚本将无法正常工作(由于SDK问题)。
  • KinectRecorder - 此脚本将记录您的运动和输出模拟器的播放文件。
  • KinectEmulator - 此脚本将作为虚拟Kinect。它适用于播放文件。现在,它只是模拟骨架数据。
  • KinectSensor - 该脚本从Physect Kinect获取数据。
  • DeviceOrEmulator - 此脚本设置是否使用物理Kinect或仿真器。
  • SkeletonWrapper - 此脚本抓取骨架数据。
  • DepthWrapper - 该脚本抓取深度图像数据。
  • KinectInterop - 该脚本从Microsoft Kinect SDK获取数据。
  • 录音/播放默认 - 这是模拟器的默认播放文件。不要删除此文件。

模型和材料

  • rainbowMan
这是一个示例模型,可用于测试/学习如何使用包装器。您可以将KinectModelControllerV2脚本拖放到此模型上,并附加骨骼并立即开始测试。

使用脚本

导入资产包后,您可以使用KinectExample来测试并熟悉KinectPointController和KinectModelControllerV2。您可以使用此作为您的基础场景,或者您可以将适当的GameObjects拖动到一个新场景中。

设置Kinect_Prefab

如前所述,Kinect_Prefab GameObject需要与Unity进行通话/使用Kinect。这个空对象需要存在于你场景的某处。但是,如果您正在切换场景,则会因为KinectWrapper脚本中的DontDestroyOnLoad调用而持续存在,因此您不需要在每个场景中实例化一个新的Kinect_Prefab。

为了从Kinect得到最好的使用,您可能需要调整Kinect_Prefab对象本身中的某些设置 - 以下是每个选项的细目。

设备或仿真器

  • 使用模拟器 - 检查这个来使用仿真器。

Kinect传感器

注意:请勿手动启用此脚本,它由DeviceOrEmulator控制。

  • 传感器高度 - 传感器离地面多高(以米为单位)。
  • Kinect中心 - 这告诉Kinect它应该在哪里寻找它的0,0,0点(相对于传感器下面的地面)。默认值很好。
  • 看看 - 告诉Kinect如何使用电机控制来定向相机。

注意:以下值允许您平滑骨架数据。通常默认值工作正常。不要更改它们,除非您找到项目的魔术数字。

  • 平滑 - 默认值0.5。
  • 校正 - 默认值0.5。
  • 预测 - 默认值0.5。
  • 抖动半径 - 默认值0.05。
  • 最大偏差半径 - 默认值0.04。

Kinect仿真器

注意:

  1. 请勿手动启用此脚本,它由DeviceOrEmulator控制。
  2. 如果您处于模拟器模式,它将自动播放播放默认文件。
  3. F12播放路径输入文件的文件再次F12切换回。
  • 输入文件 - 为仿真器录制的文件。默认值为“Assets / Kinect / Recordings / playback0”。
  • 传感器高度 - 传感器离地面多高(以米为单位)。
  • Kinect中心 - 这告诉Kinect它应该在哪里寻找它的0,0,0点(相对于传感器下面的地面)。默认值很好。
  • 看看 - 告诉Kinect如何使用电机控制来定向相机。

Kinect记录仪

注意:

  1. F10开始录制,再次F10停止。
  2. 您可以在一次运行中记录多个文件。
  3. 录制文件将按照输出文件确定的文件夹顺序创建默认值为“Assets / Kinect / Recordings / playback”,所以一次运行中的录制文件将被命名为“playback0”,“playback1”等。
  4. 录音机将覆盖现有文件。记得在再次运行你的世界并进行录音之前将你的文件保存到另一个文件夹; 或者您可以更改输出文件的值以将新文件保存到另一个位置。
  • 输出文件 - 录制文件将在哪里。默认值为“资产/ Kinect /录音/播放”。

控制你的人物

简单地说,为了让你的角色移动,您需要首先附加KinectModelControllerV2来控制模型的骨骼,或者KinectPointController来控制一系列GameObjects

NewModelController

要进行设置,请执行以下操作:

  1. KinectModelControllerV2脚本拖动到您的模型。
  2. 选择模型,并找到Sw变量(代表Skeleton Wrapper)。将您的CURRENT SCENE的 Kinect_Prefab拖动到此变量中。这给我们指向主更新脚本的指针。
  3. 现在,充分展开您的模型,以便每个骨骼在层次结构中可见。
  4. 一个接一个地把你要控制的每个骨骼拖到适当的变量上。确保双重检查骨骼,因为它很容易放置不正确。
  5. 放置所有骨骼后,设置应该控制此模型的播放器。0是玩家,1是玩家2。
  6. 接下来,确定是否要使整个骨架受到Kinect(或只是某些部分)的影响,并设置相应的掩码。如果你没有看到你想要的,写自己的!
  7. 如果您打算在播放器控制时对模型进行动画处理,请设置“动画”标志,并确定动画和Kinect之间应该发生多少混合 - 这是从0到1的范围。

KinectPointController

要进行设置,请执行以下操作:

  1. 创建一个空对象来存储要控制的每个对象。
  2. 将每个对象都放入此空节点,并将它们全部放在同一位置。
  3. KinectPointController连接到父节点。
  4. 选择父节点,找到Sw变量(代表Skeleton Wrapper)。将您的CURRENT SCENE的 Kinect_Prefab拖动到此变量中。这给我们指向主更新脚本的指针。
  5. 将要控制的每个对象拖到适当的变量中。
  6. 设置播放器号码(0 =播放器一,1 =播放器二)和面具。

有关如何运行的示例,请查看包中提供KinectExample