ARSKView快照iOS

时间:2017-09-02 14:18:27

标签: ios sprite-kit augmented-reality arkit

有没有人在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中没有快照方法。

1 个答案:

答案 0 :(得分:0)

  • drawHeirarchy(in:afterScreenUpdates:)上使用ARSKView

  • 时,我也出现了黑屏
  • 对我来说失败的另一种方法:使用ARSession属性(ARFrame *)currentFrame-将像素缓冲区capturedImage转换为UIImage,但这仅显示了真实世界的图像,它不包含精灵。

  • 对我有用的只是从View Controller视图中截取屏幕截图,而不是ARSKView

  • 仍然可以切换到SceneKit,因为您仍然可以将SpriteKit用作SCNNode上的材质。 SceneKit还带有快照之类的好东西。

  • 还有诸如ARVideoKit https://github.com/AFathi/ARVideoKit之类的开源实现