是否可以在iPhoneX上同时运行ARWorldTracking Session和ARFaceTracking Session?

时间:2017-12-06 08:32:27

标签: ios iphone swift arkit truedepth-camera

我正在尝试在iPhoneX上同时运行ARWorldTracking Session和ARFaceTracking Session,  但是在后一个会话开始运行后,第一个运行会话停止了。

是不可能实现的? 这是我的ViewController.swift代码。

import UIKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate, 
ARSessionDelegate {
    @IBOutlet weak var frontView: ARSCNView!
    @IBOutlet weak var backView: ARSCNView!
    override func viewDidLoad() {
       super.viewDidLoad()
       startTracking()
    }

   func startTracking() {
       let backConfiguration = ARWorldTrackingConfiguration()
       backView.session.run(backConfiguration)

       let frontConfiguration = ARFaceTrackingConfiguration()
       frontConfiguration.isLightEstimationEnabled = true      
       frontView.session.run(frontConfiguration)
  }
}

2 个答案:

答案 0 :(得分:1)

不。

ARKit依赖于AVCapture系统,并且不支持一次使用多个捕获设备(摄像头)。如果使用前置摄像头启动捕获会话,而另一个会话正在使用后置摄像头,则现有会话将停止。

答案 1 :(得分:-1)

ARSession是一个单例,因此更改配置将改变共享会话的状态。来自文档:

  

ARSession   管理设备摄像头和动作的共享对象   增强现实体验所需的处理。