wie 3D-Rotation um Zentrum in AS3 mit Matrix3D?

8

Ich versuche, einen Sprite in drei Dimensionen um seinen Mittelpunkt zu drehen, und ich bemühe mich, etwas vom Verhalten von matrix3D zu verstehen.

Ich habe die Methoden rotationX, rotationY und rotationZ des Sprite wie folgt überschrieben:

%Vor%

Ich verwende prependTranslation, um den Mittelpunkt der Rotation zu korrigieren, und die erste prependRotation, um eine zuvor angewendete Rotation aufzuheben.

Beim Testen funktioniert rotationX genau wie erwartet und der Sprite rotiert um seine horizontale Achse.

rotationY und rotationZ scheinen ebenfalls gut zu funktionieren. Es gibt jedoch ein Problem: Immer wenn rotationY oder rotationZ gesetzt sind, ändern sich auch alle anderen Rotationswerte. Dies ist kein Problem mit rotationX - wenn ich rotationX setze, ändert sich nichts. Aber wenn ich rotationY oder rotationZ setze, ändern sich alle Rotationswerte, was ein Problem für meine App ist (die versucht, Werte zu speichern und wiederherzustellen).

Ich glaube, mir fehlt einfach etwas Verständnis dafür, was mit matrix3D passiert. Wie kann ich dies implementieren, so dass keine gegenseitige Abhängigkeit zwischen den Werten besteht?

    
Bish 14.12.2009, 22:51
quelle

3 Antworten

3

Eine weitere einfache Lösung besteht darin, das Objekt hinzuzufügen und es in einem Container-Sprite zu zentrieren und die 3D-Transformationen auf dem umgebenden Sprite auszuführen.

    
ezekielDFM 11.08.2010, 19:26
quelle
1

Ich weiß nichts über AS3 usw. Aber wenn ich nur auf Ihren Code schaue, frage ich mich, warum Sie auf der z-Achse übersetzen, wobei ich meine Werte als x und y (Breite und Höhe) verstehe. Sollte die z-Achse nicht mit etwas wie "Tiefe" übersetzt werden?

    
R. Hill 13.07.2010 12:45
quelle
0

Dies ist sehr einfach, Sie können versuchen, den folgenden Code zu verwenden:

%Vor%

Während s dein Sprite ist, gibt der dritte Parameter Vector3D die Mitte deines Sprites an.

Der obige Code lässt die Sprites um -1 Grad rotieren.

    
neugls 03.06.2015 07:17
quelle

Tags und Links