Ich dachte, ich hätte es halbwegs im Griff, aber dann hakt es doch wieder. Das leidige Thema: Objekt um die eigene Achse drehen.
Vor dem Zeichnen der Szene wird die Sicht in der Modelview-Matrix eingestellt:
Code:
procedure UpdateView;
begin
glRotatef (-vpitch, 1.0, 0.0 , 0.0);
glRotatef (-vhead, 0.0, 1.0 , 0.0);
glTranslatef (-xview, -yview, -zview);
end;
Nun sollen Objekte gezeichnet und an Ort und Stelle verschieden gedreht werden, hier einfache Alpha-Texturen, die doppelt (gekreuzt) gezeichnet werden:
Code:
procedure DrawObject (x, y, z: Single);
begin
glPushMatrix;
glBegin (GL_QUADS);
glTexCoord2f (0, 0); glVertex3f (x-0.5, y, z);
glTexCoord2f (1, 0); glVertex3f (x+0.5, y, z);
glTexCoord2f (1, 1); glVertex3f (x+0.5, y+1, z);
glTexCoord2f (0, 1); glVertex3f (x-0.5, y+1, z);
glEnd;
glBegin (GL_QUADS);
glTexCoord2f (0, 0); glVertex3f (x, y, z-0.5);
glTexCoord2f (1, 0); glVertex3f (x, y, z+0.5);
glTexCoord2f (1, 1); glVertex3f (x, y+1, z+0.5);
glTexCoord2f (0, 1); glVertex3f (x, y+1, z-0.5);
glEnd;
glPopMatrix;
end;
Soweit alles ok, das Problem beginnt beim Drehen. Wenn ich da ein glRotate reinbringe, dann wird um alles mögliche gedreht, nur nicht um die Objektachse. Kann ja auch nicht, denn der Drehpunkt wurde ja in UpdateView verschoben. Wie kann ich den Drehpunkt auf die Objektposition fixieren, ohne dass die View-Einstellungen ignoriert werden?
Anmerkung: Es funktioniert, wenn ich UpdateView auf die Projektions-Matrix ansetze, aber das möchte ich aus verschiedenen Gründen nicht.
Hat sich erledigt, ein dummer Programmierfehler. Wenn ich glRotate verwende, muss in in diesem Fall ja wohl mit lokalen Parametern arbeiten, also ein glTranslate davorsetzen. Das hatte ich zwar auch schon ausprobiert, dabei aber auf einen falschen Parameter zurückgegriffen. Kein Wunder, dass niemand eine Antwort auf meine Frage parat hatte ...
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.