【发布时间】:2013-10-30 23:53:56
【问题描述】:
我试图用纯 java 编写一个 3D 游戏,没有任何像 open gl 这样的库(因为我想了解它背后的所有数学和技术)。 所以,第一个测试工作得很好,我可以移动和旋转立方体和类似的东西,我有一个投影矩阵来代表世界的相机。 但是这个投影不能正常工作。
我可以移动点,但只能移动 x 和 y,所以右左,上下。 但是每当我更改所有点的 z 坐标时,什么都不会发生。 问题是我的透视投影根本不是透视。我可以做任何事情,但是“远离”的点并没有“更小”地绘制……为什么?有什么问题?
我正在使用我已经说过的矩阵,并使用以下原则:每个网格都有一个线列表,每条线都有点,一个点有变量 x、y、z、1。所以,每当我想变换所有这些点我只需将所需的变换矩阵(4x4)与每个点矩阵(4x1)相乘,然后将投影矩阵与每个点矩阵相乘,得到每个点的新点矩阵(4x1)并再次绘制它们。
所以我已经说过,投影(所以实际距离缩放)不起作用。为什么?有人有想法吗?
非常感谢!
编辑
好的,这里有更多信息和代码: 我正在使用这个投影矩阵:
这里还有一些代码:
BlockWorld.java这是主程序,问题见第48行
【问题讨论】:
-
我们需要更多信息来回答这个问题,尤其是您正在使用的投影矩阵。理想情况下,我们需要查看从对象空间到窗口空间的完整坐标转换的代码。哦,还有一件事:用于点的 4x1 矩阵通常称为“向量”:)
-
好的,我回家后会贴出孔代码。我知道那是向量,但我更容易将其记住为“点矩阵”。 :)
-
添加了更多信息和代码。
标签: java matrix 3d transformation