Ios 如何在ARKit中检测垂直平面?
如何实现垂直面检测(即针对墙壁)Ios 如何在ARKit中检测垂直平面?,ios,swift,ios11,arkit,ios12,Ios,Swift,Ios11,Arkit,Ios12,如何实现垂直面检测(即针对墙壁) 编辑:现在从ARKit 1.5(iOS 11.3)开始支持该功能。只需使用.vertical。出于历史原因,我保留了下面的前一篇文章 TL;博士 垂直面检测还不是ARKit中存在的特征。.horizontal表明此功能可能正在开发中,将来可能会添加。如果它只是一个布尔值,这将表明它是最终的 确认书 我在WWDC17与一位苹果工程师的对话证实了这一怀疑 解释 您可能会争辩说,为这一点创建一个实现是困难的,因为垂直平面的方向比水平平面的方向多得多,但正如rodam
编辑:现在从ARKit 1.5(iOS 11.3)开始支持该功能。只需使用
.vertical
。出于历史原因,我保留了下面的前一篇文章
TL;博士 垂直面检测还不是ARKit中存在的特征。
.horizontal
表明此功能可能正在开发中,将来可能会添加。如果它只是一个布尔值,这将表明它是最终的
确认书
我在WWDC17与一位苹果工程师的对话证实了这一怀疑
解释
您可能会争辩说,为这一点创建一个实现是困难的,因为垂直平面的方向比水平平面的方向多得多,但正如rodamn所说,情况可能并非如此
来自rodamn的评论:
在最简单的情况下,平面定义为三个共面点。一旦沿曲面(垂直、水平或任意角度)检测到足够多的共面特征,就有了候选曲面。只是水平面的法线将沿着上/下轴,而垂直面的法线将平行于地平面。挑战在于,未经修饰的干墙往往产生很少的视觉特征,而普通墙往往无法被发现。我强烈怀疑这就是.vertical
功能尚未发布的原因
然而,有一个相反的论点。有关更多信息,请参阅rickster的评论。编辑:现在从ARKit 1.5(iOS 11.3)开始支持该功能。只需使用
.vertical
。出于历史原因,我保留了下面的前一篇文章
TL;博士 垂直面检测还不是ARKit中存在的特征。
.horizontal
表明此功能可能正在开发中,将来可能会添加。如果它只是一个布尔值,这将表明它是最终的
确认书
我在WWDC17与一位苹果工程师的对话证实了这一怀疑
解释
您可能会争辩说,为这一点创建一个实现是困难的,因为垂直平面的方向比水平平面的方向多得多,但正如rodamn所说,情况可能并非如此
来自rodamn的评论:
在最简单的情况下,平面定义为三个共面点。一旦沿曲面(垂直、水平或任意角度)检测到足够多的共面特征,就有了候选曲面。只是水平面的法线将沿着上/下轴,而垂直面的法线将平行于地平面。挑战在于,未经修饰的干墙往往产生很少的视觉特征,而普通墙往往无法被发现。我强烈怀疑这就是.vertical
功能尚未发布的原因
然而,有一个相反的论点。有关更多信息,请参见rickster的评论。据说苹果正在为新iPhone开发额外的AR功能,即摄像头的额外传感器。当这些设备功能已知时,这可能会成为一项功能。这里有一些猜测。另一个消息来源据说苹果正在为新iPhone开发额外的AR功能,即摄像头的额外传感器。当这些设备功能已知时,这可能会成为一项功能。这里有一些猜测。另一个来源由于iPhone X配备了前向深度摄像头,我怀疑下一个版本中会有一个后向深度摄像头,并且可能会在那时授予垂直功能。由于iPhone X配备了前向深度摄像头,我的怀疑是,下一个版本中会有一个背面朝上的版本,可能在那之前,
.vertical
功能将被授予。我是团结地完成的,但我需要做我的数学
我使用随机样本一致性从ARkit返回的点云检测垂直面。这就像有一个循环,随机选取3个点来创建一个平面,并计算与之匹配的点,然后看看哪种尝试是最好的
它起作用了。但是因为当墙是素色时,它不能返回很多点。所以它在很多情况下都不起作用。我是团结一致的,但我需要做数学题 我使用随机样本一致性从ARkit返回的点云检测垂直面。这就像有一个循环,随机选取3个点来创建一个平面,并计算与之匹配的点,然后看看哪种尝试是最好的
它起作用了。但是因为当墙是素色时,它不能返回很多点。因此,它在很多情况下都不起作用。iOS 11.3提供了对此的支持:
静态变量垂直:ARWorldTrackingConfiguration.PlaneDetection
该任务检测平行于重力的曲面(无论其他方向如何)
iOS 11.3提供了对此的支持:
静态变量垂直:ARWorldTrackingConfiguration.PlaneDetection
该任务检测平行于重力的曲面(无论其他方向如何)
苹果发布了iOS 11.3,其中包括ARKit 1.5在内的各种AR更新。在此更新中,ARKit包括ARKit识别虚拟对象并将其放置在垂直表面(如墙和门)上的功能 ARWorldTrackingConfiguration现在支持垂直
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
sceneView.session.run(configuration)
苹果发布了iOS 11.3,其中包括ARKit 1.5在内的各种AR更新。在此更新中,ARKit包括ARKit识别虚拟对象并将其放置在垂直表面(如墙和门)上的功能
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
sceneView.session.run(configuration)
configuration.planeDetection = ARWorldTrackingConfiguration.PlaneDetection.vertical
private func configureSceneView(_ sceneView: ARSCNView) {
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical] //BOTH TYPES
configuration.isLightEstimationEnabled = true
sceneView.session.run(configuration)
}
extension ARSceneManager: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else {
return
}
print("Found plane: \(planeAnchor)")
}
}