В компьютерной графике уровень детализации ( LOD ) относится к сложности представления 3D-модели . [1] [2] [3] LOD может быть уменьшен по мере удаления модели от зрителя или в соответствии с другими метриками, такими как важность объекта, скорость относительно точки обзора или положение. Методы LOD повышают эффективность рендеринга за счет снижения рабочей нагрузки на этапы графического конвейера , обычно преобразования вершин . Снижение визуального качества модели часто остается незамеченным из-за небольшого влияния на внешний вид объекта при удалении или быстром движении.
Хотя большую часть времени LOD применяется только к деталям геометрии , базовую концепцию можно обобщить. Недавно методы LOD также включали управление шейдерами для сохранения контроля за сложностью пикселей. Форма управления уровнем детализации применялась к текстурным картам в течение многих лет под названием mip-отображение , также обеспечивая более высокое качество рендеринга.
Обычно говорят, что «объект был LOD-улучшен », когда объект упрощен базовым алгоритмом LOD-улучшения , а также 3D-модельером, вручную создающим LOD-модели. [ необходима цитата ]
Происхождение [1] всех алгоритмов LOD для трехмерной компьютерной графики можно проследить до статьи Джеймса Х. Кларка в выпуске Communications of the ACM за октябрь 1976 года . В то время компьютеры были монолитными и редкими, а графика управлялась исследователями. Само аппаратное обеспечение было совершенно другим, как с точки зрения архитектуры, так и производительности. Таким образом, можно было наблюдать много различий в отношении сегодняшних алгоритмов, но также и много общих моментов.
Первоначальный алгоритм представлял собой гораздо более общий подход к тому, что будет обсуждаться здесь. После введения некоторых доступных алгоритмов для управления геометрией, утверждается, что наиболее плодотворные результаты были получены от "...структурирования визуализируемых сред" , что позволило использовать более быстрые преобразования и операции отсечения .
Теперь предлагается та же самая структуризация среды как способ управления изменяющейся детализацией, что позволяет избежать ненужных вычислений, но при этом обеспечивает адекватное визуальное качество:
Например, додекаэдр выглядит как сфера с достаточно большого расстояния и, таким образом, может использоваться для его моделирования, пока он рассматривается с этого или большего расстояния. Однако, если его когда-либо придется рассматривать более внимательно, он будет выглядеть как додекаэдр. Одним из решений этой проблемы является простое определение его с максимально возможной степенью детализации, которая когда-либо будет необходима. Однако тогда он может иметь гораздо больше деталей, чем требуется для представления его на больших расстояниях, и в сложной среде со множеством таких объектов будет слишком много полигонов (или других геометрических примитивов) для эффективной обработки алгоритмами видимой поверхности .
Предложенный алгоритм предусматривает древовидную структуру данных , которая кодирует в своих дугах как преобразования, так и переходы к более подробным объектам. Таким образом, каждый узел кодирует объект, и в соответствии с быстрой эвристикой , дерево спускается к листьям, которые предоставляют каждому объекту больше деталей. Когда достигается лист, могут использоваться другие методы, когда требуется более высокая детализация, например, рекурсивное подразделение Кэтмелла [2] .
Однако важным моментом является то, что в сложной среде объем информации, представленной о различных объектах окружающей среды, варьируется в зависимости от доли поля зрения, занимаемой этими объектами.
Затем в статье рассматривается отсечение (не путать с отбраковкой, хотя они часто схожи), различные соображения относительно графического рабочего набора и его влияния на производительность, взаимодействия между предлагаемым алгоритмом и другими для повышения скорости рендеринга.
Хотя представленный выше алгоритм охватывает целый ряд методов управления уровнем детализации, в реальных приложениях обычно используются специализированные методы, адаптированные к отображаемой информации. В зависимости от требований ситуации используются два основных метода:
Первый метод, Discrete Levels of Detail (DLOD) , подразумевает создание нескольких дискретных версий исходной геометрии с пониженными уровнями геометрической детализации. Во время выполнения модели с полной детализацией заменяются моделями с пониженной детализацией по мере необходимости. Из-за дискретной природы уровней может наблюдаться визуальное выскакивание при замене одной модели на другую. Это можно смягчить с помощью альфа-смешивания или морфинга между состояниями во время перехода.
Второй метод, Continuous Levels of Detail (CLOD) , использует структуру, которая содержит непрерывно изменяющийся спектр геометрических деталей. Затем структуру можно зондировать, чтобы плавно выбрать подходящий уровень детализации, требуемый для ситуации. Значительным преимуществом этого метода является возможность локального изменения детализации; например, сторона большого объекта, ближняя к виду, может быть представлена с высокой степенью детализации, одновременно уменьшая детализацию на его дальней стороне.
В обоих случаях LOD выбираются на основе некоторой эвристики, которая используется для оценки того, сколько деталей теряется при снижении детализации, например, путем оценки геометрической ошибки LOD относительно модели с полной детализацией. Затем объекты отображаются с минимальным количеством деталей, требуемым для удовлетворения эвристики, которая разработана для минимизации геометрической детализации настолько, насколько это возможно, чтобы максимизировать производительность, сохраняя при этом приемлемый уровень визуального качества.
Основная концепция дискретного LOD (DLOD) заключается в предоставлении различных моделей для представления одного и того же объекта. Получение этих моделей требует внешнего алгоритма, который часто нетривиален и является предметом многих методов редукции полигонов. Последовательные алгоритмы LOD будут просто предполагать, что эти модели доступны.
Алгоритмы DLOD часто используются в приложениях с высокой производительностью и небольшими наборами данных, которые легко помещаются в памяти. Хотя можно использовать алгоритмы , не требующие ядра , детализация информации не очень подходит для такого рода приложений. Такой алгоритм обычно проще в работе, так как он обеспечивает как более высокую производительность, так и более низкую загрузку ЦП из-за небольшого количества задействованных операций.
Методы DLOD часто используются для «автономных» движущихся объектов, возможно, включая сложные методы анимации. Другой подход используется для geomipmapping , [3] популярного алгоритма рендеринга рельефа , поскольку он применяется к сеткам рельефа, которые как графически, так и топологически отличаются от сеток «объектов». Вместо вычисления ошибки и упрощения сетки в соответствии с этим, geomipmapping использует фиксированный метод редукции, оценивает внесенную ошибку и вычисляет расстояние, на котором ошибка приемлема. Несмотря на простоту, алгоритм обеспечивает достойную производительность.
В качестве простого примера рассмотрим сферу . Дискретный подход LOD кэширует определенное количество моделей для использования на разных расстояниях. Поскольку модель может быть тривиально сгенерирована процедурно с помощью ее математической формулировки, использование другого количества точек выборки, распределенных по поверхности, достаточно для генерации различных требуемых моделей. Этот проход не является алгоритмом LOD.
Для моделирования реалистичного сценария с привязкой к преобразованию можно использовать специально написанное приложение. Использование простых алгоритмов и минимальных фрагментных операций гарантирует, что ограничение ЦП не возникнет. В каждом кадре программа вычисляет расстояние каждой сферы и выбирает модель из пула в соответствии с этой информацией. Чтобы легко продемонстрировать концепцию, расстояние, на котором используется каждая модель, жестко закодировано в исходном коде. Более сложный метод вычислил бы адекватные модели в соответствии с выбранным расстоянием использования.
OpenGL используется для рендеринга из-за его высокой эффективности в управлении небольшими партиями, сохраняя каждую модель в списке отображения, таким образом избегая накладных расходов на связь. Дополнительная нагрузка вершин обеспечивается применением двух направленных источников света, идеально расположенных на бесконечном расстоянии.
В следующей таблице сравнивается производительность рендеринга с учетом LOD и метода полной детализации ( грубой силы ).
Поскольку оборудование рассчитано на большое количество деталей, рендеринг объектов с низким количеством полигонов может давать неоптимальные результаты. HLOD избегает этой проблемы, группируя различные объекты вместе [4] . Это позволяет повысить эффективность, а также воспользоваться соображениями близости.
LOD особенно полезен в 3D-видеоиграх. Разработчики видеоигр хотят предоставить игрокам большие миры, но всегда ограничены аппаратным обеспечением, частотой кадров и природой графики видеоигр в реальном времени . С появлением 3D-игр в 1990-х годах многие видеоигры просто не визуализировали отдаленные структуры или объекты. Будут визуализироваться только близлежащие объекты, а более отдаленные части постепенно исчезнут, по сути, реализуя туман на расстоянии . Видеоигры, использующие рендеринг LOD, избегают этого эффекта тумана и могут визуализировать более крупные области. Некоторые известные ранние примеры рендеринга LOD в 3D-видеоиграх включают The Killing Cloud , Spyro the Dragon , Crash Bandicoot: Warped , Unreal Tournament и движок Serious Sam . Большинство современных 3D-игр используют комбинацию методов рендеринга LOD, используя различные модели для крупных структур и отбраковку на расстоянии для деталей окружения, таких как трава и деревья. Эффект иногда все еще заметен, например, когда персонаж игрока летит над виртуальной местностью или использует снайперский прицел для обзора на большом расстоянии. В частности, трава и листва будут казаться выскакивающими при приближении, что также известно как отбраковка листвы. [4] LOD также можно использовать для рендеринга фрактальной местности в реальном времени. [5] Система Nanite в Unreal Engine 5 по сути реализует уровень детализации в сетках, а не только в объектах в целом.
LOD встречается в ГИС и 3D-моделях городов как схожая концепция. Она указывает, насколько тщательно были отображены реальные объекты и насколько модель соответствует своему реальному аналогу. Помимо геометрической сложности, в LOD модели могут учитываться и другие метрики, такие как пространственно-семантическая согласованность, разрешение текстуры и атрибуты. Стандартный CityGML содержит одну из самых известных категоризаций LOD.
Аналог «LOD-ing» в ГИС называется генерализацией .