3d矩形在负z中切换可见侧?

时间:2016-05-17 17:20:51

标签: java 3d libgdx

我使用以下代码玩顶点和法线:

    float col = 0;
    float row = 0;
    float level = 1;

private Vector3 tmp(float x, float y, float z) {
        return new Vector3(x, y, z);
    }

    meshPartBuilder.rect(tmp(col, 0, row +1),

            tmp(col, level, row +1),

            tmp(col, level, row),

            tmp(col, 0, row), new Vector3(-1, 0, 0));

这给了我预期的结果:

enter image description here

现在我进入负z区:

    meshPartBuilder.rect(tmp(col, 0, row - 1),

            tmp(col, level, row - 1),

            tmp(col, level, row),

            tmp(col, 0, row), new Vector3(-1, 0, 0));

enter image description here

现在突然间矩形变得不可见了。由于不明原因,从另一方面可以看出,它似乎是可见的"当转到负面z时,一边已经切换。

enter image description here

当进入负z时,如何使矩形可见?

1 个答案:

答案 0 :(得分:1)

这称为背面剔除。顶点的顺序(逆时针方向)用于确定面的哪一侧是前方,哪一侧是后侧。默认情况下,背面不会被渲染(剔除),因此GPU无需渲染无论如何都不可见的东西。

MeshPartBuilder#rect方法允许您在查看矩形的正面时指定角。 Corner00是左下角,corner10是右下角,corner11是右上角,corner01是左上角。

透视投影默认使用右手系统。意味着Z轴指向观察者。因此,您几乎必须交换水平角,以使其从另一侧可见。或者,如果您愿意,可以交换垂直角落。