如何在 iOS 11 中将 SKVideoNode 添加到 ARKit-SceneKit?
Posted
技术标签:
【中文标题】如何在 iOS 11 中将 SKVideoNode 添加到 ARKit-SceneKit?【英文标题】:How to add SKVideoNode to ARKit-SceneKit in iOS 11? 【发布时间】:2018-04-22 08:38:40 【问题描述】:有没有办法将 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)
【问题讨论】:
【参考方案1】:SKNode
不是supported types for SceneKit material property contents 之一。也不是它的任何子类。
如果您想将 SpriteKit 内容映射到 SceneKit 材质,方法是将SKScene
设置为材质属性内容。然后,该场景可以包含任意数量或类型的 SpriteKit 节点。
【讨论】:
你能分享一些示例代码吗?我尝试实施您提到的方式,但视频显示不正确。它只是闪烁并显示一些颜色,而不是实际的视频。它看起来像是在后台播放视频,但上面应用了一个图层,因此模糊了整个视频。 显示该代码。屏幕抓住了问题。 Rickster 是人,但不要以为他是读心者。 @yaali 我遇到了完全相同的问题。通过在创建 Sprite Kit 场景时设置大小来修复它:let spriteKitScene = SKScene(size: CGSize(width: 640, height: 480))
我希望能解决您的问题!
另请注意,在最新版本的 SceneKit 中,使用 SKScene
和 SKVideoNode
并不是播放视频所必需的。您可以直接将AVPlayer
设置为SCNMaterialProperty
实例的内容。【参考方案2】:
我遇到了完全相同的问题。通过在创建 Sprite Kit 场景时设置大小来修复它:
let spriteKitScene = SKScene(size: CGSize(width: 640, height: 480))
希望能解决您的问题!
【讨论】:
以上是关于如何在 iOS 11 中将 SKVideoNode 添加到 ARKit-SceneKit?的主要内容,如果未能解决你的问题,请参考以下文章
SKVideoNode(嵌入在 SKScene 中)作为 Scene Kit Node 的纹理不起作用