gpt4 book ai didi

swift - SCNNode 枢轴位置

转载 作者:行者123 更新时间:2023-11-28 14:01:00 26 4
gpt4 key购买 nike

假设我有 2 个 SCNNodes node1 和 node2。

我希望 node1 的位置为 node1.position = SCNVector3(0, 0, 0)

我希望 node2 的位置为 node2.position = SCNVector3(0, 0, 1)

现在,我希望 node2 围绕 node1 旋转。因此,我尝试这样做,node2.pivot = self.phone.pivot = SCNMatrix4MakeTranslation(0, 0, -1)

这提供了它围绕 node1 旋转的位置,这样如果我将 node2 旋转 Pi/2,那么它就在节点的顶部,即,如果我旋转 node1.rotate(Double.pi/2, 0, 0) 它实际上位于 node1 之上。

我怎样才能得到 ndoe2 围绕 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]

节点 1 永远不会移动,因为节点 2 永远不会移动。即,node2 将始终位于 (0, 0, 1) 位置,因为容器是唯一旋转的东西。

最佳答案

如果您根本不想处理 pivot 元素,请使用节点层次结构。

像这样的东西应该可以工作

- node1
|
| - rotation center
| - node 2

然后旋转旋转中心,不是直接旋转节点2。由于节点始终围绕其坐标中心旋转,并且节点的坐标空间始终相对于其父节点,因此工作正常。

关于swift - SCNNode 枢轴位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com