首页 文章

如何将 SCNNode 作为子项添加到父级而不更改世界坐标中的相对位置,大小和比例

提问于
浏览
0

我有两个 SCNNode,nodeChnodePrnt。他们的世界坐标是可用的,他们的相对 position/size/angle 应保持不变。

我想通过使用- (void)addChildNode:(SCNNode)方法将nodeCh添加到nodePrnt作为孩子。为了做到这一点,我应该根据nodePrnt的相对 position/scale/rotation 来翻译世界 coordinates/size/angles,以便相对于将两个节点作为子节点添加到scene.rootNode的情况相比,相对 positions/scale/sizes 不会改变。

显然,我必须使用一些变换运算符的组合。目前我使用以下不正确的行:

SCNMatrix4 transform
    = [self.nodePrnt convertTransform:SCNMatrix4Identity
                              fromNode:nil];

nodeChld.transform = transform;

1 回答

  • 2

    转换工具确实是你需要使用的。在你的情况下:

    nodeCh.transform = [nodePrnt convertTransform:SCNMatrix4Identity fromNode:nodeCh];
    

    要么

    nodeCh.transform = [nodeCh convertTransform:SCNMatrix4Identity toNode:nodePrnt];
    

相关问题