2016-03-31 15 views
3

Ich bin mir der Existenz von SCNLookAtConstraint in SceneKit bewusst. Diese Methode ist jedoch nicht das, wonach ich suche.LookAt Kameramethode? NICHT SCNLookAtConstraint

Was ich brauche, ist in der Lage, die Kamera zu einem bestimmten Zeitpunkt auf einen Punkt (keinen Knoten) im Raum zu richten.

Mit einem X, Y, Z in Weltkoordinaten muss die Kamera so gedreht werden, dass sie auf diesen Punkt zeigt.

Die Punkte werden sich im Laufe der Zeit ändern (das bedeutet, dass verschiedene Punkte an eine Methode übergeben werden, ich muss von einem zum anderen "springen").

Ich würde lieber EulerAngles berechnen, einige Lösungen, die ich gesehen habe, basieren auf trigonometrischen Funktionen und cos (Winkel) im Nenner. Der Benutzer kann sich grundsätzlich frei drehen, indem er den cameraNode zieht.

Irgendeine Methode, die ich in SceneKit dafür fehlt?

Antwort

3

Es scheint mir, dass die Verwendung eines Knotens als Ziel der einfachste Weg ist. Wenn Sie einen leeren Knoten erstellen (keine Geometrie oder Kamera oder Licht), ist er nicht sichtbar und Sie können die höchsten verfügbaren Abstraktionen verwenden, die Ihnen das Framework bietet. Bewegen Sie den Knoten von Punkt zu Punkt, mit Animation oder mit abrupten Sprüngen.

+0

Danke Hal, das war es für mich –

3

Die GLKMatrix4 Methoden können hier von Interesse sein, speziell GLKMatrix4MakeLookAt.

Mit einer Augenposition (Kamera), einer Position, die Sie betrachten möchten, und einem Aufwärtsvektor können Sie eine Transformationsmatrix erstellen (als GLKMatrix4). Die Scenekit-Funktion SCNMatrix4FromGLKMatrix4 übersetzt diese dann in eine SCNMatrix4, die Sie als Transformation Ihres Kameraknotens festlegen können.

TBH, würde ich wahrscheinlich mit Hal-Lösung gehen.