Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XCode ARKit图像跟踪循环视频_Xcode_Loops_Video_Arkit - Fatal编程技术网

使用XCode ARKit图像跟踪循环视频

使用XCode ARKit图像跟踪循环视频,xcode,loops,video,arkit,Xcode,Loops,Video,Arkit,您好,我是一名新开发人员,现在我正在开发一个AR应用程序,该应用程序与图像跟踪一起工作,它应该在不同的跟踪图像上播放不同的视频。 现在视频停止了,我如何循环视频? 此外,如果图像不在相机视图中,视频将继续。还有暂停功能吗? 我会感谢每一个提示 import UIKit import SceneKit import ARKit class ViewController: UIViewController, ARSCNViewDelegate { @IBOutlet var sceneV

您好,我是一名新开发人员,现在我正在开发一个AR应用程序,该应用程序与图像跟踪一起工作,它应该在不同的跟踪图像上播放不同的视频。 现在视频停止了,我如何循环视频? 此外,如果图像不在相机视图中,视频将继续。还有暂停功能吗? 我会感谢每一个提示

import UIKit
import SceneKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

    @IBOutlet var sceneView: ARSCNView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        sceneView.delegate = self
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        let configuration = ARImageTrackingConfiguration()
        
        if let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: Bundle.main) {
            configuration.trackingImages = trackedImages
            configuration.maximumNumberOfTrackedImages = 2
        }
        
        sceneView.session.run(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 {
            
            let size = imageAnchor.referenceImage.physicalSize
            
            var videoNode = SKVideoNode()
            
            switch imageAnchor.name {
            case "Image1":
                videoNode = SKVideoNode(fileNamed: "Image1.mp4")
            case "Image2":
                videoNode = SKVideoNode(fileNamed: "Image2.mp4")
            case "Image3":
                videoNode = SKVideoNode(fileNamed: "Image3.mp4")
            default:
                break
            }
            
            videoNode.play()
                
                
            let videoScene = SKScene(size: CGSize(width: 1280, height: 960))
            videoScene.anchorPoint = CGPoint(x: 0.5, y: 0.5)
            videoScene.addChild(videoNode)
            
            let plane = SCNPlane(width: size.width, height: size.height)
            plane.firstMaterial?.diffuse.contents = videoScene
            let planeNode = SCNNode(geometry: plane)
            plane.firstMaterial?.isDoubleSided = true
            planeNode.eulerAngles.x = .pi / 2
            
            node.addChildNode(planeNode)
            
            return node
        }
        
        return nil
    }
}

也许有用?不过你需要这样做。谢谢你的提示,但我不知道在我的代码中在哪里以及如何实现它,所以它可以工作。。。有什么建议吗^^我只能找到循环播放视频和音频的方法。遗憾的是,我不知道在哪里初始化SKVideoNode:(哦,谢谢,没问题,我会试试的^^