SceneKit节点不会改变场景的根节点的位置

时间:2017-06-29 21:54:57

标签: ios scenekit scnnode arkit aranchor

我正在使用带有ARKit的SceneKit,现在有一个简单的应用程序,我点击屏幕,它会在我的场景中添加一个ARAnchor和一个SCNNode。

在某些时候,我想要移动整个场景,所以我尝试更改sceneView.scene.rootNode.position.x += 10来测试它。如果我在任何特定节点上调用它,该节点确实会正确移动。但是在rootNode上调用它,没有任何反应,我希望每个子节点(场景中的每个节点)都随之移动。

为什么我的其他节点没有正确移动,我能做些什么来解决这个问题?或者我在考虑这个错误?

1 个答案:

答案 0 :(得分:13)

根据SCNScene.rootNode的文档:

  

您不应修改根节点的transform属性。

根节点定义世界坐标系的原点 - 所有其他测量都与它相关。因此,改变其位置,方向,比例或其变换的任何其他方面是没有意义的(并且通常是有问题的)。

如果要移动SceneKit场景中的所有内容,请创建一个新节点以包含所有其他节点,并更改该节点的变换。 (你不能为ARSCNView添加的节点执行此操作,因为ARKit会生成根节点的直接子节点,但这些节点的重点是将它们放在世界空间中。)