我有两个SCNNode,nodeCh
和nodePrnt
。它们的世界坐标可用,并且它们的相对位置/大小/角度应保持不变。
我想通过使用nodeCh
方法将nodePrnt
作为孩子添加到- (void)addChildNode:(SCNNode)
中。为此,我应该根据nodeCh
的相对位置/比例/旋转来翻译nodePrnt
的世界坐标/尺寸/角度,以便相对位置/比例/尺寸不会发生变化。将两个节点都作为子节点添加到scene.rootNode
的情况。
很显然,我必须使用一些变换运算符的组合。目前,我正在使用以下行,这些行无法正常工作:
SCNMatrix4 transform
= [self.nodePrnt convertTransform:SCNMatrix4Identity
fromNode:nil];
nodeChld.transform = transform;
答案 0 :(得分:2)
转换实用程序确实是您需要使用的。 就您而言:
nodeCh.transform = [nodePrnt convertTransform:SCNMatrix4Identity fromNode:nodeCh];
或
nodeCh.transform = [nodeCh convertTransform:SCNMatrix4Identity toNode:nodePrnt];
答案 1 :(得分:0)
这是一个受SpriteKit启发的快速帮助方法。
Swift 5.2
extension SCNNode {
func move(toParent parent: SCNNode) {
let convertedTransform = convertTransform(SCNMatrix4Identity, to: parent)
removeFromParentNode()
transform = convertedTransform
parent.addChildNode(self)
}
}