Реферат: Методы раскрашивания поверхностей метод Гуро, Фонга, трассировка лучей, преломление света
Согласно этой формуле интенсивность отраженного света равна нулю для некоторых углов α и θ. Однако в реальных сценах обычно нет полностью затемненных объектов: следует учитывать фоновую подсветку, освещение рассеянным светом, отраженным от других объектов. В таком случае интенсивность может быть эмпирически выражена следующей формулой:
Iотр = Ia Ka +I(Ks (cosα)p + Kd cosθ), (4)
где Ia – интенсивность рассеянного света,Ka – константа.
Можно еще усовершенствовать модель отражения, если учесть то, что энергия от точечного источника света уменьшается пропорционально квадрату расстояния. Использование такого правила вызывает сложности, поэтому на практике часто реализуют модель, выражаемую эмпирической формулой:
Iотр = Ia Ka +I*(Ks (cosα)p + Kd cosθ)/(R+k), (5)
где R – расстояние от центра проекции до поверхности, k – константа.
Для определения цвета закрашивания точек объектов в соответствии с данной моделью наиболее просто выполняется расчет в градациях серного цвета (например, для белого источника света и серых объектов). В данном случае интенсивность отраженного света соответствует яркости. Сложнее обстоит дело с цветными источниками света, освещающими цветные поверхности. Например, для модели RGBсоставляются три формулы расчета интенсивности отраженного света для различных цветовых компонент. Коэффициенты Ka , Kd различны для разных компонент– они выражают собственный цвет поверхности. Поскольку цвет отраженного зеркального луча равен цвету источника, то коэффициент Ks будет одинаковым для всех компонент цветовой модели. Цвет источника света выражается значениями интенсивности I для соответствующих цветовых компонент.
2. МЕТОД ГУРО
Этот метод предназначен для создания иллюзии гладкой криволинейной поверхности, описанной в виде многогранников или полигональной сетки с плоскими гранями. Если каждая плоская грань имеет одни постоянный цвет, определенный с учетом отражения, то различные цвета соседних граней очень заметны, и поверхность выглядит именно как многогранник. Казалось бы, это дефект можно замаскировать за счет увеличения граней при аппроксимации поверхности. Но зрение человека имеет способность подчеркивать перепады яркости на границах смежных граней – такой эффект называется эффектом полос Маха. Поэтому для создания иллюзии гладкости нужно намного увеличить количество граней, что приводит к существенному замедлению визуализации – чем больше граней, тем меньше скорость рисования объектов.
Метод Гуро основывается на идее закрашивания каждой плоской грани не одним цветом, а плавно изменяющимися оттенками, вычисляемыми путем интерполяции цветов примыкающих граней. Закрашивание граней по методу Гуро осуществляется в четыре этапа:
- вычисляются нормали к каждой грани;
- определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей примыкающих граней (рис.3);
- на основе нормалей в вершинах вычисляются значения интенсивностей в вершинах согласно выбранной модели отражения света;
- закрашиваются полигоны граней цветом, соответствующим линейной интерполяции значений интенсивности в вершинах.
Рис.3 Нормаль в вершине
Вектор нормали в вершине (а) равен
Na =(N1 + N2 + N3 )/3 (6)
Определение интерполированных значений интенсивности отраженного света в каждой точке грани (и, следовательно, цвет каждого пиксела) удобно выполнять во время цикла заполнения полигона. Рассмотрим заполнение контура грани горизонталями в экранных координатах (рис.4).
Интерполированная интенсивность I в точке (X,Y) определяется исходя из пропорции
(I-I1 )/(X-X1 )= (I2 -I1 )/(X2 -X1 ) (7)
Отсюда
I=I1 +(I2 -I1 )(X-X1 )/(X2 -X1 ) (8)
Значения интенсивностей I1 , I2 на концах горизонтального отрезка представляют сбой интерполяцию интенсивности в вершинах:
I1 =Ib +(Ic -Ib )(Y-Yb )/(Yc -Yb ) (9)
I2 =Ib +(Ia -Ib )(Y-Yb )/(Ya -Yb )
Рис.4. Заполнение контура грани
3. МЕТОД ФОНГА
Аналогичен методу Гуро, но при использовании метода Фонга для определения цвета в каждой точке интерполируются не интенсивности отраженного света, а векторы нормалей.
- определяются нормали к граням;
- по нормалям определяются нормали в вершинах. В каждой точке закрашиваемой грани определяется интерполированный вектор нормали;
- по направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения.
Метод Фонга сложнее, чем метод Гуро. Для каждой точки (пиксела) поверхности необходимо выполнять намного больше вычислительных операций. Тем не менее, он дает значительно лучшие результаты, в особенности при имитации зеркальных поверхностей.
Нормали к поверхности в вершинах многогранника вычисляются так же, как и в методе Гуро. А затем выполняется билинейная интерполяция в сочетании с построчным сканированием. После построения вектора нормали в очередной точке вычисляется интенсивность.
Рис. 9.6. Три способа закрашивания
Этот метод позволяет устранить ряд недостатков метода Гуро, но не все. В частности, эффект полос Маха в отдельных случаях в методе Фонга бывает даже сильнее, хотя в подавляющем большинстве случаев аппроксимация Фонга дает лучшие результаты. На рис. 9.6 приведены результаты закрашивания поверхности вращения, аппроксимированной многогранником, который составлен из треугольных граней: a) - плоское закрашивание, b) - закрашивание по методу Гуро, c) - закрашивание по методу Фонга. Первый из вариантов дает изображение ребристой поверхности с очень контрастными переходами от одной грани к другой. Вторая модель дает более гладкое изображение, но в районе бликов отчетливо наблюдаются линии ребер, хотя и сглаженные. Третий вариант получился наиболее гладким, зеркальные блики имеют достаточно реалистичную форму.
Итак, метод Фонга дает правильное закрашивание. Если интерполировать векторы нормалей передней грани, то по центру будут интерполированные нормали, параллельные лучам света.
По методу Фонга центр передней грани будет светлее, чем края. Таким образом, интерполяция нормалей дает более точный результат.
4. ПРЕЛОМЛЕНИЕ СВЕТА
Законы преломления света следует учитывать при построении изображений прозрачных объектов.
4.1. Модель идеального преломления
Согласно этой модели луч отклоняется на границе двух сред, причем падающий луч, преломленный луч и нормаль лежат в одной плоскости ( в этой же плоскости лежит и зеркально отраженный луч). Обозначим угол между падающим лучом и нормалью как α1 , а угол между нормалью и преломленным лучом как α2 . Для этих углов известен закон Снеллиуса, согласно которому
n1 sin α1 = n2 sin α2 , (10)