11 Stimmen

OpenGL-Drehung

Ich versuche, eine einfache Drehung in OpenGL zu tun, aber muss den Punkt zu verpassen. Ich bin nicht auf der Suche nach einem spezifischen Fix so viel wie eine schnelle Erklärung oder Link, der OpenGL Rotation allgemeiner erklärt.

Im Moment habe ich folgenden Code:

glPushMatrix();
  glRotatef(90.0, 0.0, 1.0, 0.0);
  glBegin(GL_TRIANGLES);        
    glVertex3f( 1.0, 1.0, 0.0 );        
    glVertex3f( 3.0, 2.0, 0.0 );        
    glVertex3f( 3.0, 1.0, 0.0 );        
  glEnd();
glPopMatrix();

Das Ergebnis ist jedoch kein um 90 Grad gedrehtes Dreieck.

Editar Hmm dank Mike Haboustak - es schien, dass mein Code eine SetCamera-Funktion aufrief, die glOrtho verwendet. Ich bin zu neu in OpenGL, um eine Idee zu haben, was dies bedeutete, aber deaktivieren Sie diese und drehen in der Z-Achse produziert das gewünschte Ergebnis.

1voto

Adi Punkte 1913

Zum Thema Projektionsmatrix finden Sie hier eine gute Quelle für den Anfang:

http://msdn.microsoft.com/en-us/library/bb147302(VS.85).aspx

Hier wird ein wenig erklärt, wie eine Projektionsmatrix aufgebaut ist. Die orthografische Projektion ist die einfachste Form einer solchen Matrix. Im Grunde genommen werden 2 der 3 Achsenkoordinaten genommen und auf den Bildschirm projiziert (man kann die Achsen immer noch spiegeln und skalieren, aber es gibt keinen Verzerrungs- oder Perspektiveffekt).

Die Transformation von Matrizen ist wahrscheinlich eine der wichtigsten Aufgaben beim Rendering in 3D und umfasst im Wesentlichen 3 Matrixstufen:

  • Transform1 = Objektkoordinatensystem nach Welt (z. B. Objektdrehung und -skalierung)
  • Transform2 = Weltkoordinatensystem zu Kamera (das Objekt wird an der richtigen Stelle platziert)
  • Transform3 = Kamera-Koordinatensystem in Bildschirmraum (Projektion auf Bildschirm)

Normalerweise wird das Ergebnis der 3-Matrix-Multiplikation als WorldViewProjection-Matrix bezeichnet (falls Sie jemals auf diesen Begriff gestoßen sind), da sie die Koordinaten vom Modellraum über die Welt, dann zur Kamera und schließlich zur Bildschirmdarstellung transformiert.

Viel Spaß

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X