Нет предварительного просмотра с загруженным изображением в ARKIT - PullRequest
0 голосов
/ 23 октября 2018

Я работал над приложением ARKit и достиг своей цели: обнаружение изображений на сцене и воспроизведение видео на сцене.Проблема возникла, когда я попытался получить изображение из Интернета.* Изображение было обнаружено и началось воспроизведение (я смог услышать звук), но никогда не показывало никакого видео на сцене. (Я вернул приведенный ниже код туда, откуда начал) * Что я на самом деле хочу, так это обновить эталонные изображения ивидео воспроизведения на ходу, когда мое приложение находится в App Store.

ПОЖАЛУЙСТА, СКАЖИТЕ ЛУЧШЕЕ РЕШЕНИЕ ... СПАСИБО

Ниже приведен мой полный код: import UIKit import SceneKit import ARKitимпорт Alamofire импорт AlamofireImage

класс ViewController: UIViewController, ARSCNViewDelegate {

@IBOutlet var sceneView: ARSCNView!

var imageServer = [UIImage]()

var trackedImages = Set<ARReferenceImage>()

let configuration = ARImageTrackingConfiguration()

let videoNode = SKVideoNode(url: URL(fileURLWithPath: "https://example.com/video1.mp4"))

override func viewDidLoad() {
    super.viewDidLoad()

    sceneView.delegate = self
    sceneView.showsStatistics = true

}


override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

            fetchImage {
                self.configuration.trackingImages = self.trackedImages
                self.configuration.maximumNumberOfTrackedImages = 1
                self.sceneView.session.run(self.configuration)
            }

}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    sceneView.session.pause()
}


func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {

    let node = SCNNode()

    if let imageAnchor = anchor as? ARImageAnchor {

        videoNode.play()

        let videoScene = SKScene(size: CGSize(width: 480, height: 360))


        videoNode.position = CGPoint(x: videoScene.size.width / 2, y: videoScene.size.height / 2)

        videoNode.yScale = -1.0

        videoScene.addChild(videoNode)


        let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)

        plane.firstMaterial?.diffuse.contents = videoScene

        let planeNode = SCNNode(geometry: plane)

        planeNode.eulerAngles.x = -.pi / 2

        node.addChildNode(planeNode)

    }

    return node

}

func fetchImage(completion: @escaping ()->()) {
        Alamofire.request("https://example.com/four.png").responseImage { response in
            debugPrint(response)

            print(response.request as Any)
            print(response.response as Any)
            debugPrint(response.result)

            if let image = response.result.value {
                print("image downloaded: \(image)")

                self.imageServer.append(image)

                print("ImageServer append Successful")
                print("The new number of images = \(self.imageServer.count)")

            }
            completion()
        }
}


}
...