Определение скрытой поверхности

редактировать
Видимость в 3D компьютерной графике

В 3D компьютерной графике, определение скрытой поверхности (также известное как определение показанной поверхности, удаление скрытой поверхности (HSR ), отсечение окклюзии (OC) или определение видимой поверхности (VSD )) - это процесс определения того, какие поверхности и части поверхностей можно увидеть под определенным углом обзора. Алгоритм определения скрытой поверхности является решением проблемы видимости, которая была одной из первых серьезных проблем в области компьютерной 3D-графики. Процесс определения скрытой поверхности иногда называют сокрытием, а такой алгоритм иногда называют скрытием . Когда речь идет о рендеринге линий, это известно как удаление скрытых линий. Определение скрытой поверхности необходимо для правильной визуализации сцены, чтобы нельзя было просматривать элементы, скрытые за самой моделью, позволяя быть видимой только естественным образом видимой части графики.

Содержание
  • 1 Предпосылки
  • 2 Алгоритмы
  • 3 Выбраковка и определение видимой поверхности
    • 3.1 Отсечение усеченного обзора
    • 3.2 Отсечение задней поверхности
    • 3.3 Выбраковка вклада
    • 3.4 Отсечение окклюзии
  • 4 Разделяй и властвуй
  • 5 Источники
Предпосылки

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

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

С учетом конвейера рендеринга, проекции, отсечения и этапы растеризации по-разному обрабатываются следующими алгоритмами:

Z-буферизация
Во время растеризации значение глубины / Z каждого пикселя (или выборки в случае анти- -aliasing, но без потери общности используется термин пиксель) сравнивается с существующим значением глубины. Если текущий пиксель находится за пикселем в Z-буфере, пиксель отклоняется, в противном случае он затеняется, а его значение глубины заменяет значение в Z-буфере. Z-буферизация легко поддерживает динамические сцены и в настоящее время эффективно реализована в графическом оборудовании. Это действующий стандарт. Стоимость использования Z-буферизации заключается в том, что она использует до 4 байтов на пиксель и что алгоритм растеризации должен проверять каждую растеризованную выборку на соответствие Z-буферу. Z-буфер также может страдать от артефактов из-за ошибок точности (также известных как Z-борьба ).
буферы покрытия () и поверхностный буфер (S-буфер )
Быстрее, чем Z-буферы и обычно использовались в играх эпохи Quake I. Вместо того, чтобы сохранять значение Z на пиксель, они хранят список уже отображаемых сегментов в каждой строке экрана. Затем новые полигоны вырезаются против уже отображаемых сегментов, которые могут скрыть S-буфер может отображать несортированные многоугольники, в то время как C-буфер требует, чтобы полигоны отображались от ближайшего до самого дальнего. Поскольку метод C-буфера не требует, чтобы пиксель рисовался более одного раза, процесс немного Это обычно использовалось с деревьями разделения двоичного пространства (BSP), которые обеспечивали сортировку полигонов.
Сортированный список активных ребер
Используется в Quake 1, это хранил список краев уже отображаемых многоугольников (см. рендеринг строк ). Полигоны отображаются от ближайшего к фу самый правый. Новые полигоны обрезаются по краям уже отображаемых полигонов, создавая новые полигоны для отображения, а затем сохраняя дополнительные края. Его намного сложнее реализовать, чем S / C / Z-буферы, но он намного лучше масштабируется с увеличением разрешения.
Алгоритм Painter
сортирует полигоны по их барицентру и вытягивает их назад. Это приводит к небольшому количеству артефактов при применении к сценам с полигонами аналогичного размера, образующими гладкие сетки, и при включенном отбраковке задней поверхности. Стоимость здесь - это этап сортировки и тот факт, что могут возникать визуальные артефакты. Этот алгоритм нарушен разработкой для общих сцен, так как он не может обрабатывать многоугольники в различных общих конфигурациях, таких как поверхности, которые пересекаются друг с другом.
Разделение двоичного пространства (BSP)
Делит сцену вдоль плоскости, соответствующие границам многоугольника. Подразделение построено таким образом, чтобы обеспечить однозначное упорядочение глубины из любой точки сцены при обходе BSP-дерева. Недостатком здесь является то, что дерево BSP создается с помощью дорогостоящей предварительной обработки. Это означает, что он менее подходит для сцен, состоящих из динамической геометрии. Преимущество состоит в том, что данные предварительно отсортированы и не содержат ошибок и готовы к использованию ранее упомянутых алгоритмов. Обратите внимание, что BSP - это не решение HSR, а только вспомогательное средство.
Трассировка лучей
Попытки смоделировать путь световых лучей к точке обзора, отслеживая лучи от точки обзора до сцены. Хотя это не алгоритм удаления скрытых поверхностей как таковой, он неявно решает проблему удаления скрытых поверхностей, находя ближайшую поверхность вдоль каждого луча обзора. Фактически это эквивалентно сортировке всей геометрии на попиксельной основе.
Алгоритм Варнока
Делит экран на более мелкие области и сортирует треугольники внутри них. Если есть неоднозначность (т.е. полигоны перекрываются по глубине в этих областях), происходит дальнейшее подразделение. В пределе может происходить подразделение вплоть до уровня пикселей.
Отбор и определение видимой поверхности

Связанная область с определением видимой поверхности (VSD) - это отсечение, которое обычно происходит до VSD при рендеринге трубопровод. Примитивы или пакеты примитивов могут быть полностью отклонены, что обычно снижает нагрузку на хорошо спроектированную систему.

Преимущество отбраковки на ранней стадии конвейера заключается в том, что целые невидимые объекты не нужно извлекать, преобразовывать, растрировать или затенять. Вот несколько типов алгоритмов отсечения:

Отсечение усеченного обзора

Угол обзора усеченный угол - это геометрическое представление объема, видимого виртуальной камерой . Естественно, объекты вне этого объема не будут видны на окончательном изображении, поэтому они отбрасываются. Часто объекты лежат на границе усеченной области обзора. Эти объекты разрезаются на части вдоль этой границы в процессе, называемом обрезкой, а части, которые лежат за пределами усеченной пирамиды, отбрасываются, так как их негде нарисовать.

Отсечение обратной стороны

В случае 3D-объектов часть поверхности объекта обращена к камере, а остальная часть обращена от камеры, т.е. находится на задней стороне объекта, мешает передняя сторона. Если объект полностью непрозрачен, рисовать эти поверхности не нужно. Они определяются порядком намотки вершин: если нарисованный треугольник имеет свои вершины в плоскости проекции по часовой стрелке, когда он смотрит в камеру, они переключаются в порядок против часовой стрелки, когда поверхность отворачивается от камеры.

Между прочим, это также делает объекты полностью прозрачными, когда камера точки обзора расположена внутри них, потому что тогда все поверхности объекта обращены в сторону от камеры и обрабатываются средством визуализации. Чтобы этого не произошло, объект должен быть двусторонним (т.е. не нужно отбраковывать заднюю поверхность) или иметь отдельные внутренние поверхности.

Отбраковка вклада

Часто объекты находятся так далеко, что не вносят существенного вклада в окончательное изображение. Эти объекты выбрасываются, если их экран проекция слишком мала. См. Плоскость отсечения.

Отсечение окклюзии

Объекты, которые полностью находятся позади других непрозрачных объектов, могут быть отсечены. Это очень популярный механизм для ускорения рендеринга больших сцен от среднего до высокого. Есть несколько типов подходов к отбраковке окклюзии:

  • Потенциально видимый набор (PVS) рендеринг делит сцену на регионы и предварительно вычисляет видимость для них. Затем эти наборы видимости индексируются во время выполнения для быстрого получения высококачественных наборов видимости (с учетом сложных взаимодействий окклюдера).
  • Визуализация портала разделяет сцену на ячейки / сектора (комнаты) и порталы (двери), и вычисляет, какие сектора видны, отсекая их от порталов.

В диссертации Хансонга Чжана «Эффективное отсечение окклюзии для интерактивного отображения произвольных моделей» описывается подход отсечения окклюзии.

.

Разделяй и властвуй

Популярная тема в литературе VSD - разделяй и властвуй. Алгоритм Варнока впервые применил разделение экрана. Трассировка луча - это метод трассировки лучей, при котором видимые объемы делятся на лучи. Различные подходы к разделению экранного пространства, уменьшающие количество примитивов, рассматриваемых в каждой области, например мозаика или отсечение BSP в экранном пространстве. Тайлинг может использоваться как предварительный процесс для других методов. Аппаратное обеспечение Z-буфера обычно может включать в себя грубый "hi-Z", против которого примитивы могут быть отклонены раньше без растеризации, это форма отбраковки окклюзии.

Иерархии ограничивающих объемов (BVH) часто используются для разделения пространства сцены (примерами являются дерево BSP, октодерево и дерево kd ). Это позволяет определять видимость иерархически: эффективно, если узел в дереве считается невидимым, то все его дочерние узлы также невидимы, и дальнейшая обработка не требуется (все они могут быть отклонены средством визуализации). Если узел считается видимым, необходимо оценить каждый из его дочерних элементов. Этот обход фактически представляет собой обход дерева, где невидимость / окклюзия или достижение листового узла определяет, следует ли останавливаться или рекурсивно соответственно.

Источники
Последняя правка сделана 2021-05-23 11:14:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте