Что такое уровни детализации (LOD) в играх и как с ними работать

Разбираем одну из самых популярных техник оптимизации 3D-графики. Иллюстрация: Катя Павловская для Skillbox Media Структура внутриигровых миров стала достаточно сложной и масштабной. И чтобы обеспечить плавный игровой процесс и снизить нагрузку на аппаратное обеспечение, разработчики ищут компромисс между привлекательной визуальной составляющей и производительностью.
Поддерживать этот баланс помогают уровни детализации. Уровни детализации, или LOD, — это метод программирования 3D-графики, при котором детализация 3D-модели изменяется в зависимости от расстояния между героем (или внутриигровой камерой) и объектом. Иными словами, чем дальше от героя находится объект, тем проще его структура: количество полигонов уменьшается, а разрешение текстур становится ниже. Этот подход позволяет решить сразу несколько задач. Уровни детализации в 3D-графике смотрятся довольно органично, ведь в реальной жизни человек тоже не может рассмотреть детали каждого объекта с большого расстояния. Например, издалека поле кажется нам плоским зелёным ковром. А если мы будем стоять рядом с ним, мы сможем рассмотреть все растения. Сама концепция уровней детализации зародилась ещё в середине 1970-х годов прошлого века и впервые упомянута в работе Джеймса Кларка — будущего основателя Silicon Graphics. Кларк понимал, что объекты, занимающие на экране всего несколько точек, не требуют больших ресурсов при отрисовке. В его исследовании представлено несколько схем, где условно обозначена иерархия объектов по мере отдаления от камеры. К слову, в этой работе также упоминается и концепция отсечения геометрии за пределами зоны видимости камеры (Frustum Culling), которая наравне с Occlusion Culling в настоящее время считается одним из главных методов оптимизации 3D-графики. Впервые уровни детализации начали применять в играх с открытыми пространствами, что характерно для авиасимуляторов (Flight Simulator 2). Поначалу их рисовали вручную художники. Но уже к началу 1990-х появились такие алгоритмы, как сокращение триангулярных мешей и упрощение моделей путём кластеризации вершин, которые автоматически уменьшали детализацию отдалённых объектов, сохраняя при этом их считываемость. В настоящее время применение уровней детализации стало стандартом индустрии. Сейчас они встречаются практически в каждой игре и неигровом приложении с 3D-графикой, особенно если мир подразумевает наличие открытых пространств. Существует несколько подходов управления уровнями детализации. Дискретные уровни детализации (DLOD). Для исходного объекта заранее создаётся несколько вариаций моделей с меньшим количеством полигонов. Когда герой или внутриигровая камера отдаляется от объекта, оригинальная модель заменяется на менее детализированный клон. Порой в играх встречаются моменты, когда персонаж быстро подбегает к объекту, а тот на долю секунды остаётся размытым и низкополигональным. Разработчики стараются сводить такие нежелательные эффекты к минимуму, создавая плавные переходы из одного LOD в другой. Например, в Unity для этого можно использовать опцию Fade Mode. Что касается крупных объектов (дома и другие масштабные постройки), то единственный приемлемый вариант при этом подходе — подразделять их на несколько элементов. Непрерывные уровни детализации (CLOD). Формируется структура данных, на основе которой уровни детализации объекта подстраиваются под конкретную ситуацию, а не подбираются из предварительно созданных вариантов, как в методе выше. Иными словами, детализация меняется локально. Например, часть объекта рядом с персонажем может быть высокой детализации, а другая часть — низкой. Таким образом, при непрерывных уровнях детализации в объектах не будет избыточного количества полигонов, что способствует лучшей оптимизации ресурсов. Иерархические уровни детализации (HLOD). При этом методе из нескольких вариаций меша создаётся простой промежуточный меш со сгенерированными…
Источник: skillbox.ru — skillbox.ru/media/gamedev/chto-takoe-urovni-detalizatsii-lod-v-igrakh-i-kak-s-nimi-rabotat/