2011-03-27 127 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