Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Гоночный автомобиль"

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Разработка трехмерной модели приложения "Гоночный автомобиль" на языке С++ с использованием библиотеки OpenGL и MFC, создание программы в среде Visual Studio 6.0. Информационное обеспечение, логическая структура и функциональная декомпозиция проекта.
Краткое сожержание материала:

Размещено на

Размещено на

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«СЕВЕРО-КАВКАЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра информационных систем и технологий

Пояснительная записка

к курсовой работе

по дисциплине

Гоночный автомобильная геометрия и графика

Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Гоночный автомобиль"

Ставрополь, 2011

АННОТАЦИЯ

программное трехмерная модель

Приложение написано на языке С++ с использованием библиотеки OpenGL и MFC. Программа создана в среде Visual Studio 6.0. В рамках работы были выполнены все представляемые задачи. Имеется возможность производить различные настройки, такие как: настройка и выбор перспективы, выбор режима тумана, выбор нескольких источников света, вкл/откл текстуры, выбор режима полигона, изменение цвета объектов. Модель анимирована, ею можно управлять клавишами с клавиатуры. Также используя колесо мыши можно приближаться и отдаляться. Программа имеет интуитивно понятный интерфейс, который схож с другими Windows - приложениям, что указывает на массовость программного продукта.

Содержание

  • АННОТАЦИЯ
    • ВВЕДЕНИЕ
  • 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. ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
  • СПИСОК ЛИТЕРАТУРЫ
  • ПРИЛОЖЕНИЕ А.
  • Алгоритм построения трёхмерной сцены
    • ПРИЛОЖЕНИЕ Б. Исходный код
    • ПРИЛОЖЕНИЕ В. Диаграмма классов
    • ПРИЛОЖЕНИЕ Г. Трёхмерная модель объекта «ГОНОЧНЫЙ АВТОМОБИЛЬ»
    • ПРИЛОЖЕНИЕ Д. Перечень графического материала

ВВЕДЕНИЕ

OpenGL (Open Graphics Librar -- открытая графическая библиотека) -- спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную Гоночный автомобильную графику.

Включает более 250-ти функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании видеоигр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с DirectX.

Библиотеку OpenGL может производить кто угодно. Главное, чтобы библиотека удовлетворяла спецификации OpenGL и ряду тестов. Библиотеку выпускают такие корпорации, как Microsoft, Silicon Graphics, а также просто группы программистов. Одним из таких примеров служит реализация Mesa. Эту библиотеку написали целый ряд программистов, главным автором является Brian Paul. Библиотека Mesa распространяется в исходных текстах на языке Си и собирается почти для любой операционной системы.

Стандарт OpenGL развивается с 1992 года. Он разрабатывается фирмой Silicon Graphics. С тех пор библиотека завоевала огромную популярность и была интегрирована с множеством языков и систем разработки приложений. Можно писать программу с использованием OpenGL на Си, С++, Pascal, Java и многих других языках.

Библиотека OpenGL представляет собой интерфейс программирования трехмерной графики. Единицей информации является вершина, из них состоят более сложные объекты. Программист создает вершины, указывает, как их соединять (линиями или многоугольниками), устанавливает координаты и параметры камеры и ламп, а библиотека OpenGL берет на себя работу создания изображения на экране. OpenGL идеально подходит для программистов, которым необходимо создать небольшую трехмерную сцену и не задумываться о деталях реализации алгоритмов трехмерной графики. Для профессионалов, занимающихся программированием трехмерной графики, библиотека также будет полезной, т.к. она представляет основные механизмы и выполняет определенную автоматизацию.

Использование OpenGL позволяет создавать трехмерные поверхности, накладывать на них текстуры, освещать источниками света, выполнять эффект тумана, смешивания цветов, прозрачности, а также накладывать трафарет, передвигать объекты сцены, лампы и камеры по заданным траекториям, делая тем самым анимацию.

OpenGL непосредственно не поддерживает работу с устройствами ввода, такими как мышь или клавиатура, т.к. эта библиотека является платформенно-независимой. Но возможно задействовать функции конкретной операционной системы, под которую пишется программа или воспользоваться надстройками над OpenGL, такими как библиотеки GLUT или GLAUX.

1. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ OPENGL

1.1 Назначение OpenGL

Основная идея OpenGL: графическая библиотека должна быть аппаратно независимой, но в то же время использовать аппаратные ускорители, если они доступны. Кроме того, этот язык с самого начала предусматривал механизм расширения и гибкости - по мере того как расширения становились "общепринятыми", они становились частью следующего релиза.

Для любого протокола, будь то сетевой протокол или язык описания сцен, важным является вопрос уровня абстракции - то есть того, на каком уровне работает данная система или протокол, что является входными данными и что выходными, какие компоненты будут взаимодействовать в качестве поставщиков и приемников данных. Говоря попросту, нужно определиться по вопросу "что мы делаем и чего не делаем".

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

OpenGL оперирует графическими примитивами "начального уровня", такими как точки трехмерного пространства (вертексы, вершины), отрезки прямых, выпуклые полигоны и растровые изображения. Поддерживаются аффинные и проективные преобразования, вычисление освещения. К "продвинутым" функциям можно отнести мэппинг текстур (натягивание битовых карт на трехмерные поверхности) и антиалиасинг (сглаживание цветовых переходов - как локальное, в рамках отдельного объекта, так и глобальное, по всей сцене). Предполагается, что приложение более высокого уровня будет выполнять операции, которых недостает в OpenGL,- например, декомпозицию невыпуклых полигонов.

1.2 Архитектура OpenGL

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

Первый этап - аппроксимация кривых и поверхностей вычислением полиномов от входных значений. Второй проход оперирует с примитивами типа точек, отрезков и полигонов - они преобразуются по правилам аффинных преобразований, совмещаются и сцена отсекается в подготовке к растрированию. Растрирование в качестве результата создает список объектов (точек, отрезков и треугольников) в двумерной плоскости. Над отдельными объектами может быть выполнена операция раскрашивания, градиентной заливки или применения мэппинга, то есть наложения фактуры.

Готовые фрагменты окончательно обрабатываются перед тем, как они реально будут внесены в frame buffer. В частности, фрагменты сортируются зависимо от значений "глубины" - и эти значения сравниваются с известными на предмет рекомпозиции. Применение блендинга приводит к тому, что прозрачные фрагменты принимают цвет, состоящий из их собственного и цветов "ниже лежащих" фрагментов. Дополнительно может быть реализовано маскирование и другие эффекты.

Пиксельный процессор в ходе растрирования встраивает двумерные битовые фрагменты прямо в кадр. Часть готового кадра также может быть прочитана для повторного использования как массив пикселей - так что данные, отображаемые в буфере, могут стать частью других сцен.

1.3 Преимущества OpenGL

При реализации авторы ставили себе пять ориентиров, важных с точки зрения получаемых результатов.

Производительность. С самого начала в O...

Другие файлы:

Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Батискаф"
Основы программирования с использованием библиотеки OpenGL. Приложение для построения динамического изображения модели объекта "Батискаф": разработка...

Разработка приложения с использованием ОреnGL для построения динамического изображения трехмерной модели объекта "Самолёт"
Функциональные возможности библиотеки OpenGL. Разработка процедуры визуализации трехмерной сцены, интерфейса пользователя и подсистемы управления собы...

Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Нефтяная платформа"
Создание программы на языке C++ с использованием графических библиотек OpenGL в среде Microsoft Visual Studio. Построение динамического изображения тр...

Разработка приложения с использованием OpenGL для динамического изображения трехмерной модели объекта "Часовой механизм"
Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трех...

Построение 3D модели "Компьютер" (OpenGL)
Суть программирования с использованием библиотеки OpenGL, его назначение, архитектура, преимущества и базовые возможности. Разработка приложения для п...