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



我正在将ARCore与Unity一起使用,并且我正在成功跟踪垂直和水平平面。

我有一个倾斜的平面平台(它很大:4 米 x 4 米,所以应该被检测到(,与地板相比倾斜约 30 度,但平面检测似乎在这个平台上不起作用。

是否可以跟踪倾斜的平面/平台,或者您对如何做到这一点有任何想法?

提前谢谢。

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

有一个开放的GitHub FR来添加对一般平面检测的支持,但与此同时,您可能必须自己分析点云并拟合平面。

我怀疑如果不过滤到基本方向,这将是昂贵的和/或嘈杂的,这可以解释为什么它尚未实现。

也就是说,如果您确定您要查找的飞机与地板相比始终是 30 度,您可能会做类似的事情。

您应该能够使用从Frame对象PointCloud的静态属性检索点云。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;
}

(完整来源(

现在你已经有了点云,你需要把你的飞机装进去。本教程可能会让您了解如何执行此操作,它涵盖了通过 3 点进行的基本平面拟合和使用 RANSAC的更强大的多点平面拟合。你可能也想看看这个答案和这个答案。

最新更新