3

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

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

为什么我的其他节点没有正确移动,我可以做些什么来解决这个问题?还是我想错了?

4

1 回答 1

13

根据SCNScene.rootNode的文档:

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

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

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

于 2017-06-30T03:55:42.687 回答