首页 文章

将Kinect深度读数映射到Unity

提问于
浏览
2

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

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

enter image description here

1 回答

  • 0

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

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

    KinectSensor Sensor = KinectSensor.GetDefault();
    CoordinateMapper mapper = Sensor.CoordinateMapper;
    

    在这些家伙准备好之后 . 获得你的第一个深度框架 . 使用它与mapper一起填充 ColorSpacePoint 数组,如下所示:

    ColorSpacePoint[] _colorPoints;
    mapper.MapDepthFrameToColorSpace(DepthData, _colorPoints);
    

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

    从那里我想你可以使用 ColorSpacePoint 来确定图像在哪里应用了触摸,并使用常规颜色流直观地调试它 .

相关问题