Jump to content

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

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

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

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

Алгоритмы

[ редактировать ]

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

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

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

[ редактировать ]

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

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

Просмотр-усеченный отбор

[ редактировать ]

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

Отбраковка задней поверхности

[ редактировать ]

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

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

См. также

[ редактировать ]

Источники

[ редактировать ]
  1. ^ «Отсечение окклюзии с помощью иерархических карт окклюзии» . www.cs.unc.edu .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c31bc4f1eb5d449fc8a5203c8b21752e__1716812580
URL1:https://arc.ask3.ru/arc/aa/c3/2e/c31bc4f1eb5d449fc8a5203c8b21752e.html
Заголовок, (Title) документа по адресу, URL1:
Hidden-surface determination - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)