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

Устранение визуальных артефактов Mesh LOD

Выявление и устранение общих визуальных артефактов в мешах, созданных функцией Mesh LOD.

Когда Unity генерирует LODs, каждый последующий индекс LOD имеет меньше полигонов. Настройки Mesh по умолчанию LOD настроены так, что Unity выбирает определенный LOD, когда сетка имеет соответствующий размер на экране. В большинстве случаев это делает артефакты упрощения сетки незаметными. Рекомендации в этом разделе помогают уменьшить артефакты, когда они становятся проблемой.

Информацию о том, как просматривать сгенерированные LODs и проверять их на предмет артефактов, см. в Вид генерируется LODs. При проверке LODs учитывайте размер, в котором они должны отображаться на экране.

Деформированные или отсутствующие элементы сетки

Симптомы

Автоматически генерируемые меши выглядят искаженными или отображают неправильно расположенные текстуры.

Например, на следующих иллюстрациях показана исходная модель дерева, артефакты после создания LODs и сравнение с LODs, созданным вручную с аналогичным количеством треугольников.

Оригинальная модель:

Модель дерева с элементами высокой кривой.
Модель дерева с элементами высокой кривой.

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

Слева: автоматически созданный LOD, 18469 треугольников. Права: вручную созданный LOD, 18792 треугольников.
Слева: автоматически созданный LOD, 18469 треугольников. Права: вручную созданный LOD, 18792 треугольников.

На следующей иллюстрации показана значительная потеря деталей в автоматически генерируемой сетке LOD4. Например, исчезают части листвы. Для сравнения, в ручной сетке LOD с меньшим количеством треугольников имеются части листвы.

Слева: автоматически созданный LOD, 8507 треугольников. Справа: вручную созданный LOD, 5856 треугольников.
Слева: автоматически созданный LOD, 8507 треугольников. Справа: вручную созданный LOD, 5856 треугольников.

Причина

Первоначальная меш имеет области с высокой кривизной или подсетки с разъединенными частями.

Резолюция

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

  • Если все LODs в сцене отображают артефакты, попробуйте уменьшить значение Mesh LOD Threshold.

  • Если определенная сетка отображает артефакты, попробуйте настроить на объект LOD настройки.

  • Если качество хорошее для более подробных LODs (например, LOD0 — LOD2), но значительно падает при определенном индексе, используйте настройку Limit LODs, чтобы убедиться, что Unity не генерирует LODs ниже определенного уровня качества.

  • Если другие подходы не помогают, отключите генерацию Mesh LOD для определенной сетки и используйте вместо этого функцию Group LOD.

Артефакты деформации рендерера Skinned Mesh

Симптомы

Применение смешанных деформаций формы к сетке LOD приводит к неожиданным формам и визуальным артефактам.

Например, следующая модель имеет смешанную деформацию формы, которая включает вершины на краю куба.

Слева: первоначальная сетка, край имеет вершину в середине. Права: деформированная state сетки, вершина в середине края служит в качестве ключевой точки деформации.
Слева: исходный меш, у ребра есть вершина посередине. Справа: деформированное состояние меша, вершина в середине ребра служит ключевой точкой деформации.

На следующей иллюстрации показан меш LOD1, созданный из исходного меша. Форма идентична исходной, но вершины в середине ребра нет. В исходном недеформированном состоянии (слева) это не вызывает проблем. Когда Unity применяет деформацию, на форме появляется нежелательный артефакт, потому что деформация зависит от отсутствующей вершины.

Слева: LOD1, созданная с помощью Mesh LOD, некоторые вершины на рёбрах отсутствуют, недеформированная форма идентична оригиналу. Права: деформированная форма имеет артефакты.
Слева: LOD1, созданная с помощью Mesh LOD, некоторые вершины на рёбрах отсутствуют, недеформированная форма идентична оригиналу. Права: деформированная форма имеет артефакты.

Причина

Автоматический генератор LOD анализирует статический недеформированный меш. Он может удалить вершины, несущественные в недеформированном состоянии, но отсутствие которых вызывает артефакты при деформации в Unity.

Резолюция

Если при применении деформации к мешам возникают артефакты, используйте следующие методы для их устранения:

  • Если качество хорошее для более подробных LODs (например, LOD0 — LOD2), но значительно падает при определенном индексе, используйте настройку Limit LODs, чтобы убедиться, что Unity не генерирует LODs ниже определенного уровня качества.

  • Если другие подходы не помогают, отключите генерацию Mesh LOD для определенной сетки и используйте вместо этого функцию Group LOD.

Артефакты освещения из-за неправильных нормальных

Симптомы

Реакция на освещение на поверхности сетки LOD не соответствует геометрии.

Причина

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

Слева: нормы в исходной сетке. Права: нормы в LOD2, созданные с помощью Mesh LOD.
Слева: нормы в исходной сетке. Права: нормы в LOD2, созданные с помощью Mesh LOD.

Резолюция

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

  • Если все LODs в сцене отображают артефакты, попробуйте уменьшить значение Mesh LOD Threshold.

  • Если определенная сетка отображает артефакты, попробуйте настроить на объект LOD настройки.

  • Если качество хорошее для более подробных LODs (например, LOD0 — LOD2), но значительно падает при определенном индексе, используйте настройку Limit LODs, чтобы убедиться, что Unity не генерирует LODs ниже определенного уровня качества.

  • Если другие подходы не помогают, отключите генерацию Mesh LOD для определенной сетки и используйте вместо этого функцию Group LOD.

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