SCNNode使用SCNVector4
进行旋转,SCNVector4
具有角度(w)和角度如何应用于每个轴(x,y,z)。例如,要围绕x轴旋转45度,我会创建一个SCNVector4Make(1.0f, 0, 0, DEG2RAD(45))
,如下所示:
SCNVector4
我想做的是在所有三个轴上旋转它,例如:x轴为45度,y轴为15度,z轴为-135度。有谁知道计算最终{{1}}的数学?
答案 0 :(得分:9)
使用rotation
并指定每个轴的角度
eulerAngles
属性
答案 1 :(得分:2)
您需要为每个旋转生成SCNVector4,然后将它们相乘。请注意,操作顺序很重要!
http://www.cprogramming.com/tutorial/3d/rotationMatrices.html有很好的数学写法。任何处理旋转矩阵的OpenGL参考也值得一看。
答案 2 :(得分:2)
如果您没有为旋转设置动画,则直接设置变换矩阵可能更简洁,例如:
node.transform = CATransform3DRotate(CATransform3DRotate(CATransform3DRotate(node.transform, xAngle, 1, 0, 0), yAngle, 0, 1, 0), zAngle, 0, 0, 1);
答案 3 :(得分:2)
您是否要求旋转矩阵或如何简单地旋转?如果第二个是正确的,那么例如:
[node runAction:[SCNAction rotateByX:0 y:M_PI z:0 duration:0]];