ARKit 1.5 - 垂直物体检测

时间:2018-04-05 11:32:17

标签: swift augmented-reality arkit

我使用ARKit 1.5和这个func来突出显示垂直表面,但它不能很好地工作。

func createPlaneNode(planeAnchor: ARPlaneAnchor) -> SCNNode {
    let scenePlaneGeometry = ARSCNPlaneGeometry(device: metalDevice!)
    scenePlaneGeometry?.update(from: planeAnchor.geometry)
    let planeNode = SCNNode(geometry: scenePlaneGeometry)
    planeNode.name = "\(currPlaneId)"
    planeNode.opacity = 0.25

    if planeAnchor.alignment == .vertical {
        planeNode.geometry?.firstMaterial?.diffuse.contents = UIColor.red
    }
    currPlaneId += 1
    return planeNode
}

它总是在垂直对象上找到一些FeaturePoints但很少见它实际上使用我创建的planeNode突出显示表面。

我希望能够发现并突出像支柱甚至男人这样的东西。你会怎么做? Image of object with featurePoints Image with the result in best case scenario

1 个答案:

答案 0 :(得分:0)

在ARKit 1.5和ARKit 2.0中,具有 .planeDetection 实例属性,该属性允许您启用.horizontal.vertical或同时启用.horizontal and .vertical检测。

var planeDetection: ARWorldTrackingConfiguration.PlaneDetection { get set }

ViewController的代码:

let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .vertical
//configuration.planeDetection = [.vertical, .horizontal]
sceneView.session.run(configuration)

如果要成功检测和跟踪环境中的垂直对象,则需要良好的照明条件和丰富的非重复纹理。看下面的图片:

enter image description here

希望这会有所帮助。