我正在将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的更强大的多点平面拟合。你可能也想看看这个答案和这个答案。