Название: Компьютерная графика ( Е.Н. Павенко)

Жанр: Информатика

Просмотров: 1254


5.3. зеркальное отражение

 

Реальные объекты не рассеивают свет равномерно во всех направлениях, поэтому к модели закраски добавляется зеркальный компонент. Зеркальное отражение порождает блики, которые могут существенно увеличить реалистичность изображения, заставив объекты блестеть. В данном разделе мы рассмотрим простую модель поведения отраженного света по Фонгу. Эта модель легко реализуется, и OpenGL поддерживает хорошее приближение к ней. Блики, создаваемые отраженным светом по Фонгу, придают объекту вид сделанного из пластмассы, поэтому модель Фонга хороша, когда предназначается для объектов, выполненных из блестящего пластика или стекла. С объектами, имеющими блестящую металлическую поверхность, данная модель работает хуже, однако, как мы увидим, путем тщательного подбора параметров цвета с помощью OpenGL аппроксимация по-прежнему возможна. Разработаны более современные модели отражения света, которые лучше работают с блестящими металлами. На рис. 5.3, а показана ситуация, в которой свет от источника падает на поверхность и отражается в различных направлениях. Согласно модели Фонга количество отраженного света имеет наибольшую величину в направлении абсолютного зеркального отражения (вектор r), когда угол отражения равен углу падения. Именно в этом направлении отразился бы весь свет, если бы поверхность была абсолютным зеркалом. При других углах, близких к этому, количество отраженного света быстро убывает, о чем свидетельствуют относительные длины векторов отражения. На рис. 5.3, б это распределение показано в виде «пучка лучей», известного специалистам по радарам. Расстояние от точки Р до огибающей пучка лучей показывает относительную силу света, рассеянного в данном направлении.

 

a          б          в

 

Рис. 5.3. Зеркальное отражение от блестящей поверхности

 

На рис. 5.3, в показано, как оценить влияние пучка. Направление r полного отражения зависит от вектора s и нормали m к поверхности следующим образом:

(направление зеркального отражения)   (5.2)

Для блестящих поверхностей, не являющихся абсолютно зеркальными, количество отраженного света убывает с ростом модуля угла  между векторами r и v. Истинное количество этого убывания является сложной функцией от , однако в модели Фонга данная зависимость предполагается равной некоторой степени f от косинуса , т. е. , где значение f подбирается экспериментально и обычно лежит в пределах от 1 до 200. На рис. 5.4 показан график изменения функции интенсивности в зависимости от угла  для различных значений f.

С ростом параметра f отражение становится все более зеркальным и все более концентрируется вдоль направления r. При f = ¥ можно было бы смоделировать абсолютное зеркало, однако чистые отражения обычно обрабатывают другим способом.

Используя тот факт, что  равен скалярному произведению векторов u и v (после их нормирования), можно смоделировать вклад  в зеркальное отражение следующим образом:

            ,          (5.3)

где множитель  называется коэффициентом зеркального отражения (specular reflection coefficient). Подобно большинству коэффициентов в модели закрашивания он обычно определяется экспериментально. (Как и в случае диффузного члена, при отрицательном скалярном произведении r × v значение  устанавливается равным нулю.)

 

Рис. 5.4. Уменьшение отраженного света с ростом абсолютной величины угла