gpt4 book ai didi

java - 3D 投影不起作用

转载 作者:行者123 更新时间:2023-11-30 09:15:51 24 4
gpt4 key购买 nike

我正在尝试使用纯 Java 编写 3D 游戏,而没有像 open gl 这样的任何库(因为我想了解它背后的所有数学和技术)。所以,第一个测试工作得很好,我可以四处移动和旋转立方体之类的东西,而且我有一个投影矩阵来代表世界的相机。但是这个投影不能正常工作。

我可以四处移动这些点,但只能移动 x 和 y,所以从右到左,从上到下。但是每当我改变所有点的 z 坐标时,什么也没有发生。问题是我的透视投影根本不是透视。我可以做任何事情,但是“远”的点并没有画得“小”……为什么?有什么问题吗?

我正在使用我已经说过的矩阵,并使用以下原则:每个网格都有一个线列表,每条线都有点,一个点有变量 x、y、z、1。所以,每当我想变换所有这些点我只是将所需的变换矩阵(4x4)乘以每个点矩阵(4x1),然后将投影矩阵乘以每个点矩阵,以获得每个点的新点矩阵(4x1)并再次绘制它们。

所以我已经说过,投影(因此实际距离缩放)不起作用。为什么?有人有想法吗?

非常感谢!

编辑

好的,这里是一些更多的信息和代码:我正在使用这个投影矩阵:

projectionmatrix

还有一些代码:

Camera.java

Graphics3D.java

BlockWorld.java这是主程序,问题见第 48 行

Matrix.java

最佳答案

您需要使用透视投影矩阵来转换点,而不仅仅是投影矩阵来增加深度

http://www.scratchapixel.com/lessons/3d-advanced-lessons/perspective-and-orthographic-projection-matrix/perspective-projection-matrix/

关于java - 3D 投影不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com