在 SceneKit 中将全局节点位置转移到本地节点位置
Transfer global to local node position in SceneKit
到目前为止,我想出了如何在 Swift (worldTransform) 中将局部节点位置转换为全局值。
我的问题是:如何将它反过来转换? (由于旋转,子节点的 x/y/z 轴可能会改变)。
我知道它与convertPosition有关,但我找不到任何帮助我理解它的参考资料。
这就是我想要做的:
节点 A 是 rootNode 的子节点,位置为 A。
节点 B 是 rootNode 的子节点,具有位置 B 和旋转 B。
节点 B1 是节点 B 的子节点,其内部有局部坐标。
我想将节点 B1 移动到节点 A 的位置并替换它。
如何将节点 A 的坐标转换为节点 B 的本地系统?
干杯
你必须在 nodeB1
的父坐标系中表达新的变换,并从
nodeA
的父坐标系
nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.transform fromNode:nodeA.parentNode];
或世界坐标系
nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.worldTransform fromNode:nil];
当然可以把nodeB1.parentNode
换成nodeB
,此时nodeA
的父节点就是根节点
到目前为止,我想出了如何在 Swift (worldTransform) 中将局部节点位置转换为全局值。
我的问题是:如何将它反过来转换? (由于旋转,子节点的 x/y/z 轴可能会改变)。
我知道它与convertPosition有关,但我找不到任何帮助我理解它的参考资料。
这就是我想要做的: 节点 A 是 rootNode 的子节点,位置为 A。 节点 B 是 rootNode 的子节点,具有位置 B 和旋转 B。 节点 B1 是节点 B 的子节点,其内部有局部坐标。 我想将节点 B1 移动到节点 A 的位置并替换它。
如何将节点 A 的坐标转换为节点 B 的本地系统?
干杯
你必须在 nodeB1
的父坐标系中表达新的变换,并从
nodeA
的父坐标系nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.transform fromNode:nodeA.parentNode];
或世界坐标系
nodeB1.transform = [nodeB1.parentNode convertTransform:nodeA.worldTransform fromNode:nil];
当然可以把nodeB1.parentNode
换成nodeB
,此时nodeA
的父节点就是根节点