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