gpt4 book ai didi

c++ - 轨道相机(C++,GLM)

转载 作者:行者123 更新时间:2023-11-30 05:24:16 25 4
gpt4 key购买 nike

我正在尝试为我的 OpenGL 应用程序编写轨道相机(基于 glm::quat)。我有几个问题:

  1. 是否可以根据 RotationMatrix + 相机位置制作 ViewMatrix?

    camera_quat = glm::quat(glm::vec3(tmp_pitch, tmp_yaw, 0)) * camera_quat;

    float pitch = camera_quat.pitch();
    float yaw = camera_quat.yaw();

    glm::mat4 rotate = glm::mat4_cast(camera_quat);

    glm::vec3 view_direction(cos(yaw) * cos(pitch), sin(pitch), -sin(yaw) * cos(pitch));
    camera_position = target - view_direction * radius;

    glm::mat4 translate = glm::translate(camera_position);

    glm::mat4 view_matrix = **???**;
  2. 这行是否正确?:glm::vec3 view_direction(cos(偏航) * cos(俯仰), sin(俯仰), -sin(偏航) * cos(俯仰));

附言对不起,如果我的英语不好。这不是我的母语,我是俄语。我希望你可以帮助我。提前致谢!

最佳答案

如果将translate 矩阵更改为

glm::mat4 translate = glm::translate(-camera_position);

,应该是简单的

glm::mat4 view_matrix = rotation * translation;

但是,有一种更简单的方法可以到达那里。你基本上想要做的是:将相机移动到目标,在那里旋转相机,将它向后移动一点。这可以用矩阵形式表示(请注意, View 矩阵是相机的逆模型变换):

view_matrix = glm::translate(0, 0, -radius) * rotate * glm::translate(-target);

关于c++ - 轨道相机(C++,GLM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38751103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com