Быстрая SCNAction, поверните на кватернион - PullRequest
0 голосов
/ 17 января 2020

У меня есть плоскость в сцене SceneKit, которой я хочу управлять. Для этого я хочу постоянно обновлять Ориентацию. Из-за особенностей углов Эйлера я использую кватернионы. Пока что я напрямую обновляю planeNode.orientation, и он работает нормально. Единственная проблема заключается в том, что из-за частоты обновления он немного скачет между ориентациями, что выглядит не очень хорошо. Я пытался использовать SCNActions, но проблема в том, что я могу только rotateTo и rotate от Euler Angles. Есть ли способ rotateTo кватернионов?

Любая помощь очень приветствуется! Спасибо!

1 Ответ

0 голосов
/ 23 января 2020

Я решил это путем использования sims_slerp и, следовательно, не обновлял ориентацию непосредственно на новую ориентацию заданного значения, а скорее на ее часть:

let qSlerp = simd_slerp(simd_quatf(quat: self.planeNode.orientation), self.orientationSP!, 0.1)
// UPDATE ORIENTATION TO CLOSEST INTERPOLATION
self.planeNode.orientation = SCNQuaternion(simd_quat: qSlerp)}
...