Из коробки нет функции для вызова, которая будет извлекать снимок экрана из файла .dae
. Это не значит, что на устройстве нет способа сделать это.
Чтобы понять, что вы спрашиваете, давайте рассмотрим различные компоненты.
Файл .dae
загружается с использованием ARSCNView, который предназначен для чтения файлов .dae
. ARSCNView традиционно добавляется как подпредставление к вашему ViewController. В этом случае вам понадобится программа просмотра для визуализации 3D-файла вне экрана, поэтому вам нужно создать ARSCNView, но не добавлять его в качестве подпредставления VC (я бы добавил его во время начальной настройки, чтобы убедиться, что все загружается , но затем закомментируйте эту строку)
После того, как вы загрузили 3D в ARSCNView, используйте функцию ниже, чтобы скопировать контекст вида в изображение JPG
let viewSnapshot = takeSnapshotOfView(view: yourARSCNView)
и разорвать контекст и изменить размер JPG:
import UIKit
import CoreGraphics
func takeSnapshotOfView(view:UIView) -> UIImage? {
UIGraphicsBeginImageContext(CGSize(width: view.frame.size.width, height: view.frame.size.height))
view.drawHierarchy(in: CGRect(x: 0.0, y: 0.0, width: view.frame.size.width, height: view.frame.size.height), afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image?.resize(CGRect(x: 0, y: 0, width: 300, height: (image?.size.height)! / 300 * (image?.size.width)!)) // resize image before returning
}
extension UIImage {
func resize(_ toSize: CGRect) -> UIImage {
let size = self.size
let widthRatio = toSize.width / self.size.width
let heightRatio = toSize.height / self.size.height
var newSize: CGSize
if widthRatio > heightRatio {
newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
} else {
newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
}
let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)
UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
self.draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
}