在ARKIT中无法预览下载的图像

时间:2018-10-23 02:45:36

标签: ios swift xcode realm arkit

我一直在开发ARKit应用程序,并且实现了检测场景中的图片并播放场景中的视频的目标。 发生的问题是当我尝试从互联网上获取图像时。 *图像被检测到并开始播放(我能够听到音频),但从未在场景中显示任何视频。(我将下面的代码还原为开始的位置) *我真正想要的是当我的应用程序在App Store中时,随时随地更新参考图像和播放的视频。

请告诉我们最佳解决方案...谢谢

下面是我的完整代码: 导入UIKit 导入SceneKit 导入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()
        }
}


}

0 个答案:

没有答案