0

是否可以使用ARSCNView,将其配置ARWorldTrackingConfiguration为支持它的设备,并以另一种方式为不支持它的设备(使用 A8 芯片及更低版本)配置它并且仍然在后台渲染视频?

if ARWorldTrackingConfiguration.isSupported{
    let config=ARWorldTrackingConfiguration()
    config.planeDetection = .horizontal
    sceneView.session.run(config)
}else if AROrientationTrackingConfiguration.isSupported{
    let config=AROrientationTrackingConfiguration()
    sceneView.session.run(config)
}else{
    print("not supported")
    //what here?  <<<
}
4

2 回答 2

3

您需要一个运行ARSession来驱动摄像头输入到一个ARSCNView,运行一个ARSession您需要一个支持的ARConfiguration,并且所有配置都需要 A9。

但是,如果您低于 A9 的后备计划是拥有一个无法获得任何 ARKit 运动跟踪的 SceneKit 视图……您就不需要 ARKit。只需使用常规的 SceneKit 视图 ( SCNView)。要使相机源显示在您的 SceneKit 内容后面,请找到AVCaptureDevice您想要的相机,并将其传递给您视图中的场景。background.contents

(使用捕获设备作为 SceneKit 背景是 iOS 11 中的新功能。它似乎不在文档中(还没有?),但它在 WWDC17 SceneKit 会话中有所描述。)


顺便说一句,没有任何设备支持方向跟踪但不支持世界跟踪,因此if您问题中的多分支语句有点矫枉过正。

于 2017-09-08T14:38:12.163 回答
1

下面的代码解决了这个问题,它可能是损坏的代码

let device = sceneView.device!
let maskGeometry = ARSCNFaceGeometry(device: device)!
mask = Mask(geometry: maskGeometry, maskType: maskType)

用。。。来代替

    let device = MTLCreateSystemDefaultDevice()
    let maskGeometry = ARSCNFaceGeometry(device: device!)!
    mask = Mask(geometry: maskGeometry)
于 2019-05-16T06:19:44.477 回答