如何使用 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 个向量。
定义世界的向上向量。这意味着在您的世界坐标系中从地面指向天空的矢量:
glm::vec3 world_up( 0.0f, 0.0f, 1.0f );
在你的世界坐标系中定义向北的方向:
glm::vec3 world_north( 0.0f, 1.0f, 0.0f );
利用这些信息,可以设置视图坐标系的向量。
camPosition
就是"bird"的位置。天空中的一个点:
float height = 10.0f;
glm::vec3 camPosition = world_up * 10.0f;
camTraget
就是 "bird" 所注视的位置。地面上的一个点:
glm::vec3 camTraget = glm::vec3(0.0f, 0.0f, 0.0f);
camUp
垂直于从camPosition
到camTraget
的向量。因为 "bird" 看着地面,所以它是鸟的飞行方向(例如向北):
glm::vec3 camUp = world_north;
有了这个向量,可以通过glm::lookAt()
设置视图矩阵:
glm::mat4 view = glm::lookAt( camPosition, camTraget, camUp );
我正在尝试以鸟瞰视角设置我的相机。我的意思是笔直向下。这是我到目前为止初始化的内容:
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 个向量。
定义世界的向上向量。这意味着在您的世界坐标系中从地面指向天空的矢量:
glm::vec3 world_up( 0.0f, 0.0f, 1.0f );
在你的世界坐标系中定义向北的方向:
glm::vec3 world_north( 0.0f, 1.0f, 0.0f );
利用这些信息,可以设置视图坐标系的向量。
camPosition
就是"bird"的位置。天空中的一个点:float height = 10.0f; glm::vec3 camPosition = world_up * 10.0f;
camTraget
就是 "bird" 所注视的位置。地面上的一个点:glm::vec3 camTraget = glm::vec3(0.0f, 0.0f, 0.0f);
camUp
垂直于从camPosition
到camTraget
的向量。因为 "bird" 看着地面,所以它是鸟的飞行方向(例如向北):glm::vec3 camUp = world_north;
有了这个向量,可以通过glm::lookAt()
设置视图矩阵:
glm::mat4 view = glm::lookAt( camPosition, camTraget, camUp );