如何检测ARKit中的垂直飞机?

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

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

TL; DR

垂直面检测不是ARKit中存在的function。 .horizontal表明,这个function可能正在工作,并可能在未来添加。 如果它只是一个布尔值,这将表明它是最终的。

确认

这一怀疑得到了我与WWDC17苹果工程师的对话的证实。

说明

你可以争辩说,为此创build一个实现将是困难的,因为垂直飞机有更多的方向而不是水平的方向,但是正如Rodamn所说,情况可能并非如此。

rodamn的评论: 最简单的,一架飞机被定义为三个共面点。 一旦沿着表面(垂直,水平或以任意angular度)检测到足够的检测共面特征,就有了表面候选。 只是水平线的法线将沿着上/下轴线,而垂直线的法线将平行于地平面。 面临的挑战是没有装饰的石膏板往往会产生很less的视觉特征,而普通的墙壁往往不被发现。 我强烈怀疑这就是为什么.verticalfunction尚未发布。

由于iPhone X采用了前置深度相机,我怀疑后面的版本会面临背面的问题,直到此时.vertical可能授权。

据说苹果公司正在研究新型iPhone的额外ARfunction,即摄像头的额外传感器。 也许这将是一个function,当这些设备function已知。 这里有一些猜测。 http://uk.businessinsider.com/apple-iphone-8-rumors-3d-laser-camera-augmented-reality-2017-7和另一个来源https://www.fastcompany.com/40440342/apple-is-工薪硬对一个-iphone -8-后部面向-3D-激光换AR-和自动对焦源