gpt4 book ai didi

c++ - 如何使用 GLM 在鸟瞰图中设置相机?

转载 作者:行者123 更新时间:2023-11-28 04:23:34 24 4
gpt4 key购买 nike

我正在尝试以鸟瞰视角设置我的相机。我的意思是笔直向下。这是我到目前为止初始化的内容:

glm::vec3 camPosition = glm::vec3(0.0f, 10.0f, 0.0f);  // camera's position
glm::vec3 camFront = glm::vec3(0.0f, 0.0f, 0.0f); // where the camera is pointing
glm::vec3 camUp = glm::vec3(0.0f, 0.0f, 1.0f);

我将其传递给 glm::lookat 函数,但这根本不起作用。可能是我没看懂。。。

最佳答案

I am trying to set up my camera at a bird's eye perspective.

我建议执行以下操作。定义 2 个 vector 。

  1. 定义世界的向上 vector 。这意味着在您的世界坐标系中从地面指向天空的 vector :

     glm::vec3 world_up( 0.0f, 0.0f, 1.0f );
  2. 在您的世界坐标系中定义向北的方向:

     glm::vec3 world_north( 0.0f, 1.0f, 0.0f );

利用这些信息,可以设置 View 坐标系的 vector 。

  1. camPosition 是“鸟”的位置。天空中的一个点:

    float height = 10.0f;
    glm::vec3 camPosition = world_up * 10.0f;
  2. camTraget 它是“鸟”注视的位置。地面上的一个点:

    glm::vec3 camTraget = glm::vec3(0.0f, 0.0f, 0.0f);
  3. camUp 垂直于从 camPositioncamTraget 的 vector 。由于“鸟”看向地面,因此它是鸟的飞行方向(例如向北):

    glm::vec3 camUp = world_north;

有了这个 vector ,可以通过 glm::lookAt() 设置 View 矩阵:

glm::mat4 view = glm::lookAt( camPosition, camTraget, camUp );

关于c++ - 如何使用 GLM 在鸟瞰图中设置相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952930/

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