有没有人在ARKit项目中截取ARSKView
的截图?
我试过这样的事情:
if let sc = view.snapshotView(afterScreenUpdates: true) {
DispatchQueue.main.async {
UIGraphicsBeginImageContextWithOptions(sc.bounds.size, true, 0.0)
sc.drawHierarchy(in: sc.bounds, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot!, nil, nil, nil)
}
}
但输出是黑色图像。
在Apple的例子中,他们使用ARSCNView
,他们可以调用快照功能,并自动完成所有操作。
我使用的是SpriteKit而不是SceneKit,所以在spriteKit中没有快照方法。
答案 0 :(得分:0)
在drawHeirarchy(in:afterScreenUpdates:)
上使用ARSKView
对我来说失败的另一种方法:使用ARSession属性(ARFrame *)currentFrame
-将像素缓冲区capturedImage
转换为UIImage
,但这仅显示了真实世界的图像,它不包含精灵。
对我有用的只是从View Controller视图中截取屏幕截图,而不是ARSKView
。
仍然可以切换到SceneKit,因为您仍然可以将SpriteKit用作SCNNode
上的材质。 SceneKit还带有快照之类的好东西。
还有诸如ARVideoKit https://github.com/AFathi/ARVideoKit之类的开源实现