使用Scenekit,我如何获得身份四元数?

时间:2017-09-08 15:41:21

标签: alignment constraints linear-algebra scenekit quaternions

啊,继续吧。

我想创建SCNTransformConstraint方向约束,以便SCNNode始终面向世界的x,y& z轴,无论节点的父母如何定向/移动。

我可以创建一个在世界空间中工作的方向约束,如下所示:

let orientationConstraint = 
SCNTransformConstraint.orientationConstraint(inWorldSpace: true) {
  (node, orientation) -> SCNQuaternion in
  return <<<need quaternion identity here>>>
}

node.constraints = [orientationConstraint]

但我需要通过约束回调来提供multiplicative identity四元数。使用quaternions to describe orientation and rotation作为场景工具包时,四元数标识表示无旋转。或者世界坐标中与世界一致的方向。

这类似于按1缩放给出相同比例的方式。将比例设置为1会重置某些内容以使其无法缩放。

对于场景工具包矩阵,有SCNMatrix4Identity。或者,场景工具包向量的附加标识:SCNVector3Zero

如何获取乘法的四元数标识?

1 个答案:

答案 0 :(得分:0)

似乎没有SCNQuaternionIdentity

可以使用SCNQuaternion(0, 0, 0, 1)构建标识四元数。

注意不要使用默认构造函数SCNQuaternion()。它相当于SCNQuaternion(0, 0, 0, 0),它不代表有效的方向。

相关问题