Matrixrotation falsche Ausrichtung LibGDX

7

Ich habe ein Problem mit der Matrixrotation in libgdx. Ich drehe es mit der Methode matrix.rotate (Vector3-Achse, Gleitwinkel), aber die Drehung erfolgt in der Modellorientierung und ich brauche sie in der Weltorientierung.

Zum Beispiel:

on create () Methode:

matrix.rotate (neuer Vektor3 (0,0,1), 45);

Geben Sie hier die Bildbeschreibung ein

Das ist ok, aber danach:

on render () Methode:

matrix.rotate (neuer Vektor3 (0,1,0), 1);

Geben Sie hier die Bildbeschreibung ein

Ich muss es in der Weltachse drehen.

glz
quelle
Transformieren Sie die Rotationsachse von Modellkoordinaten in Weltkoordinaten.
Dashto

Antworten:

0

Sie müssen zuerst die Weltachse in das Koordinatensystem Ihres Modells transformieren. Sie können dies tun, indem Sie die aktuelle Transformationsmatrix des Modells durch Multiplikation auf den Achsenvektor anwenden. wie so:

matrix.rotate(axis.mul(matrix), angle);
d3dave
quelle
0

Sie müssen den Weltraumrotationsvektor in den Modellraum umwandeln, bevor Sie die Rotation anwenden. Vektoren werden mit inverser Transponierung der Matrix transformiert, dh v '= Transponierung (invers (M)) * v

Da Modelle im Allgemeinen Modell-> Weltmatrix definieren, müssen Sie diese invertieren, um Welt-> Modellmatrix zu erhalten. Sie müssen also v '= transponieren (invers (invers (model_to_world))) * v = transponieren (model_to_view) * v berechnen, bevor Sie die Drehung anwenden. Beachten Sie auch, dass die w-Komponente des Vektors 0 sein muss

JarkkoL
quelle