是否可以使用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? <<<
}
答案 0 :(得分:3)
您需要正在运行ARSession
才能将摄像头视频提供给ARSCNView
,要运行ARSession
您需要支持的ARConfiguration
,并且所有配置都需要A9。
但是,如果您的A9以下后备计划是让SceneKit视图无法获得任何ARKit的动态追踪......那么您就不需要ARKit。只需使用常规的SceneKit视图(SCNView
)。要使相机Feed显示在SceneKit内容后面,请找到所需相机的AVCaptureDevice
,然后将其传递到您所在场景的background
.
contents
。视图。
(使用捕获设备作为SceneKit背景是iOS 11中的新功能。它似乎不在文档中(但是?),但它描述的是in the WWDC17 SceneKit session。)< / p>
顺便说一句,没有任何设备支持方向跟踪但不支持世界跟踪,因此您问题中的多分支if
语句有点矫枉过正。
答案 1 :(得分:0)
下面的代码可以解决此问题,它可能是损坏的代码
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)