- •Компьютерная графика: лабораторный практикум. Санкт-Петербург
- •Введение
- •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. Создание приложения
- •Заключение
- •Литература
- •Оглавление
6.3. Цель, требования и рекомендации к выполнению задания
Цель выполнения задания: знакомство с требованиями, которые необходимо выполнить при выводе 3Dобъектов при построении отражений и теней на основе источников света и методов отражения с использованием библиотеки OpenG
Требования и рекомендации к выполнению задания:
- проанализировать полученное задание, выделить информационные объекты и действия;
- разработать программу с использованием требуемых операций по трехмерному представлению объектов.
6.4. Задания
Разработать программу, реализующую представление разработанного вами трехмерной сцены (из задания 3 и 5) с добавлением возможности формирования отражений и теней, используя предложенные функции OpenGL(модель освещения, типы источников света, свойства материалов).
Разработанная программа должна быть пополнена возможностями остановки интерактивно различных атрибутов через вызов соответствующих элементов интерфейса пользователя (замена типа источника света, управление положением камеры, изменение свойств материала модели, как с помощью мыши, так и с помощью диалоговых элементов)
1. Реализация комнаты,
1.1. Реализация комнаты, в комнате находятся геометрические предметы различных форм и свойств (кубы, параллелепипеды, шары), и протяженный источник света на потолке. Присутствует также камера с заданными параметрами (обычно она расположена так, чтобы была видна вся комната). Сцена не должна превращаться в набор разнородных предметов. Эстетичность и оригинальность выполненного задания принимается во внимание.
1.2. Реализация комнаты как в задании 1.1., но протяженный источник света на потолке комнаты необходимо эмулировать несколькими точечными источниками.
1.3. Реализация комнаты как в задании 1.1., но реалистичность сцены необходимо значительно повысить за счет разбиение многоугольников. Суть этого в том, что модели освещение OpenGL освещенность вычисляется в вершинах многоугольника с учетом направления нормалей в этих вершинах, а затем линейно интерполируется по всей поверхности. Если используются относительно большие многоугольники, то, очевидно, невозможно получить действительно плавные переходы и затенения. Для преодоления этого недостатка можно разбивать большие грани (стены, например) на множество меньших по размерам. Соответственно разброс в направлении нормалей в вершинах одного многоугольника не будет столь велик, и затенение станет более плавным
1.4. Реализация комнаты как в задании 1.1., но с наложением текстур на объекты сцены и присутствие в сцене теней. Один из простейших алгоритмов наложения теней приведен в разделе 6. За его реализацию можно получить до 2 баллов. Использование более продвинутых алгоритмов (например, shadow volumes) будет оценено дополнительными баллами.
1.5. Реализация комнаты как в задании 1.1., но с введением в сцену прозрачных объектов и корректный их вывод.
1.6. Реализация комнаты как в задании 1.1., но с введением в сцену зеркальной стены с мультиотражением.
2. Виртуальные часы
Целью задания является создание трехмерной интерактивной модели аналоговых часов.
Обязательные требования к программе:
Программа должна демонстрировать на экране трехмерную модель часов. Часы могут быть любые, от наручных до кремлевских. Постарайтесь сделать как можно более реалистичную сцену. Поощряется подробная детализация элементов часов.
Часы на экране обязательно должны иметь минутную и часовую стрелки. Секундная - по желанию, но очень приветствуется (иначе трудно будет определить, ходят часы или нет).
Время на часах должно совпадать с системным временем компьютера. Часы обязательно должны ходить, т.е. стрелки должны двигаться и скорость их движения не должна зависеть от производительности компьютера, а определяться только текущим временем.
Сцена должна быть интерактивной, т.е. давать приемлемую частоту кадров в секунду (>10) при визуализации на машине с аппаратным ускорителем трехмерной графики. Необходимо реализовать вращения часов (или, возможно, камеры) с помощью мыши (предпочтительно) или клавиатуры. Можно также предусмотреть режимы с автоматическим вращением.
2.1. Введение дополнительной геометрии. Например, ремешков, маятников и т.д. Можно сделать часы с кукушкой, будильник и т.п.
2.2. Введение возможностей для управления процессом визуализации. Например, наличие/отсутствие текстур, режимы заливки, детализации и т.д.
2.3. Использование максимум возможностей OpenGL - блики, отражения, спецэффекты.
3. Интерактивный ландшафт
Целью данного задания является генерация и вывод с помощью OpenGL поверхности ландшафта, а также обеспечение интерактивного передвижения над ней. Для выполнения обязательной части задания необходимы: генерация трехмерного ландшафта, раскраска для придания реалистичности, эффект тумана, возможность "полета" над ландшафтом (управление).