我尝试在我的 AR 体验中实现平面检测。我有一个ARSCNView
带有ARSCNViewDelegate
扩展名的子类。
我的cameraDidChangeTrackingState
委托方法被调用。但是,我从来没有见过我的renderer(_:didAdd node:, for anchor:)
方法被调用。任何想法?
class ARView: ARSCNView {
override init(frame: CGRect, options: [String : Any]? = nil) {
super.init(frame: frame, options: options)
let sessionConfig = ARWorldTrackingConfiguration()
sessionConfig.planeDetection = [.horizontal]
self.session.run(sessionConfig)
self.delegate = self
}
}
extension ARView: ARSCNViewDelegate{
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
//add childNodes to the node here....
//but, this method doesn't get called
}
}
编辑:我可以找到 ARPlaneAnchors session(_ session: ARSession, didAdd anchors: [ARAnchor])
,但我不确定是否应该使用这个,因为在大多数(也是苹果)示例中,它们会将对象添加到锚节点,如我上面的代码所示。还是我必须自己触发那个 didAdd node:, for anchor
方法?