使用glm :: mat4围绕多个轴旋转对象

时间:2013-11-29 02:04:56

标签: c++ opengl rotation shader glm-math

我正在尝试使用glm :: rotate方法将x,y,z轴周围的多个旋转应用于对象,但由于某种原因,它只围绕一个轴旋转,似乎完全忽略了其他旋转。 以下是我如何应用轮换:

glm::mat4 rotateTransform = glm::mat4(1.0f);
rotateTransform = glm::rotate(rotateTransform, this->rotation.x, glm::vec3(1, 0, 0));
rotateTransform = glm::rotate(rotateTransform, this->rotation.y, glm::vec3(0, 1, 0));
rotateTransform = glm::rotate(rotateTransform, this->rotation.z, glm::vec3(0, 0, 1));

return glm::translate(glm::mat4(1.0f), this->position) * rotateTransform *   glm::scale(glm::mat4(1.0f), this->scale);

该方法返回modelToWorldMatrix,然后传递给我的vertexShader,我在顶点执行标准计算:

vec4 vertexPositionInModelSpace = vec4(Position, 1);
vec4 vertexInWorldSpace = gModelToWorldTransform * vertexPositionInModelSpace;
vec4 vertexInViewSpace = gWorldToViewTransform * vertexInWorldSpace;
vec4 vertexInHomogeneousClipSpace = gProjectionTransform * vertexInViewSpace;
gl_Position = vertexInHomogeneousClipSpace;

那么如何使用glm :: mat4矩阵应用多个旋转?

0 个答案:

没有答案