详细解释ScnVector4方法

3

我长期使用3ds max,熟知xyz轴。在xcode中旋转scnnode时,让我感到困惑的是scnvector4的w分量。

有人能详细解释如何使用这种方法吗?因为我搜索了很多次,但无法使我的对象像我想象的那样旋转。任何人都可以帮助将其旋转180度到背面,但如果有人能进一步解释更多旋转方面的知识,我会非常感激。我看过这个链接,但是有些地方我不理解。

http://www.cprogramming.com/tutorial/3d/rotationMatrices.html

2个回答

7

我相信您正在尝试旋转节点 (rotation 属性)。

根据文档:

四维旋转向量的前三个分量指定旋转轴的方向,第四个分量指定旋转角度(以弧度为单位)。

您可能会发现使用 eulerAngles 更容易:

节点的方向,表示为俯仰角、偏航角和滚动角,每个角度都以弧度为单位。


1
使用 .transform 旋转一个节点。
node.transform = SCNMatrix4Mult(node.transform, SCNMatrix4MakeRotation(angle, x, y, z))

如果你想通过x轴将节点旋转180度

node.transform = SCNMatrix4Mult(node.transform, SCNMatrix4MakeRotation(Float(M_PI), 1, 0, 0))

我该如何制作动画?我能做到吗? - Amit Kalra
根据您的需求,使用Scenekit进行动画制作有几种方法。最强大的是使用动画播放器(查找SCNAnimationPlayer),但在大多数实时情景中,只需将赋值包装在动画事务中即可。SCNTransaction.begin() SCNTransaction.animationDuration = 5 node.transform = SCNMatrix4Mult(node.transform, SCNMatrix4MakeRotation(Float(M_PI), 1, 0, 0)) SCNTransaction.commit()如果您想让所有内容都一直处于动画状态,则只需设置持续时间,而无需做任何其他操作。 - Morten J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接