网格中具有大量点的大三角形多边形

时间:2018-07-31 13:01:17

标签: unity3d polygon mesh

创建网格时,我遇到了一个问题:在游戏和场景中都出现了一个大的三角形多边形。问题是系统尺寸为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 x400。第三个是更大的图片

250x250 400x400

1 个答案:

答案 0 :(得分:0)

我认为您已经超过了极限。大小为400x400时网格的顶点数量。

默认最大网格的顶点数是65535。如果要增加顶点,则必须设置:

mesh.indexFormat = Rendering.IndexFormat.UInt32;

但这并不保证所有平台都支持。