我想使用核心动作来控制使用欧拉角度的cameraNode视图。它工作在初始位置,但是当我将视图更改为右侧或左侧时。滚动值似乎是错误的。
这是迄今为止的代码......
{{#each model.data.details as |data index| }}
<li>{{get this (concat "model.data.group." index ".group")}} {{data.name}} -- {{data.age}} </li>
{{/each}}
感谢任何建议!
答案 0 :(得分:1)
不要试图使用eulerAngles那些会导致你的问题,例如gimbal lock
正确的方法是留在quaternions
的范围内我假设您正在使用横向模式 - 否则您需要更改SCNVector4
let attitude = data.attitude.quaternion
let aq = GLKQuaternionMake(Float(attitude.x), Float(attitude.y), Float(attitude.z), Float(attitude.w))
let cq = GLKQuaternionMakeWithAngleAndAxis(Float(Float.pi/2), 0, 1, 0)
let q = GLKQuaternionMultiply(cq, aq)
self?.cameraNode.orientation = SCNVector4(x: -q.y, y: q.x, z: q.z, w: q.w)