如何将3D平面中的点映射到屏幕平面

时间:2011-10-11 08:58:58

标签: graphics

我已经给出了使用C中的简单图形将3D空间中的对象投影到2D平面的任务。问题是将立方体放置在固定的3D空间中并且存在放置在其co的位置的相机-ordinates是x,y,z,相机正在查看原点,即0,0,0。现在我们必须将立方体顶点投影到相机平面中。

我正在进行以下步骤

步骤1:我找到平面aX + bY + cZ + d = 0的方程,该方程垂直于从摄像机位置到原点的线。

步骤2:我发现立方体的每个顶点投影到上面步骤中获得的平面。

现在我想将在步骤2中通过投影得到的顶点位置aX + bY + cZ + d = 0映射到我的屏幕平面。

感谢,

我不认为通过让z坐标等于零将导致我实际的映射。所以有任何帮助来弄清楚这一点。

1 个答案:

答案 0 :(得分:1)

您可以通过两个简单步骤完成此操作:

  1. 将立方体的坐标转换为相机的系统(使用 旋转),使得该系统中摄像机自身的坐标是x = y = z = 0并且立方体的平移z是> 0
  2. 将翻译后的立方体的坐标投影到2d平原上,将其x和y除以它们各自的z(你可能需要在这里应用一个恒定的比例因子,以使坐标对于屏幕是合理的,例如不是太小而且在+内/ - 以屏幕高度(以像素为单位)。这将创建透视效果。现在,您可以在屏幕上使用这些划分的x和y绘制像素,假设x = y = 0是它的中心。
  3. 这几乎是在3D游戏中完成的。如果使用立方体顶点坐标,则可以将其侧面投影到屏幕上。然后,您可以对所得到的2d形状进行实心填充或对其进行纹理映射。但为此你必须首先弄清楚哪些方面没有被其他方面遮挡(当然,除非你使用一种叫做z-buffering的技术)。但是,对于简单的线框演示,您不需要这样做,只需在投影顶点之间绘制直线。