我正在使用带有ARKit的SceneKit,现在有一个简单的应用程序,我点击屏幕,它会在我的场景中添加一个ARAnchor和一个SCNNode。
在某些时候,我想要移动整个场景,所以我尝试更改sceneView.scene.rootNode.position.x += 10
来测试它。如果我在任何特定节点上调用它,该节点确实会正确移动。但是在rootNode
上调用它,没有任何反应,我希望每个子节点(场景中的每个节点)都随之移动。
为什么我的其他节点没有正确移动,我能做些什么来解决这个问题?或者我在考虑这个错误?
答案 0 :(得分:13)
根据SCNScene.rootNode的文档:
您不应修改根节点的
transform
属性。
根节点定义世界坐标系的原点 - 所有其他测量都与它相关。因此,改变其位置,方向,比例或其变换的任何其他方面是没有意义的(并且通常是有问题的)。
如果要移动SceneKit场景中的所有内容,请创建一个新节点以包含所有其他节点,并更改该节点的变换。 (你不能为ARSCNView
添加的节点执行此操作,因为ARKit会生成根节点的直接子节点,但这些节点的重点是将它们放在世界空间中。)