计算3D点的像素坐标

安迪

我正在尝试计算世界空间中3d点(称为p)的像素坐标。我知道我必须通过将p乘以“相机与世界”矩阵的逆来将p从世界空间转换为相机空间。然后使用透视投影在画布上找到该点的坐标,然后将其转换为像素坐标。我认为这是正确的吗?

我目前坚持寻找4x4矩阵,该矩阵可以让我将p从世界空间转换为相机空间。如果我有相机位置和方向的向量,如何计算此4x4矩阵?

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

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

我正在使用glm。

拉比德76

我目前坚持寻找4x4矩阵,该矩阵可以让我将p从世界空间转换为相机空间。

该矩阵称为视图矩阵。视图矩阵是该矩阵的逆矩阵,它由摄像机的位置和方向(视点)定义。
位置是3D点(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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算3D坐标

来自分类Dev

python代码使用其3D坐标计算三个点之间的角度

来自分类Dev

从(x,y)像素坐标获取3D世界坐标

来自分类Dev

在点列表中存储3d坐标Matlab

来自分类Dev

如何使用 writeCloud() OpenCV 函数来构造给定 3D 点坐标的点云?

来自分类Dev

在Matlab中计算3D点对的欧几里得距离

来自分类Dev

计算两组点之间的3D转换

来自分类Dev

3D多边形的中心点计算

来自分类Dev

计算3D中两点之间的距离

来自分类Dev

如何计算哪个顶点最接近3D点?

来自分类Dev

3D矩阵内部数组的Numpy计算点积

来自分类Dev

计算3D对象与点之间的角度

来自分类Dev

计算点和3D构面之间的角度

来自分类Dev

如何计算两点之间的 3D 角度?

来自分类Dev

3D坐标+阴影

来自分类Dev

将共面3D点映射到其平面2D坐标

来自分类Dev

将3D点投影到2D屏幕坐标

来自分类Dev

将3D点投影到2D屏幕坐标

来自分类Dev

如何在MATLAB中从3D点云中提取xyz坐标

来自分类Dev

libgdx:如何将触摸坐标转换为相机NEAR平面上的3D点?

来自分类Dev

如何找到垂直于线中点的点的3D坐标

来自分类Dev

如何将txt文件中的3D点坐标导入python中的pymeshlab

来自分类Dev

如何将平面上的3D点转换为UV坐标?

来自分类Dev

libgdx:如何将触摸坐标转换为相机NEAR平面上的3D点?

来自分类Dev

使用x,y,z坐标在3d曲面中绘制点

来自分类Dev

使用Python在3D散点图中的点旁边显示坐标

来自分类Dev

如何在给定向量的垂直平面中找到 3D 点坐标

来自分类Dev

A点到B点的像素坐标

来自分类Dev

Vulkan重心坐标的计算?区域功能是2D还是3D?