Отсечение
Отсечение или клиппинг (англ. clipping) — метод оптимизации в рендеринге и компьютерной графике, когда компьютер прорисовывает только ту часть сцены, которая может находиться в поле зрения пользователя.
В двухмерной графике, если пользователь увеличил изображение и на экране осталась видна только небольшая часть, программа может сэкономить процессорное время и память и не прорисовывать те части изображения, которые остались «за кадром».
Аналогично, в трёхмерной графике, сцена может состоять из объектов (обычно треугольников), расположенных со всех сторон виртуальной камеры, но программе достаточно рендерить только те объекты, которые находятся в поле зрения. В трёхмерной графике, это нетривиальная задача. Для каждого треугольника в сцене требуется определить, входит он в поле зрения или нет. Если треугольник частично входит в поле зрения, то часть его придётся отсечь.
Плоскость отсечения
В OpenGL и Direct3D, объём видимости обычно имеет вид усеченной четырёхугольной пирамиды с виртуальной камерой в вершине, то есть ограничен шестью плоскостями. Эти плоскости называются плоскостями отсечения (англ. clipping planes). Наличие дальней (от зрителя) плоскости отсечения означает, что программа отсекает не только объекты, которые вне поля видимости, но и те, которые расположены слишком далеко от камеры. Вдобавок к стандартным шести, возможно определять и дополнительные плоскости отсечения; среди прочего, дополнительные плоскости применяются для того, чтобы рендерить объекты в разрезе[1].
Алгоритмы
Существует несколько алгоритмов отсечения области отрисовки.
- Отсечение отрезков:
- Алгоритм Коэна — Сазерленда
- Алгоритм Кируса — Бека
- Алгоритм Лианга — Барски
- Быстрое отсечение
- Николла — Ли — Николла
- Отсечение многоугольников:
- Алгоритм Сазерленда — Ходгмана
- Алгоритм Уайлера — Атертона
Примечания
- Dave Shreiner et al. OpenGL Programming Guide. — 4-е издание. — Addison Wesley, 2004. — С. 144. — 759 с. — ISBN 0321173481.
См. также
- Удаление невидимых поверхностей