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

Seb*_*ian 4 ios scenekit swift

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

我的问题是:如何将其转换为另一种方式?(由于旋转,可能会改变子节点的x/y/z轴).

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

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

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

干杯

mnu*_*ges 5

你必须在nodeB1父母的坐标系中表达新的变换

  1. 要么nodeA是父母的坐标系

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

  2. 或世界坐标系

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

当然你可以替换nodeB1.parentNodenodeB,在这种情况下nodeA,父节点是根节点