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

How can I set up a camera at bird's eye view using GLM?

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

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 个向量。

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

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

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

利用这些信息,可以设置视图坐标系的向量。

  1. camPosition就是"bird"的位置。天空中的一个点:

    float height = 10.0f;
    glm::vec3 camPosition = world_up * 10.0f;
    
  2. camTraget 就是 "bird" 所注视的位置。地面上的一个点:

    glm::vec3 camTraget = glm::vec3(0.0f, 0.0f, 0.0f);
    
  3. camUp垂直于从camPositioncamTraget的向量。因为 "bird" 看着地面,所以它是鸟的飞行方向(例如向北):

    glm::vec3 camUp = world_north;
    

有了这个向量,可以通过glm::lookAt()设置视图矩阵:

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