SceneKit-Orbitaltransformationen

Nachdem ich mit SceneKit angefangen habe, ist bisher alles gut gelaufen, bis ich auf Transformationen gestoßen bin und dachte, es wäre wie CA3d * -Transformationen auf Ebenen.

Es scheint jedoch, dass ich völlig falsch liege und die Transformation in Bezug auf die Funktionsweise der Z-Achse ganz anders funktioniert.

Zum Beispiel versuche ich, eine Bewegung im 3D-Orbitalstil zu erreichen, die einem Karussell-Look ähnelt. Dieser CA3D-Code funktioniert hervorragend, um dies zu erreichen:

var trans = CATransform3DIdentity
trans = CATransform3DRotate(trans, deg * (Float(M_PI)/180), 1, 1, 0)
trans = CATransform3DTranslate(trans, 0, 0, 100)
layer.transform = trans

Wenn Sie es auf mehrere Objekte mit unterschiedlichen "Grad" -Werten anwenden, erhalten Sie einen schönen kreisförmigen 3D-Orbit-Look.

Dasselbe mit SceneKit führt zu einem anderen Ergebnis:

var trans = SCNMatrix4Identity
trans = SCNMatrix4Rotate(trans,Float(angleTemp*(M_PI/180)), 1, 1, 0)
trans = SCNMatrix4Translate(trans, 0, 0, 100)
node.transform = transform

Tatsächlich ändert und verschiebt sich die Z-Wert-Achse nach der Drehung auf der Grundlage der in CAT3D + -Layern angewendeten Drehung. In SceneKit ist die Z-Achse jedoch immer konstant, sodass die Verschiebung sie nur alle zusammen verschiebt, sodass Sie nur einen Squash erhalten aussehen.

Ich verstehe, dass dies im wahren 3D-Raum funktioniert, aber jetzt muss ich anscheinend mit Sphereical- und Ellipse-Mathematik arbeiten, um dasselbe zu tun.

So kann mir jemand Tipps geben, wie ich das tun soll, was ich versuche? Ich experimentiere jetzt mit sphärischer Mathematik und benutze SCNMatrix4Translate, aber ich habe die Mathematik noch nicht ganz richtig verstanden.

Ich denke, was ich brauche, sind Formeln, um xyz für eine Ellipse zu berechnen, ich bin nach etwas sehr ähnlichem:

http://en.wikipedia.org/wiki/Ellipse#mediaviewer/File:Conicas1.PNG

Diese Art von Umlaufbahn kann mit dem obigen CAT3D-Snippet auf Ebenen erreicht werden.

So lang, um es kurz zu machen, ich brauche ein Orbital-Layout wie das obige Bild und brauche Hilfe mit SceneKit und / oder Geometrie-Mathematik. Das gesamte Objekt sollte sich wie eine Umlaufbahn um einen Mittelpunkt drehen

Antworten auf die Frage(0)

Ihre Antwort auf die Frage