2017-12-06 6 views
0

Ich benutze ARKit - Scenekit, um eine AR-basierte App zu erstellen. Ich kann das 3D-Modell erfolgreich platzieren. Auf Benutzer tippen Ich versuche, einen bestimmten Knoten um -120 Grad mit RotateTo-Methode zu drehen. Dies sollte idealerweise glatte Animationen zum Drehen verursachen. Stattdessen dreht sich der Knoten sehr schnell um das Objekt und endet schließlich bei -120 Grad. Wenn ich versuche, das selbe direkt im Szeneneditor zu tun, indem ich rotateto action drag-drop mache, funktioniert es gut. Nur wenn ich das programmatisch versuche, fängt es an, sich sehr schnell zu drehen und ich kann nicht einmal eine Vorschau der Rotation sehen.SCNAction.rotateTo beginnt zu drehen, wenn programmgesteuert mit ARKit - Scenekit geschrieben

Unten ist der Code i den Knoten zu drehen verwenden,

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

Anfangswinkel des Knotens ist (0,0,0). Ich versuche es zu ändern (0,0, -120). Bitte lassen Sie mich wissen, worum geht es hier?

Antwort

2

Der Scenekit-Editor verwendet Grad, aber SCNAction.rotateTo erwartet den Winkel im Bogenmaß.

let angle = CGFloat(-120.0 * .pi/180) 
let rotateAction = SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2) 
Verwandte Themen