Скачиваний:
165
Добавлен:
01.05.2014
Размер:
446.46 Кб
Скачать

Окончательно получаем

Вектор наблюдения почти совпадает с вектором отражения, поэтому наблюдатель видит яркий блик в точке Q. Однако при изменении положения наблюдателя, например, если S = i + 1.5j – 0.5k, то

В этом случае

I = 0.15 + 10(0.12+0.21) = 3.45

5.2.Определение вектора отражения

Для полученной модели освещения важно правильно задать направления векторов отражения. Можно рассмотреть три наиболее общих случая.

  1. Пусть свет падает вдоль оси аппликат. Если начало системы координат перенести в точку поверхности, то проекции нормали и вектора отражения на плоскость x0y будут лежать на одной прямой и

где - составляющие единичных векторов отражения и нормали. Из элементарных геометрических соображений получаем

  1. Свет падает не по оси аппликат. Выполним геометрическое преобразование так, чтобы нормаль была параллельна оси аппликат, а точка Q была совмещена с началом координат. Тогда плоскостьx0y будет касательной к поверхности, аx- иy-составляющие единичных векторов падения и отражения будут иметь разные знаки, тогда какz-составляющие этих векторов будут равны. То есть

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

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

что дает необходимое добавочное условие и система становится разрешимой.

5.3.Закраска методами Гуро и Фонга

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

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

Рассмотрим участок полигональной поверхности на рис.5.4. Значение интенсивности в точке Pопределяется линейной интерполяцией интенсивностей в точкахQ иR. Для получения интенсивности в точкеQ – пересечении ребра многоугольника со сканирующей строкой - используется линейная интерполяция интенсивностей в вершинахA иB

IQ = uIA + (1-u)IB 0 <= u <= 1,

где u = AQ/AB. Аналогично для получения интенсивностиRлинейно интерполируются интенсивности в вершинахB иC

IR = wIB + (1-w)IC 0 <= w <=1,

где w = BR/BC.Наконец, линейной интерполяцией по строке междуQ иR находится интенсивность вP

IP = tIQ + (1-t)IR 0<= t <=1,

где t = QP/QR.

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

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

Соседние файлы в папке Конспект по компьютерной графике