В 3D компьютерной графике, определение скрытой поверхности (также известное как определение показанной поверхности, удаление скрытой поверхности (HSR ), отсечение окклюзии (OC) или определение видимой поверхности (VSD )) - это процесс определения того, какие поверхности и части поверхностей можно увидеть под определенным углом обзора. Алгоритм определения скрытой поверхности является решением проблемы видимости, которая была одной из первых серьезных проблем в области компьютерной 3D-графики. Процесс определения скрытой поверхности иногда называют сокрытием, а такой алгоритм иногда называют скрытием . Когда речь идет о рендеринге линий, это известно как удаление скрытых линий. Определение скрытой поверхности необходимо для правильной визуализации сцены, чтобы нельзя было просматривать элементы, скрытые за самой моделью, позволяя быть видимой только естественным образом видимой части графики.
Определение скрытых поверхностей - это процесс, при котором поверхности, которые не должны быть видны пользователю (например, потому что они лежат позади непрозрачные объекты, такие как стены) не отображаются. Несмотря на прогресс в аппаратных возможностях, все еще существует потребность в усовершенствованных алгоритмах рендеринга . Обязанность механизма рендеринга состоит в том, чтобы учесть большие мировые пространства, и, поскольку размер мира приближается к бесконечности, движок не должен замедляться, а оставаться на постоянной скорости. Оптимизация этого процесса зависит от возможности обеспечить развертывание как можно меньшего количества ресурсов для визуализации поверхностей, которые в конечном итоге не будут отображаться пользователю.
Есть много методов для определения скрытой поверхности. По сути, они представляют собой упражнение в сортировке и обычно различаются по порядку, в котором выполняется сортировка, и по способам разделения проблемы. Сортировка большого количества графических примитивов обычно выполняется с помощью алгоритмов «разделяй и властвуй».
С учетом конвейера рендеринга, проекции, отсечения и этапы растеризации по-разному обрабатываются следующими алгоритмами:
Связанная область с определением видимой поверхности (VSD) - это отсечение, которое обычно происходит до VSD при рендеринге трубопровод. Примитивы или пакеты примитивов могут быть полностью отклонены, что обычно снижает нагрузку на хорошо спроектированную систему.
Преимущество отбраковки на ранней стадии конвейера заключается в том, что целые невидимые объекты не нужно извлекать, преобразовывать, растрировать или затенять. Вот несколько типов алгоритмов отсечения:
Угол обзора усеченный угол - это геометрическое представление объема, видимого виртуальной камерой . Естественно, объекты вне этого объема не будут видны на окончательном изображении, поэтому они отбрасываются. Часто объекты лежат на границе усеченной области обзора. Эти объекты разрезаются на части вдоль этой границы в процессе, называемом обрезкой, а части, которые лежат за пределами усеченной пирамиды, отбрасываются, так как их негде нарисовать.
В случае 3D-объектов часть поверхности объекта обращена к камере, а остальная часть обращена от камеры, т.е. находится на задней стороне объекта, мешает передняя сторона. Если объект полностью непрозрачен, рисовать эти поверхности не нужно. Они определяются порядком намотки вершин: если нарисованный треугольник имеет свои вершины в плоскости проекции по часовой стрелке, когда он смотрит в камеру, они переключаются в порядок против часовой стрелки, когда поверхность отворачивается от камеры.
Между прочим, это также делает объекты полностью прозрачными, когда камера точки обзора расположена внутри них, потому что тогда все поверхности объекта обращены в сторону от камеры и обрабатываются средством визуализации. Чтобы этого не произошло, объект должен быть двусторонним (т.е. не нужно отбраковывать заднюю поверхность) или иметь отдельные внутренние поверхности.
Часто объекты находятся так далеко, что не вносят существенного вклада в окончательное изображение. Эти объекты выбрасываются, если их экран проекция слишком мала. См. Плоскость отсечения.
Объекты, которые полностью находятся позади других непрозрачных объектов, могут быть отсечены. Это очень популярный механизм для ускорения рендеринга больших сцен от среднего до высокого. Есть несколько типов подходов к отбраковке окклюзии:
В диссертации Хансонга Чжана «Эффективное отсечение окклюзии для интерактивного отображения произвольных моделей» описывается подход отсечения окклюзии.
.
Популярная тема в литературе VSD - разделяй и властвуй. Алгоритм Варнока впервые применил разделение экрана. Трассировка луча - это метод трассировки лучей, при котором видимые объемы делятся на лучи. Различные подходы к разделению экранного пространства, уменьшающие количество примитивов, рассматриваемых в каждой области, например мозаика или отсечение BSP в экранном пространстве. Тайлинг может использоваться как предварительный процесс для других методов. Аппаратное обеспечение Z-буфера обычно может включать в себя грубый "hi-Z", против которого примитивы могут быть отклонены раньше без растеризации, это форма отбраковки окклюзии.
Иерархии ограничивающих объемов (BVH) часто используются для разделения пространства сцены (примерами являются дерево BSP, октодерево и дерево kd ). Это позволяет определять видимость иерархически: эффективно, если узел в дереве считается невидимым, то все его дочерние узлы также невидимы, и дальнейшая обработка не требуется (все они могут быть отклонены средством визуализации). Если узел считается видимым, необходимо оценить каждый из его дочерних элементов. Этот обход фактически представляет собой обход дерева, где невидимость / окклюзия или достижение листового узла определяет, следует ли останавливаться или рекурсивно соответственно.