Построение 3D модели "Компьютер" (OpenGL)

Автор работы: Пользователь скрыл имя, 17 Октября 2013 в 15:40, курсовая работа

Краткое описание

В некоторых библиотеках OpenGL (например под X Windows) имеется возможность изображать результат не только на локальной машине, но также и по сети. Приложение, которое вырабатывает команды OpenGL называется клиентом, а приложение, которое получает эти команды и отображает результат - сервером. Таким образом, можно строить очень мощные воспроизводящие комплексы на основе нескольких рабочих станций или серверов, соединённых сетью.

Содержание

Введение
1. Программирование с использованием библиотеки OpenGL 4
1.1 Назначение OpenGL 4
1.2 Архитектура OpenGL 5
1.3 Преимущества OpenGL 6
1.4 Базовые возможности библиотеки 7
1.5 Преобразование координат 8
1.6 Видовое преобразование 9
1.7 Проекции 10
1.8 Трехмерные объекты GLU 11
1.9 Использование таймера 12
2. Разработка приложения для построения динамического изображения трехмерной модели объекта «Компьютер» 15
2.1 Разработка процедуры визуализации трехмерной сцены 15
2.2 Разработка интерфейса пользователя 17
2.3 Разработка подсистемы управления событиями 18
3. Информационное и программное обеспечение 20
3.1 Общие сведения о программе 20
3.2 Функциональное назначение 20
3.3 Логическая структура и функциональная декомпозиция проекта 21
3.4 Требования к техническому обеспечению программы 23
3.5 Руководство пользователя 23
ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Прикрепленные файлы: 1 файл

Kursovaya_Rabota_Seidildayeva nazerke.docx

— 58.86 Кб (Скачать документ)

 

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

МЕЖДУНАРОДНЫЙ УНИВЕРСИТЕТ  ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Факультет информационных технологий

Кафедра вычислительной техники, программного обеспечения и                                              телекоммуникаций

 

 

 

КУРСОВАЯ РАБОТА

 

Тема

                                                    Построение 3D модели "Компьютер" (OpenGL)

 

Студент:

Группа:

Принял(а) :

Сейдильдаева Н.К

CSSE 105

ассоц.проф. Хасенова Г.И.


 

 

 

 

 

 

Алматы 2012

 

 

 

 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

3

1. АНАЛИЗ  СОВРЕМЕННЫХ ПОДХОДОВ К ТЕМЕ КУРСОВОЙ РАБОТЫ

 

1.1 Анализ отечественных  и зарубежных работ, связанных  с темой курсовой работы

5

1.2 Классификация(и) и сравнительная характеристика программных комплексов представленных на рынке;

7

1.3 Общая характеристика и особенности проблемной области, связанной с темой курсовой работиы;

12

1.4 Особенности применяемых инструментальных средств и технологий.

14

2. ТЕОРЕТИЧЕСКИЙ  РАЗДЕЛ

 

2.1 Выбор и описание моделей

 

2.2 Описание структур данных и/или знаний

 

2.3 Формализации методов и/или процедур и/или процессов и т.п.;

 

2.4 Формализация интерфейсов (указать конкретно)

 

2.5 Описания алгоритмов и/или методов

 

3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

 

3.1 архитектура,  состав и структура программных  и аппаратных средств

 

3.2 инструментальные  средства поддержки разработки

 

3.3 реализация функциональных  возможностей

 

3.4 реализация информационного  обеспечения

 

3.5 реализация интерфейсных  возможностей

 

3.6 тест-примеры,  технические характеристики программного  обеспечения,    инструкция  по работе и т.п. 

 

ЗАКЛЮЧЕНИЕ

 

СПИСОК ИСПОЛЬЗОВАННЫХ  ИСТОЧНИКОВ

 

ГЛОССАРИЙ

 

 

 

 

 

 

 

 

 

 

СОДЕРЖАНИЕ

Введение

1. Программирование  с использованием библиотеки OpenGL 4

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

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

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

1.4 Базовые возможности  библиотеки 7

1.5 Преобразование координат  8

1.6 Видовое преобразование 9

1.7 Проекции 10

1.8 Трехмерные объекты  GLU 11

1.9 Использование таймера  12

2. Разработка приложения  для построения динамического  изображения трехмерной модели  объекта «Компьютер» 15

2.1 Разработка процедуры  визуализации трехмерной сцены  15

2.2 Разработка интерфейса  пользователя 17

2.3 Разработка подсистемы  управления событиями 18

3. Информационное и программное  обеспечение 20

3.1 Общие сведения о  программе 20

3.2 Функциональное назначение 20

3.3 Логическая структура  и функциональная декомпозиция  проекта 21

3.4 Требования к техническому  обеспечению программы 23

3.5 Руководство пользователя 23

ЗАКЛЮЧЕНИЕ

 

СПИСОК ИСПОЛЬЗОВАННЫХ  ИСТОЧНИКОВ

 

ГЛОССАРИЙ

 

 

ВВЕДЕНИЕ

 

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

OpenGL - это графический  стандарт в области компьютерной  графики. На данный момент он  является одним из самых популярных  графических стандартов во всём  мире. Ещё в 1982 г. в Стенфордском  университете была разработана  концепция графической машины, на  основе которой фирма Silicon Graphics в своей рабочей станции Silicon IRIS реализовала конвейер рендеринга. Таким образом была разработана  графическая библиотека IRIS GL. На  основе библиотеки IRIS GL, в 1992 году  был разработан и утверждён  графический стандарт OpenGL. Разработчики OpenGL - это крупнейшие фирмы разработчики  как оборудования так и программного  обеспечения: Silicon Graphics, Inc., Microsoft, IBM Corporation, Sun Microsystems, Inc., Digital Equipment Corporation (DEC), Evans & Sutherland, Hewlett-Packard Corporation, Intel Corporation и Intergraph Corporation.

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

Что же представляет из себя OpenGL? С точки зрения программиста OpenGL - это программный интерфейс  для графических устройств, таких  как графические ускорители. Он включает в себя около 150 различных команд, с помощью которых программист может определять различные объекты и производить рендеринг. Говоря более простым языком, вы определяете объекты, задаёте их местоположение в трёхмерном пространстве, определяете другие параметры (поворот, масштаб, ...), задаёте свойства объектов (цвет, текстура, материал, ...), положение наблюдателя, а библиотека OpenGL позаботится о том чтобы отобразить всё это на экране. Поэтому можно сказать, что библиотека OpenGL является только воспроизводящей (Rendering), и занимается только отображением 3D обьектов, она не работает с устройствами ввода (клавиатуры, мыши). Также она не поддерживает менеджер окон.

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

В некоторых библиотеках OpenGL (например под X Windows) имеется возможность  изображать результат не только на локальной машине, но также и по сети. Приложение, которое вырабатывает команды OpenGL называется клиентом, а  приложение, которое получает эти  команды и отображает результат - сервером. Таким образом, можно  строить очень мощные воспроизводящие  комплексы на основе нескольких рабочих  станций или серверов, соединённых  сетью.

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

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

программирование opengl трехмерный компьютер пользователь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Интероперабельность. В сетевом  окружении важно передавать данные между разными платформами. Поэтому OpenGL заранее ориентирован на работу в режиме клиент-сервер, даже если и  клиент и сервер расположены на одном  компьютере.

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

1.4 Базовые возможности библиотеки

К базовым возможностям библиотеки можно отнести следующие:

1. Создание геометрических  и растровых примитивов. На их  основе строятся все объекты.  Из геометрических примитивов  библиотека предоставляет: точки,  линии, полигоны. Из растровых:  битовый массив (bitmap) и образ(image).

Информация о работе Построение 3D модели "Компьютер" (OpenGL)