SCNAction.rotateTo mulai berputar ketika ditulis secara terprogram menggunakan ARKit - Scenekit

Saya menggunakan ARKit - Scenekit untuk membuat aplikasi berbasis AR. Saya berhasil menempatkan model 3D. Pada ketukan pengguna saya mencoba memutar node tertentu sebesar -120 derajat menggunakan metoderotateTo. Idealnya ini menyebabkan animasi rotasi yang mulus. Namun node tersebut malah berputar mengelilingi objek dengan sangat cepat dan akhirnya berakhir pada -120 derajat. Ketika saya mencoba melakukan hal yang sama secara langsung di editor adegan dengan tindakan memutar ke drag-drop, itu berfungsi dengan baik. Hanya ketika saya mencoba melakukan ini secara terprogram, itu mulai berputar sangat cepat dan saya bahkan tidak dapat melihat pratinjau rotasinya.

Di bawah ini adalah kode yang saya gunakan untuk memutar node,

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

Sudut awal simpul adalah (0,0,0). Saya mencoba mengubahnya ke (0,0,-120). Adakah yang bisa memberi tahu saya apa masalahnya di sini?


person yaali    schedule 06.12.2017    source sumber


Jawaban (1)


Editor scenekit menggunakan derajat, tetapi SCNAction.rotateTo mengharapkan sudut dalam radian.

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