在SceneKit中将全局传输到本地节点位置

时间:2015-01-21 10:07:40

标签: ios swift scenekit

到目前为止,我想出了如何在Swift(worldTransform)中将本地节点位置转换为全局值。

我的问题是:如何以相反的方式转换它? (由于旋转,可能会改变子节点的x / y / z轴。)

我知道它与convertPosition有关,但我无法找到任何可以帮助我理解它的参考。

这就是我想要做的: 节点A是rootNode的子节点,位置为A. 节点B是rootNode的子节点,具有位置B和旋转B. 节点B1是节点B的子节点,其中包含本地坐标。 我想将Node B1移动到Node A的位置并替换它。

如何将节点A的坐标转换为节点B的本地系统?

干杯

1 个答案:

答案 0 :(得分:5)

你必须在nodeB1的父级坐标系中表达新的变换,并从

  1. nodeA父母的坐标系

    nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.transform fromNode:nodeA.parentNode];

  2. 或世界坐标系

    nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.worldTransform fromNode:nil];

  3. 当然,您可以将nodeB1.parentNode替换为nodeB,在这种情况下,nodeA的父级是根节点