Swift SceneKit:对SCNNode应用多个旋转,但保持原始轴不变

Swift SceneKit:对SCNNode应用多个旋转,但保持原始轴不变,swift,scenekit,arkit,Swift,Scenekit,Arkit,在我的场景中,每个SCNNode都有3个与之关联的横摇、俯仰和偏航值 加载SCNNode时,我希望按顺序应用这3个旋转。但是,这3个值假设节点的轴始终不变,并且我遇到了问题,因为节点的轴在每次旋转后都会发生变化 例如,如果z轴最初指向用户(屏幕外),y轴最初指向上,并且我应用90度滚动旋转,则z轴仍将指向屏幕外,但y轴现在将指向左侧。这将导致随后的偏航旋转不正确 有什么方法可以相对于一组恒定的轴旋转节点吗?我需要的是SCNNode方法rotate(by:aroundTarget:) 重要的是你想

在我的场景中,每个SCNNode都有3个与之关联的横摇、俯仰和偏航值

加载SCNNode时,我希望按顺序应用这3个旋转。但是,这3个值假设节点的轴始终不变,并且我遇到了问题,因为节点的轴在每次旋转后都会发生变化

例如,如果z轴最初指向用户(屏幕外),y轴最初指向上,并且我应用90度滚动旋转,则z轴仍将指向屏幕外,但y轴现在将指向左侧。这将导致随后的偏航旋转不正确


有什么方法可以相对于一组恒定的轴旋转节点吗?

我需要的是SCNNode方法rotate(by:aroundTarget:)


重要的是你想要的最终结果。最好的方法是改变操作顺序,即先偏航,然后滚转或俯仰。另一件事是执行一个操作,例如滚动并保存值,然后从所需的轴执行另一个操作并保存值。你的要求是将一个值叠加在另一个值上,我是对的,对我来说,返回起始轴没有意义,我宁愿说更改操作。