OpenGL: Kamera als Matrix (Rotation, Translation)?
-
Ich versuche den Kameraview nur durch Matrixmanipulation zu erzeugen:
Ich verwende eine 4x4 Matrix (z.B.: Translation und Rotation um X):
tMatrix4x4 TransView(1.0f,0.0f ,0.0f ,-tx,
0.0f,cos(rX - PI / 2),-sin(rX - PI / 2),-ty
0.0f,sin(rX - PI / 2), cos(rX - PI / 2),-tz,
0.0f,0.0f ,0.0f ,1.0f);Wenn ich nun die Matrix lade...
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glMatrixMode( GL_MODELVIEW );
glLoadMatrixd(TransView);...funktioniert die Translation einwandfrei jedoch passt die Rotation nicht.
Es wird immer zuerst um den Punkt 0,0,0 / x-Achse rotiert und dann erst transformiert. Dadurch entsteht eine Art Schiefeebene auf der ich mich bewege.Auch wenn die Matrix splitte, also...
TransView = Translation; RotXView 0 Rotation X
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glMatrixMode( GL_MODELVIEW );
glLoadMatrixd(TransView);
glMultMatrixd(RotXView);... kommt das gleiche Resultat heraus.
Bitte um Hilfe, wie es Richtig gehört
mfg mk
-
Die Reihenfolge, in der du die einzelnen Matrizen anwendest spielt eine Rolle! Bei dir ist die anscheinen falsch
-
Danke, hab jetzt die Matrizen geändert. Mit...
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_PROJECTION );
glLoadMatrixd(TransView);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();...funktioniert der View schon, jedoch ensteht ein neuer "Anzeigefehler"
Es wird nur mehr ein Teil der "Welt" gezeigt und dieser um den Winkel der X-Rotation abgeschnitten
siehe -> [url] http://www.visyte.com/TestShell.exe [/url]
Tastenbelegung: Vor, Zurück, Rechts, Links -> Pfeiltasten
Rauf, Runter -> +,-Kann man dies über glFrustum einstellen? Ich habs zwar probiert, aber es hat keinen Effekt oder alles ist weg.
mfg mk