Значение поворота узла сбрасывается при анимации - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю над проектом AR и мне нужно расположить некоторые 3D-модели в сцене, когда определенное изображение распознается.
Мне также нужно, чтобы 3d-модели вращались бесконечно вокруг своей оси y, что мне удалось сделатьсо следующим кодом.

let spin = CABasicAnimation(keyPath: "rotation")
spin.fromValue = NSValue(scnVector4: SCNVector4(x: 0, y: 1, z: 0, w: 0))
spin.toValue = NSValue(scnVector4: SCNVector4(x: 0, y: 1, z: 0, w: Float(2 * Double.pi)))
spin.duration = 8
spin.repeatCount = .infinity
modelNode.addAnimation(spin, forKey: nil)

Проблема, с которой я сталкиваюсь, заключается в том, когда я пытаюсь применить эту анимацию вращения к узлу, который был повернут заранее, чтобы установить правильную начальную ориентацию с помощью

modelNode.transform = SCNMatrix4Mult(modelNode.transform, SCNMatrix4MakeRotation(Float(-Double.pi/2), 1, 0, 0))

В этом случае кажется, что анимация не учитывает текущее вращение узла, а использует исходное, что сводит на нет мои настройки.

Я что-то не так делаю?
Как установить вращение начального объекта перед анимацией другого вращения?

...