首页 > 解决方案 > 网格中有大量点的大型三角形多边形

问题描述

创建网格时,我遇到了一个问题:无论是在游戏中,还是在场景中都出现了一个大的三角形多边形。问题是系统大小为 250 x 250 点,没有这个多边形。它已经出现在 400 x 400 点的大小上。

我做了什么:

void Start () {
         MeshFilter mf = GetComponent<MeshFilter>();
         Mesh mesh = mf.mesh;
         int size = 400;
         Vector3[] vertices = new Vector3[size * size];
         Vector3[] normals = new Vector3[size * size];
         Vector2[] uvc = new Vector2[size * size];

         int c = 0;
         for (int i =0; i < size; i++)
         {
             for(int j =0; j < size; j++)
             {
                 vertices[c] = new Vector3(i, j, Mathf.Sin(j+i+Mathf.PI));
                 normals[c] = -Vector3.forward;
                 float mult = 1.0f / ((float)(size));
                 uvc[c] = new Vector2(((float)(i))*mult, ((float)(j)) * mult);
                 c++;
             }
         };

         int[] triangles = new int[(size-1)*(size-1)*6];
         int counter = 0;

         {
             for (int i = 0; i < size - 1; i++)
             {
                 for (int j = 0; j < size - 1; j++)
                 {
                     setTriangle(ref triangles, ref counter, i * size + j);
                     setTriangle(ref triangles, ref counter, (i + 1) * size + j);
                     setTriangle(ref triangles, ref counter, i * size + j + 1);

                     setTriangle(ref triangles, ref counter, (i + 1) * size + j);
                     setTriangle(ref triangles, ref counter, (i + 1) * size + j + 1);
                     setTriangle(ref triangles, ref counter, i * size + j + 1);

                 };
             }
         };

         mesh.Clear();
         mesh.vertices = vertices;
         mesh.triangles = triangles;
         mesh.normals = normals;
         mesh.uv = uvc;
         mesh.RecalculateNormals();

         gameObject.transform.position = new Vector3(-55, -60, 90);

     void setTriangle(ref int[] triangle, ref int index, int num)
     {
         triangle[index++] = num;
     }

以及我的结果。第一张图片是 250 x 250 点。第二个是 400 x 400。第三个是更大的图景

250x250 400x400

标签: unity3dpolygonmesh

解决方案


我认为你已经超过了最大值。尺寸为 400x400 时网格的顶点数。

默认最大值。一个网格的顶点数是 65535。如果你想要更多,那么你必须设置:

mesh.indexFormat = 渲染.IndexFormat.UInt32;

但这不能保证在所有平台上都支持。


推荐阅读