SceneKit在旋转后获取节点位置

Posted

技术标签:

【中文标题】SceneKit在旋转后获取节点位置【英文标题】:SceneKit get node position after rotation 【发布时间】:2018-11-01 04:15:56 【问题描述】:

例如,我有两个 SCNNodes 和 SCNBox 几何图形一个接一个地增加 x 位置属性:

SCNBox(width: 0, height: 0, length: 0.02, chamferRadius: 0)

然后我想使用rotation 属性和SCNVector4 旋转第一个节点,但是当旋转发生时,我希望我的第二个节点跟随第一个节点并根据第一个节点的旋转改变其位置。

我在网上找到this的解决方案,并尝试打印节点的positionworldPositionpresentation.position,但它们的值都是相同的。

有人可以帮我找出旋转后如何获取节点的位置吗?

【问题讨论】:

你想让第二个节点围绕第一个节点旋转吗?就像它在轨道上一样? @SWAT 是的,就像它们只是一个节点一样 您是否将第二个节点设为第一个节点的子节点? 如果 position 和 worldPosition 的值相同,那么您的节点必须是 rootNode 的子节点。使第二个节点成为第一个节点的子节点。当您旋转第一个节点时,您的第二个节点应该围绕第一个节点旋转。 @SWAT 非常感谢你,我实际上已经按照你的建议解决了这个问题。我已将第二个节点作为子视图添加到第一个节点,然后将其位置 SCNVector3Zero 更改为 x 偏移量。 【参考方案1】:

节点的位置在旋转时不会改变。也许您可以考虑使用诸如SCNPhysicsHingeJoint 之类的物理机制来连接节点?我发现这个示例可能对您的场景有用:

http://lepetit-prince.net/ios/?p=3540

另一个例子:

http://appleengine.hatenablog.com/entry/2017/08/17/154852

【讨论】:

以上是关于SceneKit在旋转后获取节点位置的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit 模型的恒定旋转

在 viewDidLoad 期间应用的 SceneKit 节点旋转无效

使用 CAKeyframeAnimation 在 Scenekit 中为旋转节点设置动画

SceneKit 计算具有枢轴的节点的顶点世界坐标

在 Scenekit 中移动相机

从 Scenekit 中的世界变换中提取旋转