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

问题描述 投票:0回答:1

我试图在鸟瞰视角设置我的相机。我的意思是指向下方。这是我到目前为止已初始化的内容:

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函数,但这根本不起作用。也许我对此并不了解......

c++ opengl camera glm-math perspectivecamera
1个回答
1
投票

我试图在鸟瞰视角设置我的相机。

我建议做以下事情。定义2个向量。

  1. 定义世界的向上矢量。这意味着在你的世界的坐标系中,矢量指向天空的地面: glm::vec3 world_up( 0.0f, 0.0f, 1.0f );
  2. 在您的世界的坐标系中定义北方向: glm::vec3 world_north( 0.0f, 1.0f, 0.0f );

利用该信息,可以设置视图坐标系的矢量。

  1. qazxsw poi是“鸟”的位置。天空中的一个点: qazxsw poi
  2. camPosition它是“鸟”看的位置。地面上的一点: float height = 10.0f; glm::vec3 camPosition = world_up * 10.0f;
  3. camTraget垂直于从glm::vec3 camTraget = glm::vec3(0.0f, 0.0f, 0.0f); camUp的向量。由于“鸟”看着地面,它是鸟的飞行方向(例如向北): camPosition

使用此vectrs,可以通过camTraget设置视图矩阵:

glm::vec3 camUp = world_north;
© www.soinside.com 2019 - 2024. All rights reserved.