tob*_*oor 5 objective-c ios scenekit swift
我有2个SCNViews彼此相邻,两个应该显示相同的场景,但通过不同的相机.在我看来,Scene Kit使用该节点与节点层次结构中最高的相机,所以我尝试了类似的东西
leftSceneView.scene?.rootNode.addChildNode(scene.rootNode)
rightSceneView.scene?.rootNode.addChildNode(scene.rootNode)
leftSceneView.scene?.rootNode.addChildNode(cameraNodeLeft)
rightSceneView.scene?.rootNode.addChildNode(cameraNodeRight)
Run Code Online (Sandbox Code Playgroud)
但我得到了错误信息[SCNKit ERROR] removing the root node of a scene from its scene is not allowed,它根本不起作用.
有人建议我如何实现这一目标吗?
托比
小智 12
这个答案对于这个问题(由@WolfLink提到),其具有不同的相机显示相同SCNScene多个SCNView对象导致整个更新顺序发生多次.
要解决此问题,您只需将SCNSceneRendererDelegate设置为仅使用的一个 SCNView对象.假设代理正在处理SCNScene中的所有节点并相应地更新它们,那么没有指定委托的其他SCNView对象仍然可以看到发生的所有更改.这是因为更改在实际的SCNScene中更新,所有SCNView对象都连接到该SCNScene.
因此,使用@Toyos的原始答案,使用2台摄像机而不会导致整个更新序列触发两次的方法是:
// Set up sceneView 1
sceneView1.scene = scnScene
sceneView1.pointOfView = scnScene.camera1
sceneView1.delegate = scnScene
// Set up sceneView 2
sceneView2.scene = scnScene
sceneView2.pointOfView = scnScene.camera2
Run Code Online (Sandbox Code Playgroud)
(声明:我打算通过@Toyos答案发表评论,但我目前还没有对足够的声誉,因为我仍然是新来的StackOverflow的社区).
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |