GLM 视图矩阵导致模型矩阵无效

GLM view matrix causing model matrix to have no effect

我正在尝试让一个物体始终面对相机。我查找了一种方法来执行此操作,但问题是当我将这部分放入视图矩阵时,模型矩阵不会影响任何东西。我怎样才能让它使用模型矩阵进行翻译?代码:

GLuint transformLocation=glGetUniformLocation(textureShaders,"transform");
glm::mat4 transform;
glm::mat4 model;
glm::vec3 playerPosition=user.getPosition();

model=glm::translate(model,glm::vec3(xpos,0.0f,zpos));

glm::mat4 view;
     view=glm::lookAt(cam.getPositionVector(),cam.getPositionVector()+cam.getFrontVector(),cam.getUpVector());
glm::mat4 rotationMatrix=glm::transpose(glm::lookAt(glm::vec3(xpos,0.0f,zpos),playerPosition,glm::vec3(0.0f,1.0f,0.0f)));
view*=rotationMatrix;
glm::mat4 projection;
projection=glm::perspective(45.0f,(float)900/(float)600,0.1f,100.0f);

transform=projection*view*model;

您的 "rotation" 矩阵没有任何意义:

rotationMatrix=glm::transpose(glm::lookAt(glm::vec3(xpos,0.0f,zpos),playerPosition,glm::vec3(0.0f,1.0f,0.0f)));

这将不会产生旋转矩阵(除非xposzpos恰好为零)。 lookAt 将创建一个可以分解为 r * t(-pos) 的变换矩阵(无论您用什么 pos 调用它)。构建此矩阵的 转置 将导致平移列被转置到第四行,这将完全破坏最终的 w 坐标。