如何完全制作2d到3d?

时间:2014-08-29 19:40:51

标签: java 3d rotation

我正在使用将x和y坐标除以z值的方法,然后渲染它就像2D游戏/东西一样创建3D外观。问题是当z值小于0时,它会翻转坐标的象限,看起来非常奇怪。目前,如果有人可以帮助我修复负z值的事情,并告诉我如何旋转,那么只有运动。我没有使用和矩阵只有数学的x,y和z的向量,如果有帮助的话。我正在使用Java而没有额外的库。 谢谢你的帮助。

我使用了透视矩阵并将其乘以我的向量,但它在这里不起作用是我的代码可能有问题。我只是将矢量转换为1乘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;
} 

1 个答案:

答案 0 :(得分:1)

只是在这里猜测,但听起来你正在尝试进行投影变换:你正在建模3D对象(具有X,Y和Z坐标的东西)并且你想要投影它们到一个2D窗口(即屏幕)。

天真投影变换中Z的含义是点与平行于屏幕的平面之间的距离,它通过您的眼球。如果你有-Z的分数,则代表你头脑后面的分数。

听起来你需要翻译Z坐标,以便Z = 0是屏幕的平面,或者是与屏幕平行并且在屏幕后面的平面。 (换句话说,为你的所有Z添加一个常数,这样它们都不是负数。)

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