【问题标题】:Transfer global to local node position in SceneKit在 SceneKit 中将全局转移到本地节点位置
【发布时间】:2015-03-19 19:23:06
【问题描述】:

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

我的问题是:我怎样才能反过来转换它? (由于旋转,子节点的 x/y/z 轴可能会改变)。

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

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

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

干杯

【问题讨论】:

  • 请看看这个出色的答案:SKNode convertPoint toNode & fromNode confusion?
  • @SebastianDressler 这个问题是关于 Sprite Kit 的,这是关于 Scene Kit 的。
  • @DavidRönnqvist 虽然你完全正确,但 IMO 它仍然是相关的。

标签: ios swift scenekit


【解决方案1】:

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

  1. nodeA 的父级坐标系

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

  2. 或世界坐标系

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

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

【讨论】:

    猜你喜欢
    • 2018-11-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2021-08-17
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多