SCNAction.rotateTo начинает вращаться при программном написании с использованием ARKit - Scenekit

Я использую ARKit - Scenekit для создания приложения на основе AR. У меня получается успешно разместить 3D модель. При нажатии пользователем я пытаюсь повернуть конкретный узел на -120 градусов, используя метод rotateTo. В идеале это должно вызвать плавное вращение анимации. Но вместо этого узел очень быстро вращается вокруг объекта и, наконец, заканчивается на -120 градусах. Когда я пытаюсь сделать то же самое прямо в редакторе сцены, перетаскивая действие rotateto, он работает нормально. Только когда я пытаюсь сделать это программно, он начинает очень быстро вращаться, и я даже не могу предварительно просмотреть поворот.

Ниже приведен код, который я использую для поворота узла.

 let rotateAction =  SCNAction.rotateTo(x: 0, y: 0, z: -120, duration: 2)
 self.virtualObjectManager.lastUsedObject?.childNodes[0].childNodes[0].childNodes[0].runAction(rotateAction, completionHandler: {
            })

Начальный угол узла (0,0,0). Я пытаюсь изменить его на (0,0, -120). Кто-нибудь, дайте мне знать, в чем проблема?


person yaali    schedule 06.12.2017    source источник


Ответы (1)


Редактор набора сцен использует градусы, но SCNAction.rotateTo ожидает угол в радианах.

let angle = CGFloat(-120.0 * .pi / 180)
let rotateAction =  SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2)
person James P    schedule 06.12.2017