啊,然后继续。
我想创建一个SCNTransformConstraint
方向约束,以便始终将SCNNode
定向到世界X,y&z轴,无论节点的父母如何定向/移动。
我可以在这样的世界空间中创建一个方向约束:
let orientationConstraint =
SCNTransformConstraint.orientationConstraint(inWorldSpace: true) {
(node, orientation) -> SCNQuaternion in
return <<<need quaternion identity here>>>
}
node.constraints = [orientationConstraint]
,但是我需要通过约束回调来提供乘法标识四基因。当使用四元素描述方向和旋转为场景套件时,四元素身份表示没有旋转。或与世界保持一致的世界坐标的方向。
这类似于缩放1给出相同比例的方式。并设置一个比例为1重置没有缩放的东西。
对于场景套件矩阵,有SCNMatrix4Identity
。或者,场景套件矢量的加法身份: SCNVector3Zero
。
如何获得乘法的四元素身份?
似乎没有SCNQuaternionIdentity
。
可以使用SCNQuaternion(0, 0, 0, 1)
构建身份四基因。
请注意不要使用默认的构造函数SCNQuaternion()
。它等效于SCNQuaternion(0, 0, 0, 0)
,它不代表有效的方向。