Я следовал этому руководству raywenderlich, чтобы обнаружить изображение, используя AR и Scene Kit. В этом примере они показали отображение видео поверх обнаруженного изображения.
https://www.raywenderlich.com/6957-building-a-museum-app-with-arkit-2
Я хочу отобразить изображение поверх обнаруженного изображения. Пожалуйста, помогите мне, как я могу добавить childNode в SCNNode, чтобы я мог отобразить изображение поверх него.
Вот код, который я попробовал, он не работает, показывая пустой белый экран.
DispatchQueue.main.async {
let size = imageAnchor.referenceImage.physicalSize
let imageView = UIImageView(image: UIImage(named: "BG.png")!)
let imgMaterial = SCNMaterial()
imgMaterial.diffuse.contents = imageView
let imgPlane = SCNPlane(width: size.width, height: size.height)
imgPlane.materials = [imgMaterial]
let imgNode = SCNNode(geometry: imgPlane)
imgNode.eulerAngles.x = -.pi / 2
node.addChildNode(imgNode)
node.opacity = 1
}
Помогите, пожалуйста, показать изображение поверх обнаруженного изображения. Заранее спасибо.
Я могу показать изображение поверх обнаруженного изображения, но ему требуется много памяти, что не так в этом коде.
И так же, как при просмотре изображения, которое я отображаю Воспроизведение GIF поверх обнаруженного изображения с кодом ниже.
let size = imageAnchor.referenceImage.physicalSize
let imgNameFromDoc = person["actionToTake"] as! String
let documentsPathURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
let imgpath = documentsPathURL?.appendingPathComponent("/Packages/\(self.selectedDatasetName)/3DScenes/\(imgNameFromDoc)")
let imageData = try! Data(contentsOf: URL(fileURLWithPath: imgpath!.path))
let imageURL = UIImage.gifImageWithData(imageData)
self.gifImgView = UIImageView(image: imageURL)
let imgMaterial = SCNMaterial()
imgMaterial.diffuse.contents = self.gifImgView
let imgPlane = SCNPlane(width: CGFloat(scaleActionSize(wid: Float(size.width), hei:Float(size.height))[0]), height: CGFloat(scaleActionSize(wid: Float(size.width), hei:Float(size.height))[1]))
imgPlane.materials = [imgMaterial]
let imgNode = SCNNode(geometry: imgPlane)
imgNode.eulerAngles.x = -.pi / 2
node.addChildNode(imgNode)
node.opacity = 1
С помощью расширения изображения я показываю GIF при просмотре изображения поверх обнаруженного изображения. https://github.com/kiritmodi2702/GIF-Swift/blob/master/GIF-Swift/iOSDevCenters%2BGIF.swift
Как загрузить изображение GIF в Swift?
Я перетащил класс iOSDevCenters + GIF.swift в приложение и отобразил gif.
Когда я использую это представление изображений gif для отображения изображений gif и изображений для отображения изображений, в Xcode, работающем с iPad, требуется более 800 МБ памяти.
Может кто-нибудь помочь мне найти утечки памяти (пробовал с инструментами, которые не могут исправить) или что-то не так в этом коде.