glm rotiert die Verwendung in OpenGL

8

Ich rendere einen Kegel, und ich möchte ihn um 90 Grad gegen den Uhrzeigersinn drehen, so dass das spitze Ende nach Westen zeigt! Ich benutze OpenGL 3 +.

Hier ist mein Code in meiner Cone.cpp soweit:

%Vor%

Nicht der gesamte Code wird angezeigt.

Kann mich jemand durch die Rotation führen? Ich muss die View-Matrix richtig multiplizieren? mit "Glm drehen" -Funktion?

    
Test Test 13.01.2012, 01:00
quelle

3 Antworten

30

Sie müssen Ihre Modellmatrix multiplizieren. Denn dort sollten Modellposition, Skalierung und Rotation liegen (deshalb heißt es Modellmatrix).

Alles, was Sie tun müssen, ist:

%Vor%

Dies nimmt die Modellmatrix und wendet eine Rotation auf alle bereits vorhandenen Operationen an. Die anderen Funktionen übersetzen und skalieren das Gleiche. Auf diese Weise ist es möglich, viele Transformationen in einer einzigen Matrix zu kombinieren.

    
the swine 08.02.2012 10:09
quelle
8

GLM hat ein gutes Beispiel für die Rotation: Ссылка

%Vor%     
Anonymous 09.07.2012 22:33
quelle
5

Ich habe festgestellt, dass Sie auch Fehler erhalten können, wenn Sie die Winkel nicht korrekt angeben, selbst wenn Sie glm::rotate(Model, angle_in_degrees, glm::vec3(x, y, z)) verwenden, könnten Sie dennoch Probleme bekommen. Der Fix, den ich dafür gefunden habe, war, den Typ als glm::rotate(Model, (glm::mediump_float)90, glm::vec3(x, y, z)) anzugeben, anstatt nur glm::rotate(Model, 90, glm::vec3(x, y, z))

zu sagen

Oder schreibe einfach das zweite Argument, den Winkel im Bogenmaß (zuvor in Grad), wie ein Float ohne Besetzung, wie in:

%Vor%

Sie können glm :: radians () hinzufügen, wenn Sie Grad beibehalten möchten. Und fügen Sie die Includes hinzu:

%Vor%     
abe732 02.08.2016 17:56
quelle

Tags und Links