3

SCNNode 使用 a 进行旋转SCNVector4,它具有角度 (w) 和该角度如何应用于每个轴 (x, y, z) 的大小。例如,要绕 x 轴旋转 45 度,我会创建一个SCNVector4这样的:

SCNVector4Make(1.0f, 0, 0, DEG2RAD(45))

我想做的是在所有三个轴上旋转它,例如:x 轴上 45 度,y 轴上 15 度和 z 轴上 -135 度。有谁知道计算决赛的数学SCNVector4吗?

4

4 回答 4

10

代替rotation属性,使用eulerAngles并指定每个轴的角度

于 2014-10-19T18:27:52.203 回答
2

您需要为每个旋转生成一个 SCNVector4,然后将它们相乘。请注意,操作顺序很重要!

http://www.cprogramming.com/tutorial/3d/rotationMatrices.html有一个很好的数学写作。任何处理旋转矩阵的 OpenGL 参考也值得一看。

于 2013-04-04T19:21:05.117 回答
2

如果您没有为旋转设置动画,则直接设置变换矩阵可能更简洁,例如:

node.transform = CATransform3DRotate(CATransform3DRotate(CATransform3DRotate(node.transform, xAngle, 1, 0, 0), yAngle, 0, 1, 0), zAngle, 0, 0, 1);
于 2014-01-08T13:17:56.233 回答
2

您要求旋转矩阵还是一般如何简单地旋转?如果第二个是正确的,那么例如:

[node runAction:[SCNAction rotateByX:0 y:M_PI z:0 duration:0]];
于 2015-10-29T10:51:03.697 回答