ios - 在 SceneKit 中将全局节点位置转移到本地节点位置

标签 ios swift scenekit

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

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

我知道它与 convertPosition 有关,但我找不到任何有助于我理解它的引用。

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

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

干杯

最佳答案

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

  1. nodeA 的父坐标系

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

  2. 或者世界坐标系

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

当然可以将nodeB1.parentNode替换为nodeB,此时nodeA的parent就是根节点

关于ios - 在 SceneKit 中将全局节点位置转移到本地节点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28064427/

相关文章:

iphone - CoreData - 关系的一侧始终为零

ios - Core Image 渲染缓慢

ios - 防止iOS泄漏mmap上的内存(也是:mach_vm_map)

swift - 将数据从 TableView 传递到 PageViewController 包含的 View

swift - "Ambiguous use of ' propertyName '"错误给出了 didSet 观察者覆盖的属性

ios - 我正在尝试从 Swift subreddit 解析 JSON。为什么我有问题?

ios - Alamofire - 如何获取表中的记录数

scenekit - 如何更新 SceneKit 游戏中的 GameplayKit 实体和组件

swift - 通过 Swift 设置 ARKit 方向

macos - SceneKit:是否可以在透明对象上转换阴影?