啊,继续吧。
我想创建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
。
如何获取乘法的四元数标识?
答案 0 :(得分:0)
似乎没有SCNQuaternionIdentity
。
可以使用SCNQuaternion(0, 0, 0, 1)
构建标识四元数。
注意不要使用默认构造函数SCNQuaternion()
。它相当于SCNQuaternion(0, 0, 0, 0)
,它不代表有效的方向。