2

我尝试在我的 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方法?

4

0 回答 0