1

我无法保留删除并添加到rootNode的子节点的位置。父节点和子节点都有一个枢轴平移,我认为这是问题的一部分。我尝试将变换属性设置为worldtransform属性,然后删除节点并将其重新附加到根。但位置略有移动。我尝试删除枢轴变换,将worldtransform添加到根节点并恢复枢轴。有时我认为我已经解决了它,然后一个特定的节点在重新连接为根节点时会跳转。

似乎子节点和父节点的枢轴会影响worldtransform。因此,将父节点排除在等式之外似乎会改变最终位置。

有没有一种方法可以将子节点添加到根节点,同时保持其物理位置/旋转。

任何指针将不胜感激。

4

2 回答 2

1

没有 API 可以做到这一点。但是 SceneKit 公开了转换实用程序,例如-[SCNNode convertTransform:toNode:]-[SCNNode convertPosition:toNode:]

以下可能是您想要的:

node.transform = [node.parentNode convertTranform:node.transform toNode:nil];
[node removeFromParentNode];
[scene.rootNode addChildNode:node];
于 2015-05-03T09:01:29.297 回答
1

我也不明白为什么 worldTransforms 或 worldPosition 将枢轴合并为节点的内部信息。

无论如何,我的解决方案:

MoveNode.transform = [newParentNode convertTransform:MoveNode.transform fromNode:[MoveNode parentNode]];
于 2017-09-14T13:40:57.220 回答