私のプロジェクトでは、 と を切り替えたいと思っていARWorldTrackingConfiguration
ますARFaceTrackingConfiguration
。
2 種類のビューARSCNView
を使用して、背面カメラを使用ARView
し、顔追跡を行います。最初に を開始しARSCNView
、その後、ユーザーが必要に応じてフェイス トラッキングに切り替えることができます
このモードでView Controllerを起動します。
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 を正しく切り替えるにはどうすればよいですか?
前もって感謝します