Unity 编程网格有一些平滑的边缘和一些锯齿状的边缘

Unity programmatic mesh has some smooth edges and some jagged edges

初学者问题:我正在尝试在统一网格中绘制一个“整齐的”三角形 - 即,如果我将它做得足够大,边缘看起来相对均匀。给定一个以编程方式创建的网格 (https://catlikecoding.com/unity/tutorials/rounded-cube/),具有一个简单的 material,仅更改颜色,我选择顶面上的几个顶点并更改它们的高度:

private void DrawStuff()
{
    int width = xSize - 2;
    int height = zSize - 2;
    int margin = 5;

    int vStart = topStartVertex + (width * margin) + margin + margin;
    DrawTriangle(vStart, 10, 10, 10);
}


private void DrawTriangle(int v, int height, int width, int depth)
{
    int offset = 0;
    for (int i = 0; i < height; i++)
    {
        for (int j = 0 + offset; j < width - offset; j++)
        {
            vertices[v + i * (xSize - 1) + j][1] = ySize - depth;
        }
        offset += 1;
    }
}

但是,三角形的边缘看起来并不完全相同 - 有些是光滑的,有些是锯齿形的。我希望其中之一,但不会同时出现。我在绘制矩形甚至是一条简单的直线时注意到了相同的行为。

这是渲染神器,还是照明,还是其他?有没有一种简单的方法来修复它 - 即使边缘一致,无论是平滑还是锯齿状(最好是平滑的)?

我阅读了其他一些关于网格平滑的类似问题,但我认为它们与我要问的不一样:

这是因为网格边缘未与您尝试绘制的边缘对齐。

在下图中,可以看到蓝色是低海拔的顶点,红色是高海拔的顶点(vertices/edges/faces因为时间关系没有标出)

所有 3 个顶点都在同一高度的面具有完全水平的表面。请注意,由于没有网格边沿着与三角形拉伸的一侧相同的方向,因此存在锯齿状外观,因为有成对的三角形高度相同。

可以 解决此问题的一个简单方法可能是细分您的三角形,以便也有沿您想要的方向移动的边:

但很明显,这只能让你在一个方向上多做一个边缘。甚至这也不是必需的,因为您实际上可以根据需要仅沿挤压部分更改曲面的细分方式:

TLDR:您需要沿着要用网格制作的边缘设置网格边缘。