Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ лабы.doc
Скачиваний:
15
Добавлен:
10.05.2015
Размер:
455.68 Кб
Скачать

Расчет освещенности граней трехмерных объектов

Цель работы:Освоить алгоритмические основы построения модели освещенности.

Задание:Доработать программу из предыдущей лабораторной работы так, чтобы происходил расчет освещенности граней трехмерного объекта согласно методу Гуро.

Теоретическая справка. Метод Гуро

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

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

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

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

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

На основе нормалей в вершинах вычисляются значения интенсивностей в вершинах согласно выбранной модели отражения света.

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

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

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

Рис. 2. Заполнение контура грани

Интерполированная интенсивность / в точке (X,Y) определяется исходя из пропорции Отсюда

Значения интенсивностей I1иI2на концах горизонтального отрезка представляют собой интерполяцию интенсивности в вершинах:

или

Метод Фонга

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

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

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

По направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения света.

Рис. 3 Интерполяция векторов нормалей

Рассмотрим, как можно получить вектор нормали в каждой точке грани. Для интерполяции будем оперировать векторами N'a,N'b иN'c, исходящими из центра координат плоскости проецирования и параллельными соответствующим нормалямNa,Nb иNc в вершинаха, b ис (рис. 3).

где XNa, YNa, ZNa,,ХNb, YNb, ZNb, XNc., YNc иZNc‑ координаты векторовN'a,N'b иN'c. Теперь найдем координаты вектораN':

Вектор N'параллелен векторуN для нормали в точке (X, Y), поэтому его можно использовать для расчета отражения света так же, как и вектор нормалиN.

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

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

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

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

Основные отличия можно заметить для закрашивания передней грани. Она перпендикулярна направлению лучей света. Поэтому нормали в вершинах этой грани располагаются симметрично ‑ они образовывают попарно равные по абсолютной величине углы с лучами света. Для метода Гуро это обуславливает одинаковые интенсивности в вершинах передней грани. А раз интенсивности одинаковые, то и для любой точки внутри этой грани интенсивность одинакова (для линейной интерполяции). Это обуславливает единый цвет закрашивания. Все точки передней грани имеют одинаковый цвет, что, очевидно, неправильно.

Метод Фонга дает правильное закрашивание. Если интерполировать векторы нормалей передней грани, то по центру будут интерполированные нормали, параллельные лучам света.

По методу Фонга центр передней грани будет светлее, чем края.

Порядок выполнения.

  1. Получить вариант задания.

  2. Определить вид матрицы сложного преобразования.

  3. Рассчитать тестовый пример.

  4. Написать и отладить программу, реализующую данное преобразование.

  5. Показать работу преподавателю.

  6. Оформить отчет и защитить работу.

Содержание отчета.

  1. Формулировка задания.

  2. Теоретическая часть.

  3. Текст программы.

  4. Тестовый пример.

  5. Выводы.

Рассмотрено на заседании кафедры АТМ

Нормоконтролер, отв. за стандартизацию на кафедре ____________ /Шутов Н.И./

Протокол №___от___/___/______ Зав. кафедрой _________ /Фомичев А.А./

3