# OpenGL TransformationMatrix eines Flugzeugs



## Luecx (26. Jan 2016)

Liebes Forum, 

seit einigen Wochen arbeite ich an einer 3D Engine und sie funktioniert schon echt ziemlich gut.
Ich arbeite mit LWJGL und meine gl_Position berrechne ich: ProjMatrix * ViewMatrix *  TransMatrix * Vec4fPosition

Theoretisch funktioniert alles jedoch will ich jetzt ein Flugzeug einbauen, welches ich mit meiner jetztigen TransformationMatrix nicht berrechnen kann.
Es soll sich rollen können (also entlang der EIGENEN Z Achse sich drehen) .
Es soll sich nach oben und unten drehen können (also entlang der eigenen X Achse) .
und sich ebenfalls um die eigene Y Achse drehen.

jedoch funktioniert dies nicht so wie ich es gern hätte.
Die meisten kennen diese Art von Steuerung bestimmt aus irgendwelchen Spielen o.ä.
und diese muss ich dementsprechend jetzt kopieren.
Ich habe bereits Wikipedia und sämtliche andere Seiten nach einer brauchbaren TransformationMatrix durchsucht, jedoch ohne Erfolg.


```
public Matrix4f createTransformationMatrix() {
        Matrix4f m = new Matrix4f();
        m.setIdentity();


        Matrix4f.translate(this.position, m, m);
       
        Matrix4f.rotate((float)Math.toRadians((this.rotation.x)),  new Vector3f(1,0,0), m, m);
        Matrix4f.rotate((float)Math.toRadians((this.rotation.y)),  new Vector3f(0,1,0), m, m);
        Matrix4f.rotate((float)Math.toRadians((this.rotation.z)),  new Vector3f(0,0,1), m, m);
       
        Matrix4f.scale(this.scalation, m, m);
        return m;
    }
```


So sieht meine jetztige Transformationmatrix aus, ich habe bereits versucht die reihenfolge der Rotationen zu verändern, sogar die Achse um die er dreht zu ändern, jedoch ohne Erfolg.

Hat jemand eine Idee wie ich mein Problem lösen kann ?

schonmal Danke im vorraus !


----------



## Times (26. Jan 2016)

Ich würde fast behaupten das die Erstellung deiner TransformationMatrix richtig ist.
Habe gerade mal bei mir nachgesehen und an sich gibt es da nichts zu diskutieren.. 1 zu 1 - bis auf die Namensgebung.

Habe dann auch direkt mal ein Objekt erstellt (Würfel.. für Flugzeuge ist mein Kreativitätslevel zu niedrig) und es sich um alle Achsen drehen lassen. Funktioniert einwandfrei.

Wenn es sich bei dir um die beiden anderen Achsen dreht ist es vielleicht nur ein visueller Effekt für dich?
Also ist bestätigt das es sich nicht dreht? (Terrain im Hintergrund oder so?!)
Wenn deine ViewMatrix falsch ist und du dich immer auf der Z-Achse mitbewegst dann kann es passieren das du das garnicht erst mitbekommst, dazu müsste sich aber die ViewMatrix deiner Position anpassen.. tut sie das? Also bist "DU" das Flugzeug? .. Das klingt seltsam.. aber "spielst" du das Flugzeug?

Die Projectionmatrix ist es denke ich nicht, aber wenn du magst dann pack deinen Code dazu auch mal hier rein, dann können wir weiter sehen 

Also vielleicht hast du recht das es dann der Transformationmatrix liegt aber dann dürfte sich theoretisch bei mir auch nichts tun!


----------



## Luecx (26. Jan 2016)

Also ja, ich habe es eben grad auch gesehen als ich mir ein Hilfsprogramm dazu gebastelt habe. 
Jedoch drehe ich offensichtlich um die falschen Achsen wenn ich um die ZAchse bereits gedreht habe. 
Ich glaub ich muss einfach eine Möglichkeit finden, Winkel für eine rotation zu bekommen, aus einer TransformationsMatrix, für meine DrehAchsen die sich mit den Winkeln des Flugzeuges drehen. 

Aber vielen Dank für den Tipp und die Hilfe !


----------

