- •Компьютерная графика: лабораторный практикум. Санкт-Петербург
- •Введение
- •1.1. Основные возможности
- •1.2. Интерфейс OpenGl
- •1.3. Архитектура OpenGl
- •1.4. Синтаксис команд
- •1.5. Пример приложения
- •2. Рисование геометрических объектов
- •2.1. Процесс обновления изображения
- •2.2. Вершины и примитивы
- •2.2.1. Положение вершины в пространстве
- •2.2.2. Цвет вершины
- •2.2.3. Нормаль
- •2.2.4..Операторные glBegin / glEnd
- •2.3. Цель, требования и рекомендации к выполнению задания
- •2.4. Задания
- •3. Преобразования объектов
- •3.1. Работа с матрицами
- •3.3. Модельно-Видовые преобразования
- •3.4. Проекции
- •3.5. Область вывода
- •3.6. Цель, требования и рекомендации к выполнению задания
- •3.7. Задания
- •4. Фрактал и фрактальная геометрия
- •4.1. Свойства фракталов
- •4.2. Виды фракталов.
- •4.2.1. Геометрический фрактал
- •4.2.2. Алгебраический фрактал
- •4.2.3. Стохастические фракталы
- •4.3. Способы построения фракталов
- •4.3.2. Система итерирующих функций ifc
- •4.4. Цель, требования и рекомендации к выполнению задания
- •4.5. Задания
- •5. Модели освещения
- •5.1. Геометрические составляющие отраженного света
- •5.2. Диффузная компонента
- •5.3. Зеркальная компонента
- •5.4. Роль фонового света
- •5.5. Комбинирование компонентов освещения
- •5.6. Добавление цвета
- •5.7. Общее уравнение отраженного света
- •5.8. Закраска и графический конвейер
- •5.9. Использование источников света вOpenGl
- •5.9.1. Создание источника света
- •5.9.2. Прожекторы
- •5.9.3. Ослабление света с расстоянием
- •5.9.4. Модель освещения в OpenGl
- •5.9.5. Перемещение источников света
- •5.10. Работа со свойствами материалов в OpenGl
- •5.11. Цель, требования и рекомендации к выполнению задания
- •5.12. Задания
- •6. Отображение отражений и теней.
- •6.1. Отображение отражений
- •6.2. Тени объектов
- •6.2.1. Тени как текстура
- •6.2.2. Построение "спроецированной" грани
- •6.3. Пример реализации “зеркала”.
- •6.3. Цель, требования и рекомендации к выполнению задания
- •6.4. Задания
- •7. Создание приложения
- •Заключение
- •Литература
- •Оглавление
5.8. Закраска и графический конвейер
На Error: Reference source not found.5., показано на каком этапе работы так называемого графического конвейера происходит закраска. Основная идея состоит в том, что вершины сетки посылаются в конвейер вместе со связанными с ними нормалями, и все вычисления по закраске осуществляются именно с вершинами.
В процессе визуализации треугольника с вершинами v0, v1, v2. С каждой вершиной vi связана нормаль mi. Эти величины пересылаются в конвейер с помощью следующих вызовов
Рис. 5.5. Графический конвейер.
GlBegin(GL_POLYGON)
For(int i=0;i<3;i++)
{
glNormal3f(norm[i].x,norm[i].y,norm[i].z);
glVertex3f(pt[i].x,pt[i].y,pt[i].z);
}
glEnd();
Вызов программы glNormal3f() устанавливает "текущую нормаль", которая применяется ко всем вершинам, последовательно пересылаемым в конвейер с помощью glVertex3f(). Эта нормаль остается текущей вплоть до ее изменения при следующем вызове glNormal3f(). В вышеприведенном коде с каждой вершиной связывается новая нормаль.
Вершины преобразуются с помощью матрицы моделирования М, которая эффективно переводит их в координаты камеры (глаза). Нормали тоже подвергаются преобразованиям, однако, векторы преобразуются не так, как точки. При преобразовании точек поверхности посредством матрицы М нормаль m в каждой точке превращается в нормаль М-Тm на преобразованной поверхности, где М-Т - транспонированная обратная к матрице М матрица. OpenGL выполняет эти вычисления нормалей автоматически. OpenGL предоставляет возможность задавать различные источники света и их расположение. Источники света тоже являются объектами, и координаты источников света также преобразуются посредством матрицы моделирования-вида.
Таким образом, после преобразования моделирования-вида все величины будут выражены в координатах камеры. С этой точки зрения применима модель уравнения интенсивностей с учетом цвета по каждой компоненте, причем к каждой вершине "привязан" цвет. Вычисление этого цвета требует знания векторов m, s, v, однако все они в этот момент доступны в конвейере.
По мере дальнейшего продвижения по конвейеру создается элемент, содержащий псевдоглубину, после чего вершины подвергаются перспективному преобразованию. К каждой вершине прикреплена информация о цвете. Вершины проходят через преобразование порта просмотра, где они преобразуются в экранные координаты
5.9. Использование источников света вOpenGl
Для создания реалистических изображений необходимо определить как свойства самого объекта, так и свойства среды, в которой он находится. Первая группа свойств включает в себя параметры материла, из которого сделан объект, способы нанесения текстуры на его поверхность, степень прозрачности объекта. Ко второй группе можно отнести количество и свойства источников света, уровень прозрачности среды. Все эти свойства можно задавать, используя соответствующие команды OpenGL.
В OpenGLсодержится целый ряд функций для установки и использования источников света, а также для придания поверхности свойств определенного материала. Довольно трудно охватить все их возможные варианты и детали, поэтому рассмотрим лишь основные - как устанавливать на сцене различные виды источников света.