Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шп гр.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.81 Mб
Скачать

Геометрические составляющие для нахождения отраженного света.

Для того чтобы вычислить диффузный и зеркальный компоненты света, нам необходимо найти три главных вектора, необходимых для нахождения количества света, попадающего в глаз из точки P:

--нормаль m к поверхности в точке P;

--вектор v, соединяющий точку P с глазом наблюдателя;

-- вектор s, соединяющий точку P с источником света.

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

Вычисление диффузионной составляющей

Предположим, что свет падает от точечного источника на одну сторону микрограни (faset) поверхности. Какая-то доля света с этой стороны микрограни переизлучается во всех направлениях. А какая-то часть этой переизлучаемой доли достигает глаза с интенсивностью, обозначаемой . Как зависит от направлений m, v и s?

Поскольку рассеяние одинаково во всех направлениях, ориентация микрограни относительно глаза не имеет значения. Поэтому не зависит от угла между векторами m и v (кроме случая v m<0, тогда =0). С другой стороны, количество света, освещающего данную микрогрань, зависит от ориентации микрограни по отношению к источнику света: оно пропорционально <<наблюдаемой>> источником площади этой микрограни, то есть видимой площади микрограни.

На рис. 8.10, а) в сечении показан точечный источник, освещающий микрогрань S, для случая, когда вектор m параллелен вектору s. На рис.8.10, б) микрогрань отвернута в сторону от источника света на угол . Теперь видимая площадь составляет только долю, равную , от той, что была раньше, так что яркость микрограни S уменьшится во столько же раз. Это соотношение между яркостью и ориентацией поверхности часто называют законом Ламберта (Lambert). Отметим, что для малых углов яркость слабо зависит от угла, поскольку косинус в окрестностях нуля изменяется медленно. Однако при приближении угла к яркость быстро снижается до нуля. Далее, нам известно, что является скалярным произведением ортов s и m. Тогда можно получить следующее выражение для интенсивности диффузного компонента:

где - интенсивность источника света,

- коофициент диффузного отражения (diffuse reflection coefficient). Отметим, что если микрогрань направлена в сторону от глаза, то это скалярное произведение отрицательно, и в этом случае мы принимаем Следовательно, более точная формула для диффузного компонента имеет вид:

(8.1)

Зеркальное отражение

Реальные объекты не рассеивают свет равномерно во всех направлениях, поэтому к модели закраски добавляется зеркальный компонент. Зеркальное отражение порождает блики, которые могут существенно увеличить реалистичность изображения, заставив объекты блестеть. В данном разделе мы рассмотрим простую модель поведения отраженного света по Фонгу (Fhong, 162). Эта модель легко реализуется, и Open GL поддерживает хорошее приближение к ней. Блики, создаваемые отраженным светом по Фонгу, придают объекту вид сделанного из пластмассы, поэтому модель Фонга хороша, когда предназначается для объектов, выполненных из блестящего пластика или стекла. С объектами, имеющими блестящую металлическую поверхность, данная модель работает хуже, однако, как мы увидим, путем тщательного подбора параметров цвета с помощью Open GL аппроксимация по-прежнему возможна. Разработаны более современные модели отражения света, которые лучше работают

С блестящими металлами. Поскольку такие модели не поддерживаются впрямую в рамках процесса визуализации Open GL, мы отложим их обсуждение до главы 14, где рассматривается трассировка лучей.

На рис. 8.12, а) показана ситуация, в которой свет от источника падает на поверхность и отражается в различных направлениях. Согласно модели Фонга, количество отраженного света имеет наибольшую величину в направлении абсолютного зеркального отражения (вектор r), когда угол отражения равен углу падения. Именно в этом направлении отразился бы весь свет, если бы поверхность была абсолютным зеркалом. При других углах, близких к этому, количество отраженного света быстро убывает, о чем свидетельствуют относительные длины векторов отражения. На рис. 8.12, б) это распределение показано в виде <<пучка лучей>>, известного специалистам по радарам. Расстояние от точки Р до огибающей пучка лучей показывает относительную силу света, рассеянного в данном направлении.

На рис. 8.12, в) показано, как оценить влияние пучка. Из главы 4 нам известно, что направление

r полного отражения зависит от вектора s и нормали m к поверхности следующим образом: (направление зеркального отражения). (8.2)

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

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

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

, (8.3)

где множитель называется коэффициентом зеркального отражения (specular reflection

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

Повышение эффективности с помощью <<промежуточного вектора>>. Вычисление члена уравнения (8.3), соответствующего зеркальному отражению, может оказаться слишком дорогостоящим, поскольку при этом требуется вначале найти вектор r, а затем нормировать его. На практике для ускорения вычислений используется альтернативный член зеркального отражения, который, вероятно, впервые был описан Блинном (Blinn, 24) и используется для ускорения вычислений. Вместо косинуса угла между векторами r и v ищется промежуточный ( halfway ) вектор между s и v, то есть h=s+v, как показано на рис.8.14. Если бы нормаль к поверхности была направлена вдоль вектора h, то наблюдатель увидел бы наиболее яркий зеркальный блик. Поэтому угол между векторами m и h можно использовать для измерения спада интенсивности зеркального отражения, которую видит наблюдатель. Угол не совпадает с углом ( на самом деле угол вдвое больше, чем угол ,если все векторы компланарны; см. упражнения ), однако это различие может быть компенсировано использованием другого значения показателя f. ( Зеркальный член никоим образом не основывается на физических принципах, поэтому по меньшей мере приятно, что такая его коррекция дает приемлемые результаты). Обычно принято при вычислении зеркального члена исходить из , используя при этом скалярное произведение векторов h и m:

(скорректированный зеркальный член). (8.4)

Отметим, что при такой коррекции нет необходимости находить вектор отражения r, что экономит время вычисления. Кроме того, если и источник света, и наблюдатель очень удалены, то векторы s и v одинаковы для различных граней объекта, поэтому вектор b понадобится вычислить всего один раз.