如何在iOS 11中将SKVideoNode添加到ARKit-SceneKit中?

3
有没有一种方法可以将SKVideoNode添加到ARKit场景(Scenekit)中?我尝试将SKVideoNode添加为SCNPlane几何图形漫反射内容,但它无法工作。
    let videoNode = SKVideoNode(fileNamed: "0.mov")
    videoNode.size = CGSize(width: 200, height: 100)
    videoNode.alpha = 0.8
    videoNode.play()
    self.videoNode = videoNode

    let plane = SCNPlane(width: 0.05, height: 0.05)
    let newMaterial = SCNMaterial()
    newMaterial.isDoubleSided = true
    newMaterial.diffuse.contents = self.videoNode
    plane.materials = [newMaterial]
    let node = SCNNode(geometry: plane)

    parent.addChildNode(node)
2个回答

4

SKNode不是SceneKit材质属性内容支持的类型之一。它的任何子类也都不是。

如果您想将SpriteKit内容映射到SceneKit材质上,可以将SKScene设置为材质属性内容。然后该场景可以包含任意数量或类型的SpriteKit节点。


1
你能提供一些示例代码吗?我尝试按照您所提到的方式实现,但是视频无法正确显示。它只是闪烁并显示一些颜色,而不是实际的视频。看起来它正在后台播放视频,但是在顶部应用了一个图层,从而使整个视频模糊。 - yaali
展示那份代码。以及问题的截屏。Rickster是大佬,但不要假设他是心理读者。 - Confused
@yaali 我曾经也遇到过完全相同的问题。通过在创建Sprite Kit场景时设置大小进行修复:let spriteKitScene = SKScene(size: CGSize(width: 640, height: 480))。希望这能解决你的问题! - nerk
2
另外请注意,在最近版本的SceneKit中,使用SKSceneSKVideoNode播放视频是不必要的。您可以直接将AVPlayer设置为SCNMaterialProperty实例的内容。 - mnuages

2

我曾经遇到过完全相同的问题。通过在创建Sprite Kit场景时设置大小来解决了这个问题: let spriteKitScene = SKScene(size: CGSize(width: 640, height: 480))

希望这能解决你的问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接