2011-03-27 100 views
0

我正在开发3D Flash游戏,我的问题很简单。透视投影公式问题

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

我发现下式在因特网(照相机位于原点)

  1. X '= X/ZY'= Y/Z
  2. 比=焦距/(长焦点+ Z)
    X = X *比率
    Y = Y *比率

但这些公式给我当z小于零(Z < 0)

01奇怪结果

我需要从A(100,100,100)建行B(100,100; -100) 正如你可以看到这些公式给出了非常奇怪的结果,当我尝试到B点转换成2D尺寸

我怎样才能解决这个问题?

回答

3

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

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

在积分的情况下,你可以检查point.z < 1。对于直线来说,它更复杂 - 必须计算直线与z = 1平面的交点并在必要时剪切它。

你可以找到一些信息在线剪辑here