- •Часть II. Основы программирования
- •Введение
- •Лекция 1. Библиотека OpenGl
- •1. Назначение библиотеки OpenGl
- •2. Основные возможности OpenGl
- •3. Макет консольного приложения, использующего библиотеку glaux
- •Программа 1.1
- •4. Имена функций OpenGl
- •5. Системы координат
- •5.1 Матрицы преобразований
- •5.2 Видовые и модельные преобразования
- •5.3 Проекционное преобразование
- •5.4 Оконное преобразование
- •6. Пример выполнения модельных преобразований
- •6.1 Параллельный перенос
- •Фрагмент программы 1.2
- •6.2 Поворот
- •Фрагмент программы 1.3
- •7. Сводка результатов
- •8. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Упражнение 5
- •Упражнение 6
- •Лекция 2. Генерация движущихся изображений
- •1. Анимация с двойной буферизацией
- •2. Обработка событий клавиатуры и мыши
- •2.1 Пример обработки события от мыши: изменение цвета вращающегося объекта по нажатию левой кнопки мыши
- •3. Композиция нескольких преобразований
- •3.1 Модель солнечной системы
- •3.2 Модель манипулятора робота
- •4. Сводка результатов
- •5. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Упражнение 5
- •Лекция 3. Геометрические примитивы
- •1. Служебные графические операции
- •1.1 Очистка окна
- •1.2 Задание цвета
- •1.3 Удаление невидимых поверхностей
- •2. Описание точек, отрезков и многоугольников
- •2.1 Точки
- •2.2 Отрезки
- •2.3 Многоугольники
- •2.4 Прямоугольники
- •2.5 Кривые
- •2.6 Задание вершин
- •2.7 Геометрические примитивы OpenGl
- •3. Свойства точек, отрезков и многоугольников
- •3.1 Точки
- •3.2 Отрезки
- •3.3 Многоугольники
- •4. Сводка результатов
- •Лекция 4. Полигональная аппроксимация поверхностей
- •1. Векторы нормали
- •2. Некоторые рекомендации по построению полигональных аппроксимаций поверхностей
- •3. Пример: построение икосаэдра
- •3.1 Вычисление нормалей к граням икосаэдра
- •3.2 Повышение точности аппроксимации сферической поверхности
- •3.3 Алгоритм разбиения треугольной грани произвольной поверхности
- •4. Плоскости отсечения
- •6. Сводка результатов
- •7. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Лекция 5. Цвет и освещение
- •1. Цветовая модель rgb
- •2. Задание способа закраски
- •3. Освещение
- •4. Освещение в реальном мире и в OpenGl
- •4.1 Излучаемый, рассеянный, диффузно отраженный и зеркально отраженный свет
- •4.2 Цвет материала
- •4.3 Значения rgb для источников света и материалов
- •5. Пример: рисование освещенной сферы
- •5.1 Вектора нормали в вершинах объектов
- •5.2 Создание, расположение и включение источников света
- •5.3 Выбор модели освещения
- •5.4 Задание свойств материалов для объектов сцены
- •6. Создание источников света
- •6.1 Цвет
- •6.2 Местоположение и затухание
- •6.3 Прожекторы
- •6.4 Использование нескольких источников света
- •6.5 Изменение местоположения источников света
- •4. Сводка результатов
- •Лекция 6. Свойства материала и спецэффекты освещения
- •1. Задание свойств материала
- •1.1 Диффузное и рассеянное отражение
- •1.2 Зеркальное отражение
- •1.3 Излучаемый свет
- •1.4 Изменение свойств материала
- •1.5 Имитация реальных материалов
- •2. Смешение цветов и прозрачность
- •2.1 Множители source (исходный пиксел) и destination (результирующего пиксела)
- •2.2 Области применения смешения цветов
- •2.3 Пример использования смешения цветов
- •3. Туман
- •3.1 Использование тумана
- •4. Сводка результатов
- •5. Упражнения Упражнение 1
- •2. Назначение текстур
- •3. Создание текстуры в оперативной памяти
- •4. Автоматическое повторение текстуры на плоском многоугольнике
- •5. Наложение текстуры на произвольную поверхность
- •6. Сводка результатов
- •7. Упражнения Упражнение 1
- •Упражнение 2
- •Задание 1.1
- •2. Объемный "тетрис"
- •Задание 2.1
1.5 Имитация реальных материалов
В табл. 6.2 приведены значения свойств, подобранных с целью имитации отражения/поглощения света предметами, изготовленными из нескольких реальных материалов, например, бронзы и золота.
Таблица 6.2. Значения свойств для некоторых часто используемых материалов
Материал |
GL_AMBIENT |
GL_DIFFUSE |
GL_SPECULAR |
GL_SHININESS |
Латунь |
(0.33, 0.22, 0.03, 1.00) |
(0.78, 0.57, 0.11, 1.00) |
(0.99, 0.94, 0.81, 1.00) |
27.9 |
Бронза |
(0.21, 0.13, 0.05, 1.00) |
(0.71, 0.43, 0.18, 1.00) |
(0.39, 0.27, 0.17, 1.00) |
25.6 |
Полир. бронза |
(0.25, 0.15, 0.06, 1.00) |
(0.40, 0.24, 0.10, 1.00) |
(0.77, 0.46, 0.20, 1.00) |
76.8 |
Хром |
(0.25, 0.25, 0.25, 1.00) |
(0.40, 0.40, 0.40, 1.00) |
(0.77, 0.77, 0.77, 1.00) |
76.8 |
Медь |
(0.19, 0.07, 0.02, 1.00) |
(0.70, 0.27, 0.08, 1.00) |
(0.26, 0.14, 0.09, 1.00) |
12.8 |
Полированная медь |
(0.23, 0.09, 0.03, 0.03) |
(0.55, 0.21, 0.07, 1.00) |
(0.58, 0.22, 0.07, 1.00) |
51.2 |
Золото |
(0.25, 0.20, 0.07, 1.00) |
(0.75, 0.61, 0.23, 1.00) |
(0.63, 0.56, 0.37, 1.00) |
51.2 |
Полир. золото |
(0.25, 0.22, 0.06, 1.00) |
(0.35, 0.31, 0.09, 1.00) |
(0.80, 0.72, 0.21, 1.00) |
83.2 |
Олово |
(0.11, 0.06, 0.11, 1.00) |
(0.43, 0.47, 0.54, 1.00) |
(0.33, 0.33, 0.52, 1.00) |
9.8 |
Серебро |
(0.19, 0.19, 0.19, 1.00) |
(0.51, 0.51, 0.51, 1.00) |
(0.51, 0.51, 0.51, 1.00) |
51.2 |
Полир. серебро |
(0.23, 0.23, 0.23, 1.00) |
(0.28, 0.28, 0.28, 1.00) |
(0.77, 0.77, 0.77, 1.00) |
89.6 |
Изумруд |
(0.02, 0.17, 0.02, 0.55) |
(0.08, 0.61, 0.08, 0.55) |
(0.63, 0.73, 0.63, 0.55) |
76.8 |
Нефрит |
(0.14, 0.22, 0.16, 0.95) |
(0.54, 0.89, 0.63, 0.95) |
(0.32, 0.32, 0.32, 0.95) |
12.8 |
Обсидиан |
(0.05, 0.05, 0.07, 0.82) |
(0.18, 0.17, 0.23, 0.82) |
(0.33, 0.33, 0.35, 0.82) |
38.4 |
Бирюза |
(0.10, 0.19, 0.17, 0.80) |
(0.40, 0.74, 0.69, 0.80) |
(0.30, 0.31, 0.31, 0.80) |
12.8 |
Черный пластик |
(0.00, 0.00, 0.00, 1.00) |
(0.01, 0.01, 0.01, 1.00) |
(0.50, 0.50, 0.50, 1.00) |
32.0 |
Черная резина |
(0.02, 0.02, 0.02, 1.00) |
(0.01, 0.01, 0.01, 1.00) |
(0.40, 0.40, 0.40, 1.00) |
10.0 |
