转换后如何计算屏幕坐标?

How to calculate screen coordinates after transformations?

我正在尝试解决与 3-D 坐标转换相关的问题 space 但不确定如何处理它。

让一个名为P的顶点用4x4变换矩阵绘制在原点。然后通过使用模型视图矩阵定位的摄像机进行查看,然后通过简单的投影变换矩阵进行查看。

如何计算 P' (x,y,z) 的新屏幕坐标?

在讲解pipeline之前,你需要知道pipeline是如何在屏幕上进行绘制的。 过程之间的一切都只是与向量

的矩阵乘法

模型 - 世界 - 相机 - 投影(或标准化坐标) - 屏幕

  1. 第一步,我们称之为 'Model Space' 因为 (0,0,0) 是基于模型的。
  2. 我们需要将模型 space 移动到世界 space 因为我们要将模型放置到世界 我们需要做的变换是 (translate, rotation, scale)TRS * Model(Vector4) 因为世界变换的定义会不同 完成后,模型在世界上的位置。
  3. 第三,需要在camrea上渲染space因为我们看到的是通过相机。在世界中,相机也有位置、视口大小和 旋转.. 它需要从相机投影。见

    完成这项工作后,您将获得归一化坐标,技术上是 0-1 坐标。

  4. 最后,屏幕space。假设我们要为手机制作视频游戏。手机有很多屏幕分辨率。那么如何完成呢? 简单、缩放和平移以获得屏幕 space 坐标中的结果。由于产地和屏幕尺寸不同

    所以你要做的是'step 4'。

    1. 如果你想从世界中获取屏幕位置P1,公式将是"Screen Matrix * projection matrix * Camera matrix * P1"
    2. 如果你想从相机 space 获取位置,它将是 "Screen Matrix * projection matrix * P1"。

有了解矩阵和计算的有用链接,请参阅上面的链接。