将Kinect深度读数映射到Unity

时间:2015-11-17 02:07:47

标签: c# unity3d kinect kinect-sdk unity5

我们对使用Microsoft Kinect非常陌生,并且正在尝试将它与我们的Unity 2D游戏联系起来用于课堂项目。我们的课程项目的一部分要求我们将游戏投射到结构上,并让用户按下结构以与游戏进行交互。玩家将轻拍布料以收集坠落的物体。我们尝试将深度图与Kinect一起使用,以便查看用户在屏幕上点击的位置,然后我们可以看到他们正在与哪个对象进行交互。

我们无法找到将Kinect深度坐标转换为适合我们游戏的坐标的方法。由于我们的设置,我们无法使用骨架跟踪。有没有人有经验将Kinect深度坐标数据转换为2D Unity游戏而不使用骨架函数?以下是我们为澄清而设置的图表。

enter image description here

1 个答案:

答案 0 :(得分:0)

你的问题似乎源于kinect深度和颜色流未对齐的事实。这意味着对于每个深度像素,你得到的是一定的偏移量。因此你必须:

在获取第一个深度帧之前,获取坐标映射器。

f_3(n)

这些家伙准备好了之后。获得你的第一个深度框架。与mapper一起使用它来填充KinectSensor Sensor = KinectSensor.GetDefault(); CoordinateMapper mapper = Sensor.CoordinateMapper; 数组,如下所示:

ColorSpacePoint

这个新填充的数组将包含映射到kinect相机颜色空间的深度数据。 您将开始获得有关色彩框内深度定位的准确可靠数据,并使用提供的图像实际校准您的应用程序。

从那里我想你可以使用ColorSpacePoint[] _colorPoints; mapper.MapDepthFrameToColorSpace(DepthData, _colorPoints); 来确定图像在哪里应用了触摸,并使用常规颜色流直观地调试它。