Я работаю над проектом 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))
В этом случае кажется, что анимация не учитывает текущее вращение узла, а использует исходное, что сводит на нет мои настройки.
Я что-то не так делаю?
Как установить вращение начального объекта перед анимацией другого вращения?