我们对使用Microsoft Kinect非常陌生,并且正在尝试将它与我们的Unity 2D游戏联系起来用于课堂项目。我们的课程项目的一部分要求我们将游戏投射到结构上,并让用户按下结构以与游戏进行交互。玩家将轻拍布料以收集坠落的物体。我们尝试将深度图与Kinect一起使用,以便查看用户在屏幕上点击的位置,然后我们可以看到他们正在与哪个对象进行交互。
我们无法找到将Kinect深度坐标转换为适合我们游戏的坐标的方法。由于我们的设置,我们无法使用骨架跟踪。有没有人有经验将Kinect深度坐标数据转换为2D Unity游戏而不使用骨架函数?以下是我们为澄清而设置的图表。
答案 0 :(得分:0)
你的问题似乎源于kinect深度和颜色流未对齐的事实。这意味着对于每个深度像素,你得到的是一定的偏移量。因此你必须:
在获取第一个深度帧之前,获取坐标映射器。
f_3(n)
这些家伙准备好了之后。获得你的第一个深度框架。与mapper一起使用它来填充KinectSensor Sensor = KinectSensor.GetDefault();
CoordinateMapper mapper = Sensor.CoordinateMapper;
数组,如下所示:
ColorSpacePoint
这个新填充的数组将包含映射到kinect相机颜色空间的深度数据。 您将开始获得有关色彩框内深度定位的准确可靠数据,并使用提供的图像实际校准您的应用程序。
从那里我想你可以使用ColorSpacePoint[] _colorPoints;
mapper.MapDepthFrameToColorSpace(DepthData, _colorPoints);
来确定图像在哪里应用了触摸,并使用常规颜色流直观地调试它。