ARKit 在 ARWorldTrackingConfiguration 和 ARFaceTrackingConfigu



在我的项目中,我想在ARWorldTrackingConfigurationARFaceTrackingConfiguration之间切换。

我使用两种不同类型的视图,一种ARSCNView使用后置摄像头,ARView进行面部跟踪。首先我开始ARSCNView,然后,如果用户愿意,他可以切换到面部跟踪

我在此模式下启动视图控制器:

sceneView.delegate = self
sceneView.session.delegate = self
            // Set up scene content.
setupCamera()            
sceneView.scene.rootNode.addChildNode(focusSquare)
let configurationBack  = ARWorldTrackingConfiguration(
configurationBack.isAutoFocusEnabled = true
configurationBack.planeDetection = [.horizontal, .vertical]

sceneView.session.run(configurationBack, options: [.resetTracking, .removeExistingAnchors])

我加载了我的对象 (.scn(

当我想切换到前置摄像头并传递给ARView时,我会这样做:

 let configurationFront  = ARFaceTrackingConfiguration()
  // here I stop my ARSCNView session
  self.sceneView.session.pause()
    self.myArView = ARView.init(frame: self.sceneView.frame)
    self.myArView!.session.run(configurationFront)
    self.myArView!.session.delegate = self
    self.view.insertSubview(self.myArView!, aboveSubview: self.sceneView)

比我加载我的.rcproject

所以我的问题从这里开始,当我尝试返回后置摄像头并再次传递到 ARWorldTracking 时。

这是我的方法:

// remove my ARView with face tracking
        self.myArView?.session.pause()
        UIView.animate(withDuration: 0.2, animations: {
            self.myArView?.alpha = 0
        }) { (true) in
            self.myArView?.removeFromSuperview()
            self.myArView = nil
        }
// here I restart the initial ARSCNView
    let configurationBack  = ARWorldTrackingConfiguration(
        configurationBack.isAutoFocusEnabled = true
        configurationBack.planeDetection = [.horizontal, .vertical]

    session.run(configurationBack, options: [.resetTracking, .removeExistingAnchors])

当我切换到后置摄像头时,传感器无法正确跟踪飞机。

我该如何解决这个问题,那么如何在ARWorldTrackingConfiguration和ARFaceTrackingConfiguration之间正确切换呢?

提前致谢

确保在暂停会话时同时删除场景中所有添加的节点。在暂停会话后添加以下代码 self.sceneView.session.pause()

self.sceneView.scene.rootNode.enumerateChildNodes { (childNode, _) in
    childNode.removeFromParentNode()
}

相关内容

  • 没有找到相关文章

最新更新