一尘不染

如何在ARKit中检测垂直平面?

swift

如何实现垂直平面检测(即对于墙壁)?

let configuration = ARWorldTrackingSessionConfiguration()
configuration.planeDetection = .horizontal //TODO

阅读 191

收藏
2020-07-07

共1个答案

一尘不染

编辑: 自ARKit 1.5(iOS 11.3)起,现在支持。只需使用.vertical。我出于历史目的保留了以前的帖子。


TL; DR

垂直平面检测还不是ARKit中的功能。这.horizontal表明该功能可能正在开发中,将来可能会添加。如果它只是一个布尔值,则表明它是最终值。

确认书

我在WWDC17与苹果工程师的对话证实了这种怀疑。

说明

您可能会争辩说,为此创建一个实现将很困难,因为垂直平面比水平平面有更多的方向,但是正如 罗丹 所说,情况可能并非如此。

摘自 Rodamn的 评论: 简单来说,一个平面被定义为三个共面点。
一旦沿曲面(垂直,水平或任意角度)检测到足够的共面特征,便有了曲面候选。只是水平法线将沿着上/下轴,而垂直法线将平行于地平面。面临的挑战是,未经修饰的石膏板往往几乎不会产生视觉特征,而平原墙经常可能无法被检测到。我强烈怀疑这就是为什么该.vertical功能尚未发布的原因。

但是, 对此有相反的论点 。有关更多信息,请参见 rickster的 评论。

2020-07-07