Разработка приложения для визуализации трехмерных iен с использованием карт освещения и динамического освещения

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?.

Модуль шейдеры предназначен компиляции, отладки, подключение к программе, а также передачи из программы в шейдер параметров

Модуль внеэкранный буфер предназначен

Модуль 3d математика предназначен манипулировать математикой основных 3d данных:

) вектора разной размерности (2,3,4 компонентные),

) матрицы (3,4 разрядные),

) кватернионы

) углы Эйлера, а также их взаимное преобразование, а именно переход из углов Эйлера в матрицу и наоборот

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

Модуль OpenGL API функции необходим для описания и подключений функций OpenGL и его расширений

Модуль приложения предназначен для создания окна windows и инициализации контекста OpenGL. В данной разработке мы используем OpenGL версии 3.3.

Модуль 3d модель предназначен создания базовых примитивов базовые модели плоскость, куб, сфера, торус, а также произвольных моделей в формате bin. Модель в формате bin представляет собой бинарный файл, в котором записан массив мешей, где каждый меш описывается следующими паромерами:

общее количество данных

-массив данных, в формате (вершина, текстурная координата, нормаль)

-количество индексов

массив индексов

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

Свечение материала

Фоновое освещение материла

Рассеянный свет источника света

Отраженный свет источника света

Модуль тени предназначен для описания алгоритмов построения теней от 3d объектов

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

Свечение источника света

Фоновое освещение источника света

Рассеянный свет источника света

Отраженный свет источника света

Позиция источника света

Направление источника света

Проекционная матрица источника света

2.2Архитектура 3D-приложения с использованием проектируемого 3D движка

Решение задачи проектирование 3D-приложения с 3D движком существенно сокращает время разработки, а также облегчает понимание работы 3D приложения и сводится к созданию и вызову соответствующих классов и модулей в основной программе.

3.Реализация 3D-приложения

В данном разделе представлен и расписан алгоритм добавления тени для 3D объектов на основе теневой карты (shadow map) с фрагметнтами программного кода и шейдерами. Весь программный код 3D - приложения приведен в приложениях А, Б, В, Г, Д соответственно

3.1Обобщенный алгоритм работы 3d-программы

Обобщенный алгоритм работы 3d-программы представлен на рис. 3.1 и состоит из 8 шагов.

. Ввод исходных данных

На данном этапе вводиться ширина и высота окна визуализирующий наш 3d мир. Это способность очень важна, если мы хотим демонстрировать нашу программу на разных типах визуализации информации - монитор, проектор, плазменный телевизор.

Также здесь вводятся модели для рисования

Источники света

Текстуры

Материалы

Дополнительный буфер

. Инициализируется Windows-окно и контекст OpenGL 3.3.

. Обработка очереди сообщений Windows-окна

. Обработка ввода с клавиатуры пользователя

. Рисование кадра 3D-приложения

. Пересчет кадра 3D-приложения

. Проверка условий работает ли 3D-приложение

. Деинициализация Windows-окна и контекста OpenGL 3.3

>

Рисунок 3.1 Обобщенный алгоритм работы 3d-программы

3.2Рисование кадра 3d-приложения

Рисование кадра 3D-приложения представляет собой двух этапный алгоритм (рис. 3.2) и состоит следующих этапов:

рисование iены в текстуру тени.

рисование итогового изображения вместе с тенью

Рисунок 3.2 Алгоритм рисования кадра 3D-приложения

Подробный алгоритм рисование iены в текстуру тени представлен на рис. 3.3 и состоит в свою очередь из 6 этапов, а подробный алгоритм рисование итогового изображения вместе с тенью рисунок 8 соответственно.

Рисование iены в текстуру тени

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

Матрицу вида (view matrix)

Матрицу проекции (projection matrix)

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

На каждый источник освещения необходим дополнительный проход рендера iены, с использованием камеры источника освещения. В данном случаи у нас используется только один источник освещения, поэтому понадобиться только один дополнительный проход рендера.

Рисунок 3.3 Алгоритм рисования iены в текстуру тени

Стоит также отметить, что для направленного источника освещения используется не перспективная матрица проекции, а ортогональная, ее построение выгляди