Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход

Как работает генератор Mesh LOD

Mesh LOD предоставляет генератор LOD, который запускается во время импорта модели.

Генератор LOD анализирует сетку и определяет, какие рёбра свернуться, а какие треугольники сохранить, сохраняя при этом первоначальную форму и избегая визуальных артефактов. После выбора треугольников для сохранения для LOD, генератор сохраняет индексы треугольников в буфере индексов первоначальной сетки.

Изначальная сетка должна иметь по крайней мере 256 треугольников для начала процесса упрощения.

В первой итерации генератор запускается на исходной сетке. В каждой последующей итерации он запускается на сетке LOD из предыдущей итерации и добавляет набор индексов в буфер индексов. Генератор не добавляет никаких новых вершин. Все LODs повторно используют один и тот же буфер вершин.

Итеративный процесс генерации LOD
Итеративный процесс генерации LOD

Каждый последующий LOD содержит приблизительно в половину меньше индексов, чем предыдущий.

Процесс создания прекращается, когда выполняется одно из следующих условий:

  • Генератор достигает индекса LOD, указанного в настройке Limit LODs.

  • Для продолжения упрощения сетки не хватает треугольников. В большинстве случаев минимальное число составляет около 64.

  • Генератор не может пропустить больше вершин.

Часть буфера индекса, которую использует конкретный LOD, определяется следующим образом: MeshLodRange структура. Диапазон индексов задаётся относительно диапазона субмеша.

Генератор LOD работает лучше всего для органических форм или относительно плоских поверхностей с высокой плотностью вершин, например: живые существа, скалы, скульптуры и т.д. Генератор может дать нежелательные результаты на мешах с высокой кривизной или мешах, состоящих из многих разъединенных частей.

Сетка LOD посадочное место памяти

Особенностью Mesh LOD является хранение всех данных о LODs в индексном буфере первоначальной сетки. Каждая последующая LOD содержит примерно в половину меньше индексов, чем предыдущая. Максимальное увеличение размера первоначального индексного буфера составляет 100%. Это увеличение меньше, если вы используете свойство Maximum Levels или свойство Discard Odd Levels.

Индексный буфер сетки относительно мал по сравнению с общим размером сетки. Это делает посадочное место памяти Mesh LOD меньше, чем посадочное место Группы LOD. С Группой LOD, Unity должен хранить полную сетку с вершинами и индексным буфером для каждой LOD, а также дополнительные GameObjects и компоненты.

Дополнительные ресурсы