Matrizen Beispiele
← Matrizen Spezielle Matrizen | ● | Matrix Berechnen und Setzen Standard-Codesequenz →
Was stellt man jetzt mit den Funktionen an?
Transformation eines Vertex
Erinnerung: Die entgültige Transformation eines Vektors geschieht über die Multiplikation an eine Model-View-Projektion-Matrix:
$ v' = M_{MVP} \cdot v $
Normalerweise wird die Projektions-Matrix immer bis zum Ende getrennt verwaltet, da sie nicht winkelerhaltend ist (Beleuchtung!). Also wird die Projektions- und Model-View-Matrix berechnet:
$ v' = M_{P} \cdot M_{MV} \cdot v $
Berechnen der Projektions-Matrix
Orthographische Projektion:mat4 proj = mat4::ortho (-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);Perspektivische Projektion:
mat4 proj = mat4::perspective (60.0, 1.0, 1.0, 100.0);
Achtung! Die Projektions-Matrix wird GESETZT und nicht rechts an die Matrix multipliziert, da normalerweise keine Operation davor ausgeführt wird.
Berechnen der MV-Matrix
Model-View-Matrix: $ M_{MV} = M_V \cdot M_M $
- Erst die View-Matrix:
vec3 eye (0, 10, 0), center (0, 0, 0), up (0, 0, 1); mat4 mv = mat4::lookat (eye, center, up);
Achtung! Die Projektions-Matrix wird GESETZT und nicht rechts an die Matrix multipliziert, da normalerweise keine Operation davor ausgeführt wird. Die Projektion wird getrennt bis zum Ende der Transformationen weiter geführt.
- Jetzt die Modeling-Matrix:
Man fängt typischerweise links an zu rechnen, und multipliziert neue Matrizen rechts an die bereits berechnete heran. Vorteil: entspricht der inneren Logik (zuerst überlegen, wie man alles projiziert (Projektion), dann wie die Kamera steht (View), dann wo die Objekte stehen (Model), dann erst kümmert man sich um die Objekte selber (weitere Model)).
Verschieben des Objekts (z.B. Teapot) auf eine vernünftige Position:mv = mv * mat4::translate (vec3 (0,0,-1.5));Als letzter Schritt: Rotieren des Objekts:
mv = mv * mat4::rotate (90.0, vec3 (1,0,0));
← Matrizen Spezielle Matrizen | ● | Matrix Berechnen und Setzen Standard-Codesequenz →