我们对使用Microsoft Kinect非常陌生,并且正在尝试将其与我们的Unity 2D游戏相关联,以实现一个班级项目。我们的类项目的一部分要求我们将游戏投影到面料上,并让用户按下面料以便与游戏交互。玩家将轻拍织物以收集坠落的物体。我们正在尝试使用Kinect的深度图,以便看到用户在屏幕上点击的位置,然后我们可以看到他们正在与什么对象交互。
我们很难找到一种方法来将Kinect深度坐标转换为适合我们游戏的坐标。由于我们的设置,我们无法使用骨骼跟踪。有没有人有在不使用骨架函数的情况下将Kinect深度坐标数据转换为2D Unity游戏的经验?下面是我们的设置示意图,以便于澄清。

发布于 2017-04-04 21:27:10
您的问题似乎源于kinect深度和颜色流不对齐的事实。这意味着对于你得到的每个深度像素,都有一定的偏移量需要考虑。因此,您必须:
在获取第一个深度帧之前,获取坐标映射器。
KinectSensor Sensor = KinectSensor.GetDefault();
CoordinateMapper mapper = Sensor.CoordinateMapper;在这些人准备好之后。获取您的第一个深度帧。在映射器中使用它来填充ColorSpacePoint数组,如下所示:
ColorSpacePoint[] _colorPoints;
mapper.MapDepthFrameToColorSpace(DepthData, _colorPoints);这个新填充的数组将包含映射到kinect相机颜色空间的深度数据。您将开始获得有关色框内部深度定位的准确和可靠的数据,并使用提供的图像实际校准您的应用程序。
从那里,我想你可以使用ColorSpacePoint来确定图像中应用触摸的位置,并使用常规颜色流对其进行可视调试。
https://stackoverflow.com/questions/33747961
复制相似问题