Swift SCNNode旋转多轴

Swift SCNNode旋转多轴,swift,rotation,scnnode,Swift,Rotation,Scnnode,这是张贴,但从来没有回答 类似于,我试图将SCNNode.rotation理解为4D向量。前面的问题使用了一个仅操纵一个轴的示例,即: SCNNode.rotation = (0, 0, 1, degToRad(45)) //Rotate about z-axis by 45 degrees 这是有道理的;但是,如果我想将X轴旋转20度,Y轴旋转45度,然后Z轴旋转78度,该怎么办 SCNNode.rotation = ?? 我会提供我尝试过的代码,但我不理解4D旋转向量的概念 每个节点都有

这是张贴,但从来没有回答

类似于,我试图将
SCNNode.rotation
理解为4D向量。前面的问题使用了一个仅操纵一个轴的示例,即:

SCNNode.rotation = (0, 0, 1, degToRad(45)) //Rotate about z-axis by 45 degrees
这是有道理的;但是,如果我想将X轴旋转20度,Y轴旋转45度,然后Z轴旋转78度,该怎么办

SCNNode.rotation = ??

我会提供我尝试过的代码,但我不理解4D旋转向量的概念

每个节点都有一个4x4矩阵的变换。因此,所有旋转操作都反映在变换的变化中

在这种情况下,如果更改旋转、欧拉角和方向中的任何一个,则应获得相同的值

如果绕三个轴旋转,我建议使用eulerAngles

node.eulerAnges=scinvector3(x:degToRad(20),y:degToRad(45),z:degToRad(78))

设置此选项后,返回并检查旋转值:

scinvector4(x:0.16975601,y:0.5943193,z:0.786109,w:1.448788)


这意味着有一个轴穿过点(-0.16975601,0.5943193,0.786109)和原点(0,0,0),节点围绕它旋转1.448788(82度)。

只要读另一篇帖子说使用
eulerAngles
更容易。谢谢你
eulerAngles
对我来说太明显了,我很难快速想出lol。