我使用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
答案 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)
如果要成功检测和跟踪环境中的垂直对象,则需要良好的照明条件和丰富的非重复纹理。看下面的图片:
希望这会有所帮助。