可能重复:
Mapping coordinates from plane given by normal vector to XY plane
如何获得位于3D空间中的点的屏幕位置?
相机的位置为0,0,0并且不会旋转。
答案 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)>然后点在屏幕外。如果继续使用完整几何体,则可以使用该观察结果将其剪切到屏幕边缘,从而节省每像素测试。