“在另一个场景的渲染回调中修改了场景。” 如何解决这个错误?

Tin*_*loy 5 scenekit swift arkit

我正在使用ARKit图像跟踪配置,一旦检测到图像,图像上将弹出3D场景。

但是,当我设置两个不同的图像来触发两个不同的场景文件时,一个图像始终在同一图像上弹出两个不同的场景文件。我很确定图像是不同的,名称是不同的,场景文件是不同的,场景的内容也是不同的。

一旦检测到图像,控制台中还将弹出以下错误:[SceneKit]错误:在另一个场景()的渲染回调中修改了场景。不允许这样做,可能导致崩溃

此错误有任何原因和解决方案吗?

Die*_*sco 9

我在图像跟踪中使用 ARKit 2 也有同样的错误。经过几个小时的尝试,我找到了解决方案。显然,您需要在后台线程中创建节点才能使用场景。这是我的代码:

DispatchQueue.main.async {
        if let imageAnchor = anchor as? ARImageAnchor {

            let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
            plane.firstMaterial?.diffuse.contents = UIColor(white: 1.0, alpha: 0.5)

            let planeNode = SCNNode(geometry: plane)
            planeNode.eulerAngles.x = -.pi
            node.addChildNode(planeNode)

            ...
        }
    }
Run Code Online (Sandbox Code Playgroud)


And*_*vak 0

我收到此错误是因为我正在调用scene.isPaused = false,并且删除该行消除了控制台错误。您是否对您的 进行任何修改SCNScene?这将是开始隔离错误源的好地方。