gpt4 book ai didi

java - 如何将2d完全制作成3d?

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:43 25 4
gpt4 key购买 nike

我使用的方法是将 x 和 y 坐标除以 z 值,然后像渲染 2D 游戏/事物一样渲染它来创建 3D 外观的事物。问题是当 z 值小于 0 时,它会翻转坐标的象限,看起来很奇怪。目前,如果有人可以帮助我修复负 z 值问题并告诉我如何旋转,则只有移动。我不使用矩阵,仅使用包含 x、y 和 z 的 vector 进行数学计算(如果有帮助的话)。我使用 Java 来实现这个,没有额外的库。感谢您的帮助。

我使用了透视矩阵并将其乘以我的 vector ,但它在这里不起作用,这是我的代码,可能有问题。我只是将 vector 转换为 1 x 3 矩阵,然后执行此操作。

    public Matrix multiply(Matrix matrix)
{
Matrix result = new Matrix(getWidth(),getHeight());
for(int y = 0; y < getHeight()-1; y++)
{
for(int x = 0; x < getWidth()-1; x++)
{
float sum = 0.0f;
for(int e = 0; e < this.getWidth()-1; e++)
{
sum += this.matrix[e + y * getWidth()] * matrix.matrix[x + e * matrix.getWidth()];
}
result.matrix[x + y * getWidth()] = sum;
}
}
return result;
}

最佳答案

这里只是猜测,但听起来您正在尝试进行投影变换:您正在对 3D 对象(具有 X、Y 和 Z 坐标的物体)进行建模,并且希望将它们投影到 2D 窗口(即屏幕)上。

在朴素投影变换中,Z 的含义是点与穿过眼球的平行于屏幕的平面之间的距离。如果您有带有 -Z 的点,则这些点代表您头后面的点。

听起来您需要平移 Z 坐标,以便 Z=0 是屏幕平面,或者与屏幕平行且位于屏幕后面的平面。 (换句话说,为所有 Z 添加一个常量,这样它们就不会为负数。)

http://en.wikipedia.org/wiki/3D_projection

关于java - 如何将2d完全制作成3d?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575145/

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