2013-10-30 65 views
2

我試圖用純java編程一個3D遊戲,沒有任何類似開放式gl的庫(因爲我想了解它背後的所有數學和技術)。 因此,第一次測試工作得很好,我可以四處移動並旋轉立方體和類似的東西,我有一個投影矩陣來表示世界的相機。 但這個投影不能正常工作。3D投影不工作

我可以移動周圍的點,但只能關於x和y,所以左右,最上方。 但每當我改變所有點的z座標,什麼都不會發生。 事情是我的透視投影不是透視。我可以做任何事情,但是「很遠」的點並不是「小」的......爲什麼?有什麼問題?

我在使用矩陣我已經說過,並使用以下principe:每個網格都有一個線列表,每一行都有點,一個點有變量x,y,z,1。對所有這些點進行變換,我只需將所需的變換矩陣(4x4)與每個點矩陣(4x1)相乘,然後用每個點矩陣乘以投影矩陣,以獲得每個點的新點矩陣(4x1)並再次繪製它們。

所以我已經說過,投影,(所以實際距離縮放)不工作。爲什麼?任何人的想法?

非常感謝!

EDIT

沒關係,繼承人是一些更多的信息和代碼: im使用該投影矩陣:

projectionmatrix

這裏是更多的代碼:

Camera.java

Graphics3D.java

BlockWorld.java這是最主要的PROGRAMM,問題見行48

Matrix.java

+0

我們需要更多的信息來回答這個問題,特別是您正在使用的投影矩陣。理想情況下,我們需要查看從對象空間到窗口空間的完整座標轉換代碼。哦,還有一件事:用於點的4x1矩陣通常被稱爲「矢量」:) – derhass

+0

好吧,當我在家時,我會發布洞碼。我知道這是矢量,但是我更容易記住它是一個「點矩陣」。 :) –

+0

增加了更多的信息和代碼。 –

回答