gpt4 book ai didi

ios - Scenekit - SCNNode 的多次旋转和轴的方向

转载 作者:行者123 更新时间:2023-11-28 08:01:07 25 4
gpt4 key购买 nike

我有一个 SCNNode,我用平移手势继续旋转 90 度增量。前几次旋转按预期工作,在节点轴沿相反方向旋转的情况下,旋转以错误的方向执行。如何确定每次旋转后轴的方向?

场景(为简单起见使用立方体):

  • 我将立方体沿 Y 轴旋转 90 度。 Y 仍然指向上方,X 现在指向相机,Z 指向右侧
  • 我再次沿 Y 旋转立方体 90 度。X 现在指向左侧,Z 指向相机
  • 问题 - 我现在尝试沿 X 轴旋转 90 度。因为 X 旋转了 180 度,所以旋转现在反转了。

我如何理解何时旋转 (-1,0,0) 以及何时旋转 (1,0,0)?

我是 3D 数学世界的新手,我希望我能正确解释我的问题。

最佳答案

经过进一步研究,我意识到我选择了完全错误的方法。实现我想要的方法是使用 rootNode 的轴旋转节点 - 这样我就不需要担心节点的局部轴。

编辑:根据 Xartec 的建议更新代码

let rotation = SCNMatrix4MakeRotation(angle,  x, y, Float(0))
let newTransform = SCNMatrix4Mult(bricksNode.transform, rotation)
let animation = CABasicAnimation(keyPath: "transform")
animation.fromValue = bricksNode.transform
animation.toValue = scnScene.rootNode.convertTransform(newTransform,from: nil)
animation.duration = 0.5
bricksNode.addAnimation(animation, forKey: nil)

关于ios - Scenekit - SCNNode 的多次旋转和轴的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46680409/

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