Перспективное преобразование в OpenGL

Рис. 5.40. Перспективное преобразование в OpenGL

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

X = ±2, у = ±2.

При этом положение передней и задней отсекающих плоскостей не изменяется. Такое преобразование выполняется матрицей масштабирования 8(2гтах,/(дстах-дгтш), 2гтаДутах-_утт), 1). Обратите внимание на то, что матрица масштабирования не зависит от положения задней отсекающей плоскости 2 = гтш, поскольку в трехмерном пространстве аффинное преобразование однозначно определяется соответствием положения четырех точек. В данном случае таковыми являются четыре вершины, в которых боковые грани пирамиды пересекаются с передней отсекающей плоскостью.

Для того чтобы после выполнения нормализации проецирования задняя плоскость отсечения стала плоскостью г = -1, а передняя- плоскостью г= 1, матрица нормализации N должна иметь вид

причем значения а и ß выбираются в соответствии с результатами, полученными в разделе 5.8.1. С учетом всего сказанного, получим вид матрицы проективного преобразования"images/tmpB6CA-229.png">

5.8. Матрицы перспективного проецирования В терминах расстояний по передней (/„) и задней (//) отсекающих плоскостей получим матрицу Р в виде

Ufr У/-2/)

5.9. Проецирование и формирование теней Одна из интересных задач, при решении которой используются матрицы проективного преобразования, - формирование теней в изображении. Хотя в структурном смысле тени и не являются геометрическими объектами, без них невозможно представить себе, как передать в плоском изображении трехмерную форму объектов и отношения между ними в пространстве сцены. Появляются тени только в том случае, если имеется хотя бы один источник света. Некоторая точка на объекте оказывается в тени, если на нее не попадает свет ни от одного из имеющихся источников света. Но если источник находится в центре проецирования, то мы не увидим теней, поскольку все точки, находящиеся в тени, закрыты видимыми поверхностями объектов. Такая модель освещения называется моделью '"плоской засветки" ("flashlight in the eye" model), и именно ее мы фактически использовали до сих пор, не акцентируя на этом ваше внимание.


⇐ Предыдущая| |Следующая ⇒