stringtranslate.com

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

Слева — модель без BFC; справа — та же модель с BFC: задние грани удалены.

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

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

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

Схожая техника — отсечение , которое определяет, попадают ли полигоны вообще в поле зрения камеры.

Другой похожий метод — Z-отсечение, также известное как отсечение окклюзии , которое пытается пропустить рисование полигонов, которые перекрыты с точки зрения других видимых полигонов.

В нереалистичных рендерах некоторые лица могут быть отсечены в зависимости от того, видны они или нет, а не повернуты в сторону от камеры. «Перевернутый каркас» или «отсев лицевой стороны» можно использовать для имитации контуров или шейдеров мультяшек без эффектов постобработки. [1]

Выполнение

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

где P — точка обзора, V 0 — первая вершина треугольника, а N — его нормаль, определяемая как векторное произведение двух векторов, представляющих стороны треугольника, смежные с V 0.

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

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

Если точки уже находятся в пространстве видимости, можно предположить, что P равно ( 0 , 0 , 0 ) , началу координат, упрощая приведенное выше неравенство:

Этот метод также можно использовать в проекционном пространстве, представив указанное выше неравенство как определитель матрицы и применив к нему проекционную матрицу. [2]

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

Пусть единичный треугольник в двух измерениях ( однородные координаты ) определяется как

Тогда для некоторого другого треугольника, также в двух измерениях,

Определим матрицу, преобразующую единичный треугольник:

так что:

Отбрасываем треугольник, если матрица M содержала нечетное число отражений (обращённых в противоположную сторону от единичного треугольника)

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

Ссылки

  1. ^ Hoeven, van der, Jorick. "Non-Photorealism in Interactive Rendering Systems" (PDF) . Архивировано из оригинала (PDF) 2021-11-02 . Получено 2023-08-10 .
  2. ^ Дэвид Х. Эберли (2006). Разработка 3D-игрового движка: практический подход к компьютерной графике в реальном времени , стр. 69. Morgan Kaufmann Publishers, США. ISBN 0122290631