计算摄像机矩阵,给定位置,角度和FOV

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

我最近一直在尝试将空间中的3D点转换为屏幕上的2D像素位置,而我发现的几乎每个答案都类似于“对您的世界相机矩阵进行X,并且乘以视口高度,以像素为单位。“

现在,这一切都很好,但是,这些问题通常是关于视频游戏引擎的编程的,在该库中,用于获取摄像机视点矩阵的函数通常内置在一个库中,并称为按命令。但就我而言,我做不到-我需要知道如何进行操作,给定FOV(例如78度)以及位置和角度(格式为pitch = x,yaw = y,roll = z)面向,计算虚拟相机的视图矩阵。

有人知道我需要做什么吗?我正在与Lua合作(使用内置的userdata处理通过C接口显示的3D向量,角度和4x4矩阵之类的东西),如果有帮助的话。

math matrix camera viewport
1个回答
0
投票

我正在使用gluPerspective

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9xVlY1dC5wbmcifQ==” alt =“ gluPerspective”>

其中:

fovw,fovh // are FOV in width and height of screen angles [rad]
zn,zf     // are znear,zfar distances from focal point of camera

当使用OpenGL中的FOVy表示法时:

aspect = width/height 
fovh   = FOVy
fovw   = FOVx = FOVy*aspect

所以只需按您使用的符号定义的顺序(列或行的主要顺序)为您的4x4 matrix输入值。

我感觉到您正在自己进行SW渲染,所以不要忘记进行透视划分!。还可以查看上方的矩阵链接,以及:

© www.soinside.com 2019 - 2024. All rights reserved.