我究竟如何从相机位置和方向生成View Matrix?

时间:2014-04-02 04:44:48

标签: c++ shader quaternions glm-math

我有一个相机,它有一个位置和一个四元数,我一直在尝试从中生成一个View矩阵。

我试过了

auto camera_rotation = glm::mat4_cast(camera.orientation);
auto camera_translation = glm::translate(glm::mat4(), camera.position);
auto viewMatrix = glm::inverse(camera_translation * camera_rotation);

然后我尝试了

auto camera_dir = camera.position +  glm::rotate(camera.orientation, glm::vec3(1, 0, 0));
auto camera_up = glm::rotate(camera.orientation, glm::vec3(0, 1, 0));
auto viewMatrix = glm::lookAt(camera.position, camera_dir, camera_up);

但是camera_up并不总是正确的。

如果我手动将ViewMatrix设置为

glm::lookAt(camera.position, glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));

然后我看到了我期望看到的内容,所以我认为其余的计算是正确的。

我该如何正确地做到这一点?

0 个答案:

没有答案