Ich erstelle gerade einen Billboard-Shader für eine Game-Engine und ich möchte die Rotation des Quads in diesem Shader zurücksetzen. Ich programmiere den Shader in GLSL, hier ist der Vertex-Shader:Wie ändere ich eine Achse einer Rotationsmatrix?
#version 400 core
layout (location = 0) in vec3 in_position;
layout (location = 1) in vec2 in_texcoords;
out data
{
vec2 tex_coords;
} vs_out;
uniform mat4 pr_matrix;
uniform mat4 ml_matrix = mat4(1.0);
uniform mat4 vw_matrix = mat4(1.0);
void main()
{
gl_Position = pr_matrix * vw_matrix * ml_matrix * vec4(in_position, 1.0);
vs_out.tex_coords = in_texcoords;
}
Ich weiß, dass ich, indem die oben links nach
1 0 0
0 1 0
0 0 1
, um die Drehung der Modellmatrix zurückgesetzt, aber jetzt Ich möchte, dass das Quad um die x- und z-Achse gedreht werden kann, aber nicht um die y-Achse. Weiß jemand, wie man die Rotation einer Matrix nur auf einer Achse zurücksetzt?
Vielen Dank für Ihre Antwort, aber wissen Sie, wie der Euler-Winkel auf 0 um die y-Achse setzen? Denn das ist, was ich suche:/ – RagingRabbit
@RagingRabbit: Können Sie nur mit der Umkehrung der y-Achse multiplizieren, um diese spezifische Rotation rückgängig zu machen? – namar0x0309
Nein, ich habe nur die Transformationsmatrix, also die Rotation auf allen Achsen. – RagingRabbit