Level of Detail (LOD)

От Tony_Hilliam, Октябрь 06 2017 (Перевод Dimokus)


В нашей следующей версии Trainz вы найдете не только расширенные методы рендеринга, но также вы можете найти новые системы, предназначенные для повышения производительности или для более эффективного управления существующими функциями. Одна из этих систем, которая была переработана, - наша система «LOD».

Что такое и с чем его едят. Level of Detail (LOD)

Мы уже упоминали LOD, но что это значит и зачем нам это нужно?
На изображении ниже вы можете увидеть 5 LOD для дополнения (да, программисты любят считать, начиная с 0 smile )
В 2D-представлении вверху вы видите, что формы сетки становятся проще и проще. «3D» вид ниже показывает размер который отображается в игре на указанном расстоянии.

Таким образом, маленькая «точка», которая появляется на расстоянии 1 км и выше, по сути, не является высокой площадью 40 000 полигонов «сфера», а вместо этого очень простым 8-сторонним объектом.
Как вы можете видеть на изображении выше, трудно сказать, что вы не смотрите на исходный объект, когда камера уходит, но вместо этого просматривает все более упрощенную версию LOD этого объекта.
Конечно, главное преимущество добавления этих версий LOD заключается в том, что ваше оборудование не вынуждено показывать миллионы полигонов, которые по сути дела не видны на экране.

Контроль расстояний LOD

Поскольку качество и точность контента улучшаются с течением времени, а игровые объекты выглядят все более реалистичными, становится все более важным обеспечить тщательный контроль уровня детализации (LOD).
Представьте себе влияние производительности ресурса с очень высоким разрешением, которое не уменьшает сложность, когда оно отображается как несколько пикселей на экране.
В текущем Trainz, игра решает, когда уменьшить LOD. В следующей версии Trainz мы предоставляем контент-создателям возможность настраивать и контролировать каждый отрезок LOD. Это дает больше гибкости, позволяя более агрессивно уменьшать сцену

Мы будем вводить новый тег config.txt («mesh-table-lod-transition-distance-distance») для управления расстоянием, на котором происходят переходы LOD.
Использование этой функции заменяет теги «mesh-detail-level-count-count» и «Maximum-lod-distance», которые будут устаревшими по сравнению с v4.6 (ожидаемый номер сборки для нашего следующего продукта Trainz).
Тег «mesh-table-lod-transition-distance-distance» будет необязательным по сравнению с v4.6, и если он используется, должен содержать массив float, определяющий конечные расстояния для каждого уровня LOD. Если этот тег опущен, то LOD не используется.
Это подходит для объектов с низкой детализацией объектов и для объектов только LM, таких как железнодорожные транспортные средства или вагоны.

Пример:

mesh-table-lod-transition-distance-10,0, 30,0, 150,0, 1000,0
В этом примере указаны уровни LOD на 5 ячеек таблицы.
Первый (LOD 0) находится в диапазоне от 0,0 м до 10,0 м.
Первый (LOD 1) составляет от 10,0 до 30,0 м.
Первый (LOD 2) находится в диапазоне от 30,0 до 150,0 м.
Первый (LOD 3) составляет от 150,0 до 1000,0 м.
Последний (LOD 4) находится в диапазоне от 1000 м.

Практический пример:

Вот пример игрового дополнения, у которого есть LOD, а не тот, который этого не делает.
Слева мы показываем <kuid2: 134105: 28049: 1> Terrace 1 - LOD
Справа мы показываем <kuid: 134105: 28041> Terrace 1


С помощью LOD создатель Paulzmay уменьшает дом от 168 полигонов до всего лишь 14 наименьших LOD.
Таким образом, при загрузке 32 000 из этих элементов (с использованием опции «Performance Anaysis» в Preview Asset) мы видим, что для версии LOD требуется всего 22 644 полигона и 9 Draw Call Count в сравнении с 1 666 224 полигонами и 53 Draw Call Count для версии без LOD. Это 80 раз меньше полигонов.
На изображении ниже находится красивый уличный фонарь. Вид крупным планом показывает, насколько подробно этот элемент на самом деле. Тем не менее, в далеком виде, без LOD, каждая лампа все еще рисуется со всеми 2780 полигонами на лампу, даже если элемент имеет ширину одного пикселя на экране. Итак, теперь сцена составляет более 12 миллионов полигонов!


Для получения дополнительной информации о будущей разработке Trainz обязательно ознакомьтесь с http://trainzportal.com или просмотрите все статьи
Все создатели контента, которые хотят начать изучать технику, найдут некоторую исходную информацию в вики-каталоге Trainz