stringtranslate.com

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

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

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

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

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

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

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

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

Выполнение

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

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

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

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

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

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

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

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

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

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

так что:

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

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

Рекомендации

  1. ^ Хувен, ван дер, Йорик. «Нефотореализм в системах интерактивного рендеринга» (PDF) . Архивировано из оригинала (PDF) 2 ноября 2021 г. Проверено 10 августа 2023 г.
  2. ^ Дэвид Х. Эберли (2006). Проектирование движка 3D-игр: практический подход к компьютерной графике в реальном времени , с. 69. Издательство Морган Кауфманн, США. ISBN 0122290631