计算三维点的像素坐标



我正在尝试计算世界空间中三维点(称为p(的像素坐标。我知道我必须将p从世界空间转换为相机空间,方法是将其乘以相机到世界矩阵的倒数。然后使用透视投影在画布上找到点的坐标,然后将其转换为像素坐标。我认为这是正确的?

我目前一直在寻找4x4矩阵,它可以让我将p从世界空间转换为相机空间。如果我有相机位置和方向的矢量,我如何计算这个4x4矩阵?

vec3 cameraPos = vec3(0.f, 0.f, -5.f);
vec3 cameraDir = vec3(0.f, 0.f, 1.f);

我是否也需要一个相机向上矢量,这代表什么?

我正在使用glm。

我目前一直在寻找4x4矩阵,该矩阵允许我将p从世界空间转换为相机空间。

该矩阵称为视图矩阵。视图矩阵是该矩阵的逆矩阵,由摄影机位置和方向(视点(定义
位置为三维点(cameraPos(。相机的方向由视线(cameraDir(和上方向向量定义。您必须定义向上矢量,例如(0,1,0(。

OpenGL数学(GLM(库提供了一个方便的函数(glm::lookAt(,用于通过位置、目标和上矢量计算视图矩阵:

#include <glm/gtc/matrix_transform.hpp>
glm::vec3 cameraPos = glm::vec3(0.f, 0.f, -5.f);
glm::vec3 cameraDir = glm::vec3(0.f, 0.f, 1.f);
glm::vec3 cameraUp = glm::vec3(0.f, 1.f, 0.f);
glm::mat4 viewMatrix = glm::lookAt(cameraPos, cameraPos+cameraDir, cameraUp);

最新更新