透视投影公式问题

时间:2011-03-27 18:28:52

标签: flash 3d projection

我正在开发3D Flash游戏,我的问题非常简单。

如何将3d点转换为2d点?

我在互联网上找到了下一个公式(相机位于原点)

  1. x'= x / z y'= y / z
  2. ratio =焦距/(focallength + z)
    x = x *比率
    y = y *比率
  3. 但是当z小于零(z <0)

    时,这些公式给出了奇怪的结果

    我需要从A(100,100,100)到B(100,100; -100)的构建线 正如您所看到的,当我尝试在2D维度中转换B点时,这些方程给出了非常奇怪的结果

    我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

考虑z = 0时的含义。这意味着你正在做x / 0,这很糟糕 - 在这种情况下,它意味着该点与你的相机占据相同的位置!随着z越来越小,这意味着这些点落在你的相机后面,所以你根本不应该渲染它们。

你必须剔除(不渲染)“屏幕后面”的任何点。选择一个小z作为你的“近平面”,比方说,z = 1。您必须在此z = 1平面上剪切任何几何图形以防止不正确的渲染。

如果是积分,您可以查看point.z < 1。对于线条,它更复杂 - 您必须计算线条与z = 1平面的交点并在必要时剪切它。

您可以在线条剪辑here上找到一些信息。

相关问题