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

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

Фон

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

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

Алгоритмы

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

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

Выбраковка и определение видимой поверхности

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

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

Выбраковка усеченного вида

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

Отбраковка обратной стороны

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

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

Выбраковка вклада

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

Удаление окклюзии

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

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

Диссертация Ханьсуна Чжана "Эффективное устранение окклюзии для интерактивного отображения произвольных моделей"[1] описывает метод удаления окклюзии.


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

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

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

Источники

  1. ^ «Удаление окклюзии с помощью иерархических карт окклюзии». www.cs.unc.edu.