Главная страница

Конспект лекций по компьютерной графике. Конспект лекций по дисциплине Компьютерная графика


Скачать 16.3 Mb.
НазваниеКонспект лекций по дисциплине Компьютерная графика
АнкорКонспект лекций по компьютерной графике.doc
Дата22.04.2017
Размер16.3 Mb.
Формат файлаdoc
Имя файлаКонспект лекций по компьютерной графике.doc
ТипКонспект лекций
#5372
страница25 из 46
1   ...   21   22   23   24   25   26   27   28   ...   46

8.2 Метод Гуро


Этот метод предназначен для создания иллюзии гладкой криволинейной поверхности, которая описана в виде многогранников или полигональной сетки с плоскими гранями. Ес­ли каждая плоская грань имеет один постоянный цвет, который определен в соответствии с учетом отражения, то разные цвета соседних граней очень заметны, и поверхность выгля­дит именно как многогранник. Казалось, этот дефект можно замаскировать за счет увеличе­ния количества граней при аппроксимации поверхности. Но зрение человека имеет способ­ность подчеркивать перепады яркости на границах смежных граней — такой эффект назы­вается эффектом полос Маха. Вследствие этого, для создания иллюзии гладкости нужно намного увеличить количество граней, что приводит к существенному замедлению визуа­лизации — чем больше граней, тем меньше скорость рисования объектов.

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

  • Вычисляются нормали к каждой грани.

  • Определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей прилегающих граней (рис. 8.6).


Рис. 8.6. Нормаль в вершине а

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

Вектор нормали в вершине (а) равняется



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


Рис. 8.7. Заполнение полигона грани
Интерполированная интенсивность Iв точке (X, У) определяется, исходя из пропорции




откуда




Значение интенсивности I1 и I2 на концах горизонтального отрезка вычислим путем интерполяции интенсивности в вершинах




8.3 Метод Фонга


Аналогичен методу Гуро, но при использовании метода Фонга для определения цвета в каждой точке интерполируются не интенсивности отраженного света, а векторы нормалей.

  • Определяются нормали к граням.

  • По нормалям к граням определяются нормали в вершинах. В каждой точке закрашивае­мой грани определяется интерполированный вектор нормали.

  • Цвет каждой точки грани вычисляется в соответствии с направлением интерполирован­ного вектора нормали и согласно выбранной модели отражения света.

Метод Фонга сложнее метода Гуро. Для каждой точки (пиксела) поверхности необходи­мо выполнять намного больше вычислительных операций. Тем не менее, он дает значи­тельно лучшие результаты, в особенности при имитации зеркальных поверхностей.

Общие черты и отличия методов Гуро и Фонга можно показать на примере образца ци­линдрической поверхности, которая аппроксимирована плоскими гранями (рис. 8.8). Пусть точечный источник света находится позади нас. Проанализируем результаты закрашивания граней поверхности для имитации отражения света.

Рис. 8.8. Отличия закрашивания методами Гуро и Фонга

Основные отличия можно заметить, рассматривая закрашивания передней грани. Она перпендикулярна направлению лучей света. Поэтому нормали в вершинах этой грани рас­полагаются симметрично — они образуют попарно равные по абсолютной величине углы с лучами света. Для метода Гуро это обуславливает одинаковые интенсивности отраженного света в вершинах передней грани. А раз интенсивности для всех вершин одинаковые, то цвет всех точек этой грани — константа (при линейной интерполяции), что, в данном слу­чае, неправильно.
1   ...   21   22   23   24   25   26   27   28   ...   46


написать администратору сайта