如何将3D坐标转换为2d坐标?

时间:2012-12-08 00:24:16

标签: math

  

可能重复:
  Mapping coordinates from plane given by normal vector to XY plane

如何获得位于3D空间中的点的屏幕位置?

相机的位置为0,0,0并且不会旋转。

1 个答案:

答案 0 :(得分:3)

取决于您的投射类型。

标准透视投影是:

x' = (centre of viewport) - (half width of viewport) * x/z
y' = (centre of viewport) - (half height of viewport) * y/z

那将在两个方向上给你一个90度的视野,并假设你从z(0,0,0)看。

在投影之前缩放几何体以处理视口通常不是方形的事实是正常的。您还会注意到,当z为0时,结果是未定义的,并且当z趋向于0时,结果将成为问题。当其中一个应该在摄像机后面时,它还将正负z映射到屏幕。通常你会在z小于某个阈值的情况下修剪几何体(或丢弃点)。

就点而言,还要注意(假设你保持正z)如果abs(x)> z或abs(y)>然后点在屏幕外。如果继续使用完整几何体,则可以使用该观察结果将其剪切到屏幕边缘,从而节省每像素测试。