ARCore-平面检测:检测倾斜平面

时间:2018-10-01 05:21:09

标签: unity3d arcore

我将ARCore与Unity配合使用,并且成功跟踪了垂直和水平平面。

我有一个倾斜的平坦平台(很大:4米x 4米,因此应该可以检测到),它相对于地板倾斜约30度,但是平面检测似乎不适用于该平台。

是否可以跟踪倾斜的平面/平台,或者您对如何执行此操作有任何想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

我相信ARCore目前仅支持垂直和水平平面跟踪。

There is an open GitHub FR添加对常规平面检测的支持,但是与此同时,您可能必须自己分析点云并拟合平面。

我怀疑如果不对基本方向进行过滤,这将是昂贵的和/或嘈杂的,这将解释为什么尚未实施。

也就是说,如果您确定要查找的飞机始终与地面成30度角,则可以执行类似的操作。

您应该能够使用来自PointCloud对象的静态属性Frame来检索点云。 ARInterface是通过ARCore实现的:

    public override bool TryGetPointCloud(ref PointCloud pointCloud)
    {
        if (Session.Status != SessionStatus.Tracking)
            return false;

        // Fill in the data to draw the point cloud.
        m_TempPointCloud.Clear();
        Frame.PointCloud.CopyPoints(m_TempPointCloud);

        if (m_TempPointCloud.Count == 0)
            return false;

        if (pointCloud.points == null)
            pointCloud.points = new List<Vector3>();

        pointCloud.points.Clear();
        foreach (Vector3 point in m_TempPointCloud)
            pointCloud.points.Add(point);

        return true;
    }

full source

现在您已经有了点云,您需要使其适应飞机。 This tutorial可能会为您提供一些解决方法,它涵盖了通过3点进行基本平面拟合以及使用RANSAC进行更稳健的多点平面拟合的方法。您可能还想看看this answerthis answer