【发布时间】:2019-05-12 10:50:10
【问题描述】:
我遇到了 ARKit/SceneKit 崩溃。
如果我执行以下操作,就会发生这种情况:-
- 创建 SCNPlane 并将 SCNMaterialProperty 设置为 SpriteKit 场景
- 使用 SCNPlane 创建 SCNNode
- 在 ARSCNView 上调用 prepare 并添加 SCNNode。
当我调用准备时它崩溃了。但是,如果我添加 SCNNode 而不调用 prepare 或者 SCNMaterialProperty 不是 SpriteKit 场景,它不会崩溃。
见下面的代码:-
var exhibitScene = SKScene(fileNamed: spriteName.lowercased())
exhibitScene?.view?.preferredFramesPerSecond = 60
exhibitScene?.view?.ignoresSiblingOrder = true
exhibitScene?.scaleMode = .aspectFit
exhibitScene?.isPaused = false
let exhibitSize = CGSize.init(width: (exhibitScene?.frame.size.width)! / PIXEL_TO_CENTIMETRE, height: (exhibitScene?.frame.size.height)! / PIXEL_TO_CENTIMETRE)
let exhibitPlane = SCNPlane(width: exhibitSize.width/100, height: exhibitSize.height/100)
exhibitPlane.firstMaterial?.diffuse.contents = exhibitScene
exhibitPlane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
let exhibitNode = SCNNode(geometry: exhibitPlane)
exhibitNode.name = name
exhibitNode.geometry?.firstMaterial?.isDoubleSided = false
exhibitNode.position = SCNVector3(x/100, (y + Float(exhibitSize.height * 0.5))/100, z/100)
self.sceneView.prepare([exhibitNode], completionHandler: { (Bool) in
self.sceneView.scene.rootNode.addChildNode(exhibitNode)
})
不知道如何解决这个问题。
当 SCNMaterialProperty 设置为使用 SpriteKit 场景时,是否必须在 ARSCNView 上设置参数才能准备 SCNNode?p>
【问题讨论】: