Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп_Граф / КГ_курс лекций.doc
Скачиваний:
191
Добавлен:
08.06.2015
Размер:
1.31 Mб
Скачать

4.15. Построение изображения с тенями

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

  • собственная тень;

  • проекционная тень.

Собственная тень образуется в том случае, если угол α между нормальным вектором N к рассматриваемому элементу поверхности и вектором L = (lx, ly, lz) направления на источник света становится больше π/2. Из сказанного следует, что признаком образования собственной тени для рассматриваемого треугольника должно быть условие cos α < 0.

Рассмотрим треугольный элемент поверхности с вершинами 1, 2, 3 (рис. 4.22).

Согласно (4.38) проекции нормального вектора N = (nx, ny, nz) к треугольнику находятся как

(4.48)

Рис. 4.22

Если оба вектора пронормированы (приведены к единичной длине), то

, (4.49)

а признаком собственной тени треугольного элемента будет условие

. (4.50)

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

  • прямая трассировка лучей (ray tracing);

  • обратная трассировка лучей (ray casting).

Прямая трассировка основана на прослеживании трасс лучей света от источника света. Для каждой трассы рассчитываются точки ее пересечения с элементами поверхностей, встречающимися на ее пути. После этого точки пересечения сортируются по расстоянию до источника света. Самая близкая к источнику точка будет освещена, а остальные лежат в тени. У данного метода много недостатков. В частности, тестирование трассы может быт безрезультатным, если не будет найдено ни одного пересечения с поверхностями. Этот метод практически не используется из-за большой трудоемкости и низкой эффективности.

Обратная трассировка более эффективна в отношении объема вычислений, поэтому рассмотрим ее более подробно. В методе обратной трассировки для каждой визуализируемой точки P поверхности строится трасса лучей от этой точки к источнику света (рис. 4.23). При этом делается проверка пересечения трассы со всеми остальными элементами поверхностей (треугольниками). Если обнаруживается хотя бы одно пересечение, значит рассматриваемая точка находится в тени. Иначе рассматриваемая точка будет освещена источником света.

Пусть задан вектор L = (lx, ly, lz) направления на источник света. Сначала отметим, что если изображение строится с использованием ортогонального проецирования на плоскость OXY и вектор L перпендикулярен плоскости проекции, т.е. L = (0, 0, lz), то проекционные тени отсутствуют. Причем, если lz < 0, то источник освещает невидимые части поверхностей, а видимые будут целиком в тени. Если же lz > 0, то наоборот - видимые элементы поверхностей полностью освещены. Контроль этих ситуаций несложно организовать программно, поэтому далее рассмотрим более общий случай, когда вектор L не перпендикулярен плоскости проекции.

Рис. 4.23

Уравнение трассы, проходящей через рассматриваемую точку P = (x0, y0, z0) поверхности в направлении L, имеет вид

(4.51)

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

(4.52)

где (nx, ny, nz) – проекции нормального вектора к анализируемому треугольнику; c – коэффициент, рассчитываемый как и nx, ny, nz, на основании координат вершин треугольника (4.48). Координаты точки T = (xt, yt, zt) пересечения находятся как решение системы уравнений (4.51) и (4.52).

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

Для упрощения решения данной задачи вместо самого треугольного элемента поверхности достаточно рассмотреть его ортогональную проекцию либо на плоскость OXY проекции, если nx, ny ≠ 0, либо на другую плоскость системы координат, например на OXZ, в остальных случаях. Проецирование в данном случае сводится к отбрасыванию одной из координат. Далее для конкретности рассмотрим проецирование на плоскость OXY, когда отбрасываются координаты z.

Пусть на проекции вершины треугольника обозначены как 1, 2, 3, а проекция точки T обозначена через Q (рис. 4.24). Если точка Q лежит внутри треугольника 123, то отрезками, исходящими из Q к вершинам, треугольник делится на три треугольника 12Q, 23Q и 31Q, площади которых обозначим соответственно как S12, S23 и S31.

Рис. 4.24

Очевидно, что в этом случае площадь S123 всего треугольника 123 будет равна сумме S12, S23 и S31, т.е.

|S12| + |S23| + |S31| = |S123|. (4.53)

Если же точка Q лежит вне треугольника 123 (точка Q' на рис. 4.24), то

|S12| + |S23| + |S31| > |S123|. (4.54)

Площади треугольников на основании координат их вершин можно рассчитать по формуле (2.35), причем, как показано в п. 3.7, знак результата зависит от направления обхода вершин, поэтому в условиях (4.53), (4.54) используются абсолютные величины площадей.

Как только будет найдено первое пересечение трассы с очередным тестируемым треугольным элементом поверхности такое, что выполняется условие (4.53), тестирование остальных треугольников прекращается, поскольку уже понятно, что рассматриваемая точка (x0, y0, z0) находится в тени. Ее закрашивание следует рассчитывать без учета освещения от источника света. Если же при тестировании не будет найдено ни одного элемента поверхности, заслоняющего точку (x0, y0, z0) от источника света, то тогда для ее закрашивания нужно учесть и свет источника.

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

Эффективным способом снижения трудоемкости может служить также трассировка с использованием теневого z-буфера. Рассмотрим подробнее суть этого метода.

Сначала сцена проецируется на плоскость, перпендикулярную вектору, на источник света. Если рассматривается точечный источник света, то вместо ортогонального проецирования надо использовать центральное проецирование с точкой схода в точке размещения источника. При проецировании изображение не формируется, а заполняется теневой Z-буфер Zt по аналогии с Z-буфером, используемый для удаления невидимых точек поверхностей (рис. 4.25).

Рис. 4.25

После окончания теневого проецирования всей сцены выполняется обычная визуализация с использованием обычного Z-буфера для удаления невидимых точек поверхности. При этом, если точка поверхности видима, то ее координаты (x, y, z) пересчитываются в систему координат теневого буфера Zt. Пусть в результате пересчета координаты той же точки будут (x', y', z'). Если z' < Zt[x', y'], значит эта точка загораживается от источника освещения другими поверхностями, т.е. она находится в тени. Для расчета ее цвета используется только рассеянный свет. Если же z' ≥ Zt[x', y'], значит точка освещается источником света и для нее нужен фотометрический расчет с учетом всех составляющих света.

Существенный недостаток метода трассировки с использованием теневого Z-буфера заключается в том, что его размеры по X' и Y', необходимые для построения всех теней, зависят от размеров всей сцены, а не от размеров той ее части, которая проецируется в область вывода. Другими словами, для сцен большой протяженности может потребоваться чрезвычайно большой теневой буфер, что сделает его использование труднореализуемым или неэффективным.

список ЛИТЕРАТУРЫ

1. Божко, А.Н. Компьютерная графика / А.Н. Божко, Д.М. Жук, В.Б. Маничев. – М.: МГТУ им. Н. Э. Баумана, 2007. – 392 с. – ISBN 978-5-7038-3015-4

2. Дегтярев В.М. Компьютерная геометрия и графика : учебник для студ. высш. учеб. заведений – М.: Академия, 2010. – 192 с. – ISBN 978-5-7695-5888-7

3. Сиденко Л.А. Компьютерная графика и геометрическое моделирование. Учебное пособие - СПб: Питер, 2009. – 224 с. -  ISBN 978-5-388-00339-3

4. Мельниченко, В.В. Компьютерная графика и не только: руководство пользователя / В.В. Мельниченко, В.В. Легейда. – Киев: Век+; СПб.: КОРОНА принт; Киев: НТИ, 2005. – 560 с. – ISBN 966-7140-44-Х

5. Пугачев, А.И. Основы компьютерной графики: курс лекций / А.И. Пугачев. – Самара: Самар. гос. техн. ун-т, 2011. – 104 с.

6. Яне Б. Цифровая обработка изображений - М.: Техносфера, 2007. – 584 с.

Оглавление

Введение 3

Лекция 1. РАСТРОВЫЕ ИЗОБРАЖЕНИЯ И ТЕХНИЧЕСКИЕ средства компьютерной графики 4

1.1. Растровые изображения 4

1.2. Графические устройства ввода-вывода 7

1.3. Видеоадаптеры 13

Лекция 2. Двумерная компьютерная графика 15

2.1. Двумерные примитивы 15

2.2. Визуализация на дискретной области вывода 18

2.3. Визуализация отрезков прямых 21

2.4. Кубические сплайны 24

2.5. Кривые Безье 27

2.6. Закрашивание ограниченных областей плоскости 30

2.7. Алгоритм закрашивания ориентированных многоугольников 36

2.8. Теоретико-множественные операции над двумерными областями 39

2.9. Построчный алгоритм ТМО 43

2.10. Программная организация данных для представления сложных объектов 45

Лекция 3. Геометрические преобразования на плоскости 49

3.1. Двумерные геометрические преобразования 49

3.2. Совмещение преобразований. Преобразование относительно заданного центра 52

3.3. Преобразование алгебраических линий 54

3.4. Непрерывные геометрические преобразования 56

3.5. Линейные преобразования фрагментов изображения 60

Лекция 4. Трехмерная компьютерная графика 63

4.1. Трехмерные примитивы 63

4.2. Аппроксимация криволинейных поверхностей 66

4.3. Многогранники и сложные объекты 67

4.4. Свет и цвет 70

4.5. Диффузная модель распространения света 73

4.6. Зеркальное отражение света 76

4.7. Трехмерные геометрические преобразования 77

4.8. Проецирование трехмерных объектов 79

4.9. Ориентация и потенциальная видимость поверхностей 83

4.10. Удаление невидимых точек поверхностей 87

4.11. Метод визуального сглаживания Гуро 89

4.12. Метод визуального сглаживания Фонга 93

4.13. Системы координат в пространственной сцене 94

4.14. Алгоритмы трехмерной визуализации 97

4.15. Построение изображения с тенями 100

список ЛИТЕРАТУРЫ 106

Оглавление 108

Учебное издание

ПУГАЧЕВ Анатолий Иванович

Соседние файлы в папке Комп_Граф