gpt4 book ai didi

ios - 如何在 Scene Kit 中对同一场景使用多个摄像头

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:12 27 4
gpt4 key购买 nike

我有 2 个彼此相邻的 SCNView,它们应该通过不同的相机显示相同的场景。在我看来,Scene Kit 将该节点与节点层次结构中最高的相机一起使用,所以我尝试了类似的方法

    leftSceneView.scene?.rootNode.addChildNode(scene.rootNode)
rightSceneView.scene?.rootNode.addChildNode(scene.rootNode)

leftSceneView.scene?.rootNode.addChildNode(cameraNodeLeft)
rightSceneView.scene?.rootNode.addChildNode(cameraNodeRight)

但我收到错误消息[SCNKit ERROR] 不允许从场景中删除场景的根节点,它根本不起作用。

有人建议我如何实现吗?

托比

最佳答案

这个答案是关于(@WolfLink 提到的)具有多个 SCNView 对象的问题,不同的相机显示相同的 SCNScene 会导致整个更新序列发生多次。

要解决此问题,您只需将 SCNSceneRendererDelegate 设置为 仅一个 使用的 SCNView 对象。假设代理正在处理 SCNScene 中的所有节点并相应地更新它们,其他没有分配代理的 SCNView 对象仍然能够看到所有发生的更改。这是因为更改是在所有 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

(免责声明:我本来打算对@Toyos 的回答发表评论,但我目前还没有足够的声誉,因为我对 StackOverflow 社区还是个新手)。

关于ios - 如何在 Scene Kit 中对同一场景使用多个摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27734107/

27 4 0
文章推荐: ios - Swift:一个数组中的不同对象?
文章推荐: ruby-on-rails - 在没有 root 访问权限的服务器上使用 Django(或 Ruby on Rails)?
文章推荐: javascript - Vue 2 - 如何在从数据库中获取数据后选择正确的