SCNNode旋转多轴

时间:2019-01-31 13:55:40

标签: swift rotation scnnode

Question已发布,但从未回答。

This Question类似,我试图将SCNNode.rotation理解为4D向量。先前的问题采用了仅操纵1条轴的示例,即

SCNNode.rotation = (0, 0, 1, degToRad(45)) //Rotate about z-axis by 45 degrees

这很有意义;但是,如果我想将X轴旋转20度,将Y轴旋转45度,然后将Z轴旋转78度怎么办?

SCNNode.rotation = ??

我将提供我尝试过的代码,但我在概念上不了解4D旋转矢量的概念。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

这意味着存在一条穿过点(-0.16975601、0.5943193、0.786109)和原点(0,0,0)的轴,并且节点围绕该轴旋转了1.448788(82度)。