我试图让一个物体始终面对相机。我查找了一种方法来做到这一点,但问题是当我将这部分放入视图矩阵时,没有任何东西受到模型矩阵的影响。如何使用模型矩阵进行翻译?代码:
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;
答案 0 :(得分:1)
你的“轮换”矩阵没有意义:
rotationMatrix=glm::transpose(glm::lookAt(glm::vec3(xpos,0.0f,zpos),playerPosition,glm::vec3(0.0f,1.0f,0.0f)));
这将不导致旋转矩阵(除非xpos
和zpos
恰好为零)。 lookAt
将创建一个转换矩阵,可以将其分解为r * t(-pos)
(对于您调用它的pos
)。构建此矩阵的转置将导致转换列转换到第四行,这将完全阻止最终的w
坐标。