@i__egor

Почему генерация меша в unity так странно работает?

Пробую генерировать плоскость с равномерной сеткой. Например 1024х1024 квадрата. Но код ниже генерирует нормально только 256х и меньше, после 256 пробовал 512 и тд генерация почему-то обрывается и сетка генерируется некорректно с полосами? может есть ограничения (количество вершин около миллиона это не много ведь)? может еще есть какие настройки о которых я не знаю? пробовал другой код, который делает то же самое но по другому, вся та же проблема
vertices = new Vector3[(xSize + 1) * (ySize + 1)];
            Vector2[] uvs = new Vector2[vertices.Length];
            Vector4[] tangents = new Vector4[vertices.Length];
            Vector4 tangent = new Vector4(1f, 0f, 0f, -1f);
            for (int i = 0, y = 0; y <= ySize; y++)
            {
                for (int x = 0; x <= xSize; x++, i++)
                {
                    vertices[i] = new Vector3(x, y);
                    uvs[i] = new Vector2((float)x / xSize, (float)y / ySize);
                    tangents[i] = tangent;
                }
            }          

            mesh.vertices = vertices;
            mesh.uv = uvs;
            mesh.tangents = tangents;

            int[] triangles = new int[xSize * ySize * 6];
            int ti = 0, vi = 0;
            for (int y = 0; y < ySize; y++, vi++)
            {
                for (int x = 0; x < xSize; x++, ti += 6, vi++)
                {
                    triangles[ti] = vi;
                    triangles[ti + 1] = triangles[ti + 4] = vi + xSize + 1;
                    triangles[ti + 2] = triangles[ti + 3] = vi + 1;
                    triangles[ti + 5] = vi + xSize + 2;
                }
            }
            
            mesh.triangles = triangles;      
            mesh.RecalculateNormals();
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
NikS42
@NikS42
Unity developer
А откуда такая уверенность, что миллион вершин - это немного? Это преступно много и нет ситуации, где цельный меш с такой плотностью сетки мог бы понадобиться. Но если все равно хочется, созданном мешу нужно переключить этот параметр:
mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы