可能重复:
将坐标从法线向量给定的平面映射到 XY 平面
如何获得位于 3D 空间中的点的屏幕位置?
相机的位置是 0,0,0 并且没有旋转。
取决于您的投影类型。
标准透视投影是:
x' = (centre of viewport) - (half width of viewport) * x/z
y' = (centre of viewport) - (half height of viewport) * y/z
这将为您在两个方向上提供 90 度的视野,并假设您从 (0, 0, 0) 沿 z 方向看。
在投影之前缩放几何图形以处理视口通常不是正方形的事实是正常的。您还会注意到,当 z 为 0 时结果是不确定的,并且当 z 趋向于 0 时会出现问题。当其中一个应该在相机后面时,它还会将正 z 和负 z 映射到屏幕。通常,您会修剪 z 小于某个阈值的几何体(或丢弃点)。
就点而言,还请注意(假设您保持正 z)如果 abs(x) > z 或 abs(y) > z 则该点不在屏幕上。如果您继续使用完整的几何图形,则可以使用该观察将其剪辑在屏幕边缘,从而节省每像素测试。