Swift 可以同时运行两个独立的分区吗?

Swift 可以同时运行两个独立的分区吗?,swift,arkit,arscnview,Swift,Arkit,Arscnview,由于ARKit3,可以运行同时支持前后摄像头的ARSession() 例如,这将为支持Worldtracking的前摄像头创建一个ArcConfiguration // session for the front camera let configuration = ARFaceTrackingConfiguration() configuration.isWorldTrackingEnabled sceneView.session.run(configurati

由于ARKit3,可以运行同时支持前后摄像头的ARSession()

例如,这将为支持Worldtracking的前摄像头创建一个ArcConfiguration

    // session for the front camera
    let configuration = ARFaceTrackingConfiguration()
    configuration.isWorldTrackingEnabled
    sceneView.session.run(configuration)
此示例为启用面部跟踪的后摄像头会话创建配置:

    // session for the back camera
    let configuration = ARWorldTrackingConfiguration()
    configuration.userFaceTrackingEnabled = true
    sceneView.session.run(configuration)
我想创建两个同时运行的独立ArcConfiguration和ArcSessions。像这样:

到目前为止,我尝试了以下代码:

import UIKit
import SceneKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

// back camera view
@IBOutlet var backView: ARSCNView!

// front camera view
@IBOutlet weak var frontView: ARSCNView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Set the view's delegate
    sceneView.delegate = self
    frontView.delegate = self

    // Create a new scene for back camera
    let scene = SCNScene(named: "art.scnassets/ship.scn")!
    backView.scene = scene
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // session for the back camera
    let configuration = ARWorldTrackingConfiguration()
    configuration.userFaceTrackingEnabled = true
    backView.session.run(configuration)

    // session for the front camera
    guard ARFaceTrackingConfiguration.isSupported else { return }
    let configurationFront = ARFaceTrackingConfiguration()
    configurationFront.isLightEstimationEnabled = true
    frontView.session.run(configurationFront, options: [])
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // Pause the view's session
    sceneView.session.pause()
}

func session(_ session: ARSession, didFailWithError error: Error) {
    // Present an error message to the user
}

func sessionWasInterrupted(_ session: ARSession) {
    // Inform the user that the session has been interrupted, for example, by presenting an overlay
}

func sessionInterruptionEnded(_ session: ARSession) {
    // Reset tracking and/or remove existing anchors if consistent tracking is required
}
}
当前摄像头正常工作时,后摄像头停止视频馈送。有解决这个问题的机会吗


在另一台摄像机上运行一个会话和一个低级视频捕获会话也是一个解决方案,但我遇到了同样的问题。

也许这会有所帮助:是的,谢谢。这基本上是同一个问题。我会看一看的。所以我看了一下。当您只有一个活动摄影机时,这是一个解决方案。我需要两个摄像头都处于活动状态。