2015-11-10 72 views
1

我用一個很簡單的方法來建立一個SKVideoNode,並把它通過幾何體的漫反射內容的SCNNode內。當我這樣做時,只有時間紋理更新並正確顯示視頻是當相機或節點正在移動。當兩者都靜止時,紋理不會更新(就像視頻甚至沒有播放),但聲音確實播放。SKVideoNode只有在SCNScene當渲染節點或攝像機移動

顯然它仍在播放視頻,但沒有正確渲染。我不知道爲什麼。

func setupAndPlay() { 

    // create the asset & player and grab the dimensions 
    let path = NSBundle.mainBundle().pathForResource("indycar", ofType: "m4v")! 
    let asset = AVAsset(URL: NSURL(fileURLWithPath: path)) 
    let size = asset.tracksWithMediaType(AVMediaTypeVideo)[0].naturalSize 

    let player = AVPlayer(playerItem: AVPlayerItem(asset: asset)) 

    // setup the video SKVideoNode 
    let videoNode = SKVideoNode(AVPlayer: player) 
    videoNode.size = size 
    videoNode.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5) 

    // setup the SKScene that will house the video node 
    let videoScene = SKScene(size: size) 
    videoScene.addChild(videoNode) 

    // create a wrapper ** note that the geometry doesn't matter, it happens with spheres and planes 
    let videoWrapperNode = SCNNode(geometry: SCNSphere(radius: 10)) 
    videoWrapperNode.position = SCNVector3(x: 0, y: 0, z: 0) 

    // set the material's diffuse contents to be the video scene we created above 
    videoWrapperNode.geometry?.firstMaterial?.diffuse.contents = videoScene 
    videoWrapperNode.geometry?.firstMaterial?.doubleSided = true 

    // reorient the video properly 
    videoWrapperNode.scale.y = -1 
    videoWrapperNode.scale.z = -1 

    // add it to our scene 
    scene.rootNode.addChildNode(videoWrapperNode) 

    // if I uncomment this, the video plays correctly; if i comment it, the texture on the videoWrapperNode only 
    // get updated when I'm moving the camera around. the sound always plays properly. 
    videoWrapperNode.runAction(SCNAction.repeatActionForever(SCNAction.rotateByAngle(CGFloat(M_PI * 2.0), aroundAxis: SCNVector3(x: 0, y: 1, z: 0), duration: 15.0))) 

    videoNode.play() 
} 

有沒有人遇到過類似的東西?任何幫助,將不勝感激。

回答

4

聽起來像是你需要設置.playing = trueSCNView

docs

如果此屬性的值爲NO(默認值),SceneKit不 增量現場的時間,所以與場景相關聯的動畫做 不玩了。將此屬性的值更改爲YES以開始動畫 場景。

0

我一直沒有成功&獲得SKVideoNode在Xcode 7.0或7.1中顯示視頻。如果我在iPad或iPhone等硬件設備上運行我的代碼或其他樣本,則視頻顯示效果良好,但在模擬器上只能播放音頻。相同的代碼在xCode 6.4的模擬器中工作正常。

我有來自Ray Wenderlich的CatNap示例iOS & tvOS遊戲教程(iOS 9)&它不會在Xcode 7.1附帶的Simulator 9.1中運行。我相信模擬器壞了&已經提交了一個蘋果的錯誤,但在一個月內沒有迴應。

有沒有人有示例代碼爲SKVideoNode在Xcode 7.1模擬器上的作品?