是否可以使用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? <<<
}
您需要运行的ARSession
将相机馈送到ARSCNView
,以运行ARSession
,您需要支持的ARConfiguration
,所有配置都需要A9。
但是,如果您的A9低下计划是要具有无法获得Arkit的动作跟踪的Scenekit视图...您不需要ARKIT。只需使用常规场景视图(SCNView
)即可。要使相机提要显示在您的场景内容后面,请找到所需的相机的AVCaptureDevice
,然后将其传递给您视图中场景的background
.
contents
。
(使用捕获设备作为场景背景是iOS 11中的新事物。
顺便说一句,没有任何支持方向跟踪但不支持世界跟踪的设备,因此问题中的多个分支if
语句是有点过分的。
在代码下方解决此问题,它可能被损坏代码
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)