假设我有2个节点1和节点2。
我希望node1的位置SCNNodes
我希望node2的位置node1.position = SCNVector3(0, 0, 0)
现在,我想让node2绕node1旋转。因此,我尝试这样做,node2.position = SCNVector3(0, 0, 1)
。
这就提供了it,它绕着node1旋转,如果我将node2旋转Pi/2,那么它就在节点的顶部,也就是说,如果我旋转node2.pivot = self.phone.pivot = SCNMatrix4MakeTranslation(0, 0, -1)
它实际上就在node1的顶部。
在ndo2围绕node1旋转的地方,如何获取它?
编辑1:
self.container = SCNNode()
self.container.position = SCNVector3(0, 0, 0)
self.node2 = SCNNode(geometry: geom2)
self.node2.position = SCNVector3(0, 0, 1)
self.container.addChildNode(self.node2)
let constraint = SCNLookAtConstraint(target: self.node2)
constraint.isGimbalLockEnabled = false
self.node1 = SCNNode(geometry: geom)
self.node1.position = SCNVector(0, 0, 0)
self.node1.constraints = [constraint]
Node1不动,node2不动。也就是说,node2将始终处于
node1.rotate(Double.pi/2, 0, 0)
位置,因为容器是唯一旋转的对象。 最佳答案
如果您根本不想处理pivot
元素,请使用节点层次结构。
像这样的事情应该行得通
- node1
|
| - rotation center
| - node 2
然后旋转旋转中心,而不是直接旋转节点2。由于节点总是围绕其坐标中心旋转,并且节点的坐标空间总是相对于其父节点的,所以这样做很好。
关于swift - SCNNode枢轴位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53551009/