假设我有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/

10-10 20:43