Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Гоночный автомобиль" - Курсовая работа
Разработка трехмерной модели приложения "Гоночный автомобиль" на языке С с использованием библиотеки OpenGL и MFC, создание программы в среде Visual Studio 6.0. Информационное обеспечение, логическая структура и функциональная декомпозиция проекта.
Аннотация к работе
OPENGL (Open Graphics Librar - открытая графическая библиотека) - спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трехмерную Гоночный автомобильную графику. Главное, чтобы библиотека удовлетворяла спецификации OPENGL и ряду тестов. Библиотеку выпускают такие корпорации, как Microsoft, Silicon Graphics, а также просто группы программистов. Эту библиотеку написали целый ряд программистов, главным автором является Brian Paul. Библиотека Mesa распространяется в исходных текстах на языке Си и собирается почти для любой операционной системы.Кроме того, этот язык с самого начала предусматривал механизм расширения и гибкости - по мере того как расширения становились "общепринятыми", они становились частью следующего релиза. Для любого протокола, будь то сетевой протокол или язык описания сцен, важным является вопрос уровня абстракции - то есть того, на каком уровне работает данная система или протокол, что является входными данными и что выходными, какие компоненты будут взаимодействовать в качестве поставщиков и приемников данных. Создатели OPENGL планировали свой язык с явным намерением создать "виртуальный графический акселератор", так чтобы примитивы OPENGL максимально соответствовали примитивам современных графических карт и требовали минимум кода для трансляции из одной системы команд в другую.Точно так же, как процессор имеет два типа конвейеров - для целочисленных вычислений и чисел с плавающей точкой, OPENGL имеет два конвейера для пиксельных данных и вертексных операций, то есть для операций с векторными данными. Каждый из потоков обрабатывается отдельно, до тех пор пока это возможно - то есть до стадии мэппинга, когда пиксельные растры как фактуры "натягиваются" на плоскости и более сложные поверхности. Второй проход оперирует с примитивами типа точек, отрезков и полигонов - они преобразуются по правилам аффинных преобразований, совмещаются и сцена отсекается в подготовке к растрированию. Растрирование в качестве результата создает список объектов (точек, отрезков и треугольников) в двумерной плоскости.При реализации авторы ставили себе пять ориентиров, важных с точки зрения получаемых результатов. С самого начала в OPENGL была заложена "крайне желательная" возможность отрисовки динамических сцен. Для получения нужных результатов в систему введено множество параметров, или, как говорят, режимов рисования. Если некоторый режим или комбинация режимов на данном оборудовании не в состоянии обеспечить интерактивного взаимодействия и необходимой частоты обновления сцены, то пользователь или сама программа должны быть в состоянии отключать так много дополнительных функций, сколько нужно для получения "живой" картинки. Вы можете использовать их в произвольной комбинации, например использование мэппинга не ограничивает возможностей применения светотени.Позволяет делать предметы прозрачными, уровень прозрачности от 0 до 100%. Антиалиасинг. Применяется для сглаживания эффектов анимации, когда новое изображение строится на заднем плане и потом отображается целиком. При этом пользователь не видит самого процесса создания изображения в несогласованном состоянии, например различных "изнанок объектов", "дыр в пространстве", "граней мира" и подобных нежелательных деталей. К фактурам применяются эффекты освещенности и затенения в зависимости от характеристик "материала". В версии 1.2 реализованы блики поверх текстур.Для формирования матрицы преобразований можно воспользоваться готовыми командами: 1. Эта команда рассчитывает матрицу для выполнения вращения вектора против часовой стрелки на угол, определяемый параметром angle, осуществляемого относительно точки (x, , z). При помощи этой команды осуществляется перенос объекта на расстояние x по оси Х, на расстояние по оси и на расстояние z по оси Z.Эта функция напоминает функцию окна и, так же как и функция окна, вызывается не из приложения, а из Windows. Функции, которые вызываются из Windows, имеют специальный пролог и эпилог и называются функциями обратного вызова (callback function). Первый параметр функции (hwnd) должен содержать идентификатор окна, функция которого будет получать сообщения от таймера, или NULL. В последнем случае с создаваемым таймером не связывается никакое окно и сообщения от таймера будут приходить в специально созданную для этого функцию. Если первый параметр указан как NULL, второй параметр функции игнорируется, так как для таймера задана специальная функция, получающая сообщения только от этого таймера.Прорисовка в рабочей области начинается с метода void CLAB1View::ONDRAW(CDC PDC), в котором вызывается функция usr_RENDERSCENE (). Она отвечает за прорисовку функциональных частей и за некоторые важные расчеты, которые связаны с расположением некоторых отдельных деталей. Рисование 3D объекта начинается с установления формата пикселей и области вывода в
План
Содержание
АННОТАЦИЯ
ВВЕДЕНИЕ
1. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ OPENGL
1.1 Назначение OPENGL
1.2 Архитектура OPENGL
1.3 Преимущества OPENGL
1.4 Функциональные возможности OPENGL
1.5 Видовое преобразование
1.6 Использование таймера
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ПОСТОРОЕНИЯ ДИНАМИЧЕСКОГО ИЗОБРАЖЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ОБЪЕКТА «ГОНОЧНЫЙ АВТОМОБИЛЬ».
2.1 Разработка процедуры визуализации трехмерной сцены
2.2 Разработка интерфейса пользователя
2.3 Разработка подсистемы управления событиями
3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
3.1 Общие сведения о программе
3.2 Функциональное назначение
3.3 Логическая структура и функциональная декомпозиция проекта
3.4 Требования к техническому и программному обеспечению
3.5 Руководство пользователя
4. ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А.
Алгоритм построения трехмерной сцены
ПРИЛОЖЕНИЕ Б. Исходный код
ПРИЛОЖЕНИЕ В. Диаграмма классов
ПРИЛОЖЕНИЕ Г. Трехмерная модель объекта «ГОНОЧНЫЙ АВТОМОБИЛЬ»