Вы можете сжать meshосновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
Просматривайте в Словарь данные в Unity, чтобы уменьшить их размер и повысить производительность. Unity предоставляет два способа сжатия мешей. Они работают по-разному и влияют на разные аспекты производительности:
- Сжатие вершин — это параметр, который влияет на каждую сетку в вашем проекте. Это позволяет вам использовать форматы данных более низкой точности в ваших сетках. Это уменьшает размер данных сетки в памяти, немного уменьшает размер файла и может повысить производительность графического процессора. Потенциальным недостатком является потеря точности.
- Сжатие сетки — это параметр, влияющий на отдельные сетки. Он сжимает данные сетки на диске, что уменьшает размер файла. Потенциальными недостатками являются увеличение времени загрузки, увеличение использования временной памяти при загрузке и возможность сжатияметода хранения данных, количество места для хранения, которое ему требуется. См. Сжатие текстур, Сжатие анимации, Сжатие звука, Сжатие компоновки.
См. в артефактах Словарь.
Вы можете использовать оба метода сжатия в одном проекте, но не в одном меше. Если вы применяете сжатие сетки к сетке, Unity не применяет сжатие вершин к этой сетке.
Примечание. Настройки Unity по умолчанию для Vertex Compression и Mesh Compression подходят для большинства проектов. Вы должны изменять эти настройки, только если у вас возникла проблема, и оценить результаты, чтобы убедиться, что изменения помогли.
Сжатие вершин
Настройка Vertex Compression позволяет использовать форматы данных более низкой точности для всех сеток в вашем проекте. Вы делаете это, настраивая тип данных для определенных каналов данных.
Вы можете изменить тип данных для данного канала с FP32 (с плавающей запятой32, 32-разрядное число с плавающей запятой) на FP16 (с плавающей запятой16, также известный как число с плавающей запятой половинной точности). Формат FP16 хранит числа с меньшим количеством знаков после запятой, чем числа FP32, что означает, что он занимает меньше места, но обеспечивает немного меньшую точность.
Данные, преобразованные из FP32 в FP16, занимают меньше места в памяти и немного меньше места на диске. На графическом процессоре данные используют меньшую пропускную способность памяти, что может немного повысить производительность графического процессора.
Техника сжатия вершин сжимает сетку в соотношении, которое зависит от того, сколько атрибутов вершин вы выбрали для сжатия. Коэффициент сжатия обычно составляет около 1,45x, когда вы сжимаете нормали, касательные, цвет и три набора координат UV.
Ограничения сжатия вершин
Для использования сжатия вершин сетка должна соответствовать следующим требованиям:
- Свойство Read/Write Enabled для сетки должно быть отключено. Это свойство можно изменить на вкладке "Модель" окна "Параметры импорта модели".
- Сетка не должна быть оболочкой.
- Целевая платформа должна поддерживать значения FP16.
- Для модели, содержащей сетку, для параметра Сжатие сетки должно быть установлено значение "Выкл."
Если сетка не соответствует ни одному из этих требований, Unity не применяет сжатие вершин к этой сетке, и все каналы данных в сетке используют числа точности FP32.
Настройка сжатия вершин
Чтобы изменить настройки сжатия вершин:
1. Откройте настройки проигрывателя (меню: Правка > Настройки проекта > Проигрыватель).
2. Откройте подменю Другие настройки и перейдите к заголовку Оптимизация.
3. Откройте раскрывающийся список Сжатие вершин и выберите любой канал, чтобы включить или отключить сжатие для этого канала. Вы также можете выбрать Нет, чтобы отключить сжатие для всех каналов, или выбрать Все, чтобы включить сжатие для всех каналов.
По умолчанию для Vertex Compression установлено значение Смешанное, которое Unity отображает, когда в раскрывающемся списке активны несколько вариантов. По умолчанию Unity использует сжатие вершин для следующих каналов:
- Normal
- Tangent
- Tex Coord 0
- Tex Coord 2
- Tex Coord 3
Unity сжимает эти каналы по умолчанию, потому что в большинстве случаев эта комбинация настроек обеспечивает хорошее сочетание сохраненной памяти без существенных изменений во внешнем виде сетки. Unity не сжимает другие настройки, Position и Tex Coord 1, по умолчанию, потому что они, скорее всего, повлияют на внешний вид меша и не обеспечивают значительного сокращения использования памяти. Если вы намерены включить сжатие вершин для каналов Position и Tex Coord 1, вам следует протестировать настройки, чтобы убедиться, что они не вызывают артефактов в ваших сетках.
Сжатие сетки
Вы можете использовать параметр «Сжатие сетки», чтобы сжать данные сетки для данного актива модели на диске. Алгоритм Mesh Compression является более агрессивным, чем метод Vertex Compression, что приводит к более высоким коэффициентам сжатия и, следовательно, к меньшим размерам файлов. Однако у него есть и другие недостатки.
Когда вы применяете этот параметр, Unity использует алгоритм для замены явных значений для каждого канала сжатия диапазоном между максимальным и минимальным значением, где фиксированное количество битов представляет, где каждое значение попадает в этот диапазон. Это уменьшает размер данных сетки на диске. Когда Unity загружает сетку в память, она распаковывает данные, то есть преобразует этот диапазон обратно в исходные значения. После этого производительность не пострадает.
Этот метод может быть полезен, если вам нужно максимально уменьшить размер окончательной сборки или размер пакета AssetBundle, в котором находится сетка, и если снижение производительности из-за распаковки во время выполнения приемлемо.
Ограничения сжатия сетки
Во время выполнения распаковка сетки использует дополнительные ресурсы ЦП; это означает, что загрузка данных сетки занимает больше времени. Unity также использует больше временной памяти при распаковке мешей.
Кроме того, относительно высокая степень сжатия означает, что нежелательные артефакты могут появляться, когда Unity распаковывает сетку. Чтобы избежать этих артефактов, следует протестировать каждую опцию для сетки, которую вы хотите сжать, и убедиться, что она отображается правильно.
Настройка сжатия сетки

Чтобы использовать параметр сжатия сетки:
<ол>Доступны следующие значения: Высокий, Средний, Низкий или Выкл. В следующей таблице показаны типичные коэффициенты сжатия для каждого из этих параметров:
Значение | Вершины | Нормалы | Касательные | УФ | Цвет |
---|---|---|---|---|---|
Off | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
Low | 1.6 | 4.6 | 4.4 | 2.0 | 1.0 |
Medium | 2.0 | 5.6 | 5.3 | 3.2 | 1.3 |
High | 3.2 | 7.4 | 6.7 | 4.0 | 2.0 |
Коэффициенты сжатия для метода сжатия сетки
Примечание. В столбце «Цвет» в приведенной выше таблице показаны соотношения для сетки, в которой используется формат UNorm8. Для сетки, использующей формат FP32 для цветов вершин, коэффициенты равны 4,0 при настройке "Низкая", 5,3 при настройке "Средняя" и 8,0 при настройке "Высокая".