C# 程序网格之间的奇怪线条

C# 程序网格之间的奇怪线条,c#,unity3d,mesh,procedural-generation,perlin-noise,C#,Unity3d,Mesh,Procedural Generation,Perlin Noise,网格边缘之间有奇怪的线条。这是问题的图像: 代码: //ChunkSize是每个网格的长度和宽度(一个整数,在本例中为100), //顶点是网格的顶点数组, //ChunkPos是每个网格位置的矢量2(例如,(0,0),(100,0),(0100),(100100), //scaleXZ是网格的比例(水平缩放网格), //scaleY是将乘以高度的数字,因此网格可以向上缩放。(垂直缩放网格) Vector3[]顶点=新的Vector3[(chunkSize+1)*(chunkSize+1)];

网格边缘之间有奇怪的线条。这是问题的图像:

代码:

//ChunkSize是每个网格的长度和宽度(一个整数,在本例中为100),
//顶点是网格的顶点数组,
//ChunkPos是每个网格位置的矢量2(例如,(0,0),(100,0),(0100),(100100),
//scaleXZ是网格的比例(水平缩放网格),
//scaleY是将乘以高度的数字,因此网格可以向上缩放。(垂直缩放网格)
Vector3[]顶点=新的Vector3[(chunkSize+1)*(chunkSize+1)];

for(int z=chunkPos.y,i=0;z看起来像是照明/材质球问题,而不是网格问题。@谢谢您这么快的回复!我如何编辑照明/材质球以使其正常工作?*耸耸肩*不确定。我对材质球略知一二,但我不知道可能出了什么问题(您应该将其添加到您的问题中)@Draco18s我也是……好吧,好建议!当你使用块时,外部边界旁边不会有另一个点(每个网格都是为自己计算的,不考虑相邻网格)。这将导致“硬边界”边和法线是在不考虑下一块的情况下计算的。这就是为什么你会看到接缝。看起来像是照明/着色器问题,而不是网格问题。@Draco18s感谢你这么快的回答!我如何编辑照明/着色器来实现这一点?*耸耸肩*不确定。我对着色器有一点了解,但我不知道有什么问题(你应该把它添加到你的问题中)。@Draco18我也是……好的,好的建议!当你使用块时,外部边界旁边不会有另一个点(每个网格都是为自己计算的,不考虑相邻网格)。这将导致“硬边界”边和法线是在不考虑下一块的情况下计算的。这就是为什么会看到接缝。
    //ChunkSize is the length and width of each mesh(an integer. In this case, it is 100),
    //Vertices are the vertices array of the mesh,
    //ChunkPos is a Vector2 of the position of each mesh(for example, (0,0),(100,0),(0,100),(100,100)...),
    //scaleXZ is the scale of the mesh (Scale the mesh "Horizontally"),
    //and scaleY is the number that is going to be multiplied to the height, so the mesh can scale upwards. (Scale the mesh "Vertically")

    Vector3[] vertices = new Vector3[(chunkSize + 1) * (chunkSize + 1)];
    for (int z = chunkPos.y, i = 0; z <= chunkPos.y + chunkSize; z++)
    {
        for (int x = chunkPos.x; x <= chunkPos.x + chunkSize; x++)
        {
            float y = Mathf.PerlinNoise((x / scaleXZ), (z / scaleXZ)) * scaleY;
            vertices[i] = new Vector3(x - chunkPos.x, y, z - chunkPos.y);
            i++;
        }
    }