我有一个SCNNode,我继续以平移手势旋转90度增量。前几个旋转按预期工作,通过节点轴在相反方向上旋转的情况,旋转以错误的方向执行。如何在每次旋转后确定轴的方向?
场景(为简单起见使用多维数据集):
我如何理解何时旋转(-1,0,0)和何时(1,0,0)?
我对3D数学世界很陌生,我希望我能正确解释我的问题。
答案 0 :(得分:0)
经过进一步的研究,我意识到我选择了完全错误的方法。实现我想要的方法是使用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)