Автор работы: Пользователь скрыл имя, 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
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
2. Использование B-сплайнов
для рисования кривых по
3. Видовые и модельные
преобразования, позволяющие вращать
объекты, располагать их в
4. Работа с цветом. OpenGL
предоставляет возможности
5. Удаление невидимых
линий и поверхностей.Z-
6. Двойная буферизация,
позволяющая устранить
7. Наложение текстуры.
8. Сглаживание (позволяет скрыть ступенчатость).
9. Освещение (задавать
источники освещения, их
10. Атмосферные эффекты, такие как дым, туман.
11. Прозрачность объектов.
12. Использование списков изображений.
Для упрощения работы с OpenGL
существуют вспомогательные библиотеки:
GLU (в библиотеку вошли функции
для работы со сплайнами, реализованы
дополнительные операции над матрицами
и дополнительные виды проекций), GLUT
(предоставляет функции для
1.5 Преобразование координат
В OpenGL каждая вершина задается четырьмя координатами, что связано с использованием однородных координат. В однородных координатах положение точки P (x, y, z) записывается как P (W Ч x, WЧ y, WЧz, W).
Для преобразования координат используется матричное представление. В OpenGL существует три типа матриц - видовая, проекций и текстуры. Все они имеют размер 4 Ч4 . Для того, чтобы с какой-либо матрицей можно было работать ее нужно сделать текущей, для чего предусмотрена команда: void glMatrixMode(GLenum mode). Параметр mode определяет, с каким набором матриц будут выполняться последующие операции, и может принимать одно из следующих значений: GL_MODELVIEW (последовательность операций над матрицами применяется к видовой матрице), GL_PROJECTION (последовательность операций над матрицами применяется к матрице проекций), GL_TEXTURE (последовательность операций над матрицами применяется к матрице текстуры).
После того как установлена текущая матрица, необходимо определить ее значения. В данном случае полезной может оказаться функция void glLoadIdentity(), которая заменяет текущую матрицу на единичную.
1.6 Видовое преобразование
Для формирования матрицы преобразований можно воспользоваться готовыми командами:
1. Вращение: void glRotate[f,d](GLtype angle,
GLtype x, GLtype y, GLtype z). Эта команда рассчитывает
матрицу для выполнения
2. Параллельный перенос: void glTranslate[f,d](GLtype x, GLtype y, GLtype z). При помощи этой команды осуществляется перенос объекта на расстояние x по оси Х, на расстояние y по оси Y и на расстояние z по оси Z.
3. Масштабирование: void glScale[f,d](
GLtype x, GLtype y, GLtype z). Осуществляет частичное
масштабирование вдоль каждой
из координатных осей на
При использовании перечисленных команд видового преобразования OpenGL умножает текущую матрицу на соответствующую матрицу вращения, переноса или масштабирования и помещает результат на место текущей матрицы.
1.7 Проекции
В OpenGL поддерживаются такие
виды проекций как ортографическая
и перспективная. Ортографическая (параллельная)
проекция представляет пространство параллелепипедом
и размер изображаемых фигур не зависит
от расстояния, на котором они находятся.
Объем отсечения для
Рисунок 1 - Объем отсечения ортографической проекции
Перспективная проекция моделирует пространство четырех угольной усеченной призмой и в ней удаленный объект кажется меньше, чем такой же, но расположенный ближе. Объем отсечения для перспективной проекции представлен на рисунке 2.
Рисунок 2 - Объем отсечения перспективной проекции
1.8 Трехмерные объекты GLU
Создание glu объекта сводится к следующим этапам:
1. Создание объекта типа GLUquadricObj командой gluNewQuadric.
2. Установка свойств созданного объекта командой gluQuadricDrawStyle.
3. Рисование объекта.
4. Удаление объекта командой gluDeleteQuadric.
При программировании с использованием glu доступны следующие команды: void gluQuadricDrawStyle (GLUquadric * qObject,GLenum drawStyle) ,где qObject - указатель на quadric объект; drawStyle - стиль вывода трехмерного объекта. Возможные значения параметра drawStyle : GLU_FILL - сплошной объект, GLU_LINE - каркасный объект, GLU_POINT - рисуются только точки.
Рассмотрим команды:
1) рисования цилиндра:
void gluCylinder (GLUquadric * qobj,GLdouble baseRadius,GLdouble topRadius, GLdouble height, GLint slices,GLint stacks), где qObject - указатель на quadric объект; baseRadius - радиус первого основания; topRadius - радиус второго основания; height - высота; slices -количество слоев; stacks - количество секторов;
2) рисования диска:
void gluDisk (GLUquadric * qobj,GLdouble innerRadius, GLdouble outerRadius, GLint slices,GLint loops), где qObject - указатель на quadric объект; innerRadius - внутренний радиус; s outerRadiu - внешний радиус; slices - количество слоев; loops - количество огибающих;
3) рисования дискового сектора:
void gluPartialDisk (GLUquadric * qobj,GLdouble innerRadius, GLdouble outerRadius,GLint slices, GLint loops,GLdouble startAngle, GLdouble endAngle), где startAngle - начальный угол; endAngle - конечный угол сектора;
4) рисования сферы:
void gluSphere (GLUquadric * qobj,GLdouble radius,GLint slices, GLint loops).
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ПОСТРОЕНИЯ ДИНАМИЧЕСКОГО ИЗОБРАЖЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ОБЪЕКТА «КОМПЬЮТЕР».
2.1 Разработка
процедуры визуализации
Прорисовка в рабочей
области начинается с метода void CLab1View::OnDraw(CDC*
pDC), в котором вызывается функция
usr_RenderScene (). Она отвечает за прорисовку
функциональных частей и за некоторые
важные расчёты, которые связаны
с расположением некоторых
Рисование 3D объекта начинается
с установления формата пикселей
и области вывода в методах BOOL
CLab1View::usr_
На данном этапе модель представлена в незаконченном виде без таких важных составляющих как: системный блок, клавиатура, звуковые колонки и, конечно же, стол, на котором располагается любой обычный персональный компьютер.
Переносим координаты и рисуем
крышку стола, на котором стоит монитор
с помощью функции auxSolidBox((GLfloat)2.2,2.6,
Затем рисуются два параллелепипеда,
которые представляют собой системный
блок компьютера. Для самого блока
выбраны следующие параметры: auxSolidBox((GLfloat)0.3,1.4,
И, наконец, для придания модели завершенного вида, необходимо дорисовать звуковые колонки, для этого:
- сначала требуется провести
смещение системы координат (
- рисование цилиндра (задняя часть колонки);
- рисование параллелепипеда (передняя часть);
- рисование дискового сектора (верхняя часть).
Все необходимые операции производятся теми же функциями glTranslatef, auxSolidBox, gluCylinder, gluDisk.
Весь код метода usr_RenderScene() представлен в приложении А.
2.2 Разработка интерфейса пользователя
Для данной программы разработан интерфейс, позволяющий:
- включать и выключать эффект тумана;
- выбирать тип тумана;
- включать и выключать дисковод;
- вращать компьютер;
- задавать скорость и вид движения компьютера;
- выбирать тип и задавать параметры перспективы
- приближать и удалять объект с помощью мышки.
Для добавления данных возможностей было отредактирована панель инструментов приложения, а именно
- добавлена кнопка «Перспектива»
- добавлена кнопка «Движение».
У всех кнопок имеются всплывающие подсказки, а также подсказки, которые появляются в строке состояния.
В главном меню добавлены пункты:
- «Режим тумана» («View» « Режим тумана») - запуск диалогового окна выбора типа тумана.
- «Выключить туман» («View» « Выключить туман») - устранение эффекта тумана.
- «On\Off» («Move» « On\Off ») - включать и выключать дисковод.
Приложение имеет интуитивно понятный интерфейс, с которым удобно работать.
2.3 Разработка
подсистемы управления
Приложения с графическим
интерфейсом управляются
Таким образом, разработка подсистемы
управления событиями занимает особое
место в общей системе
- WM_DESTROY - освобождение занятых ресурсов;
- WM_SIZE - изменения сцены относительно размеров окна;
- WM_ERASEBKGND - предотвращения мерцания;
- WM_TIMER - используется для создания таймера;
- WM_MOUSEWHEEL - обработка вращения колеса мышки;
- WM_KEYDOWN - обработка нажатия клавиши;
- COMMAND(ID_PERSP, CKarkasView::OnPersp ()) - обработка
события при вызове окна
- COMMAND(ID_OPTIONS, CKarkasView::OnOptions ()) - обработка события при вызове окна настройки типа вращения и скорости движения объекта;
- COMMAND(ID_VIEW_1, CKarkasView::OnView1())- обработка события выбора типа тумана;
- COMMAND(ID_VIEW_SBROS, CKarkasView:: OnVewSbros())
- обработка события нажатия
- COMMAND (ID_VIEW_MOVE, CKarkasView::OnMove ())
- обработка нажатия кнопки «
3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
3.1 Общие сведения о программе
Программа называется «Трехмерная
модель Компьютера». При работе с
данной программой у пользователя есть
возможность работать с визуальной
моделью данного объекта. Вращать
ее относительно осей, включать и выключать
эффект тумана, а также задавать
тип тумана, приближать и удалять
с помощью колеса мышки, включать
и выключать вращение модели и
устанавливать скорость вращения, а
также имеется возможность
3.2 Функциональное назначение
Данное приложение обеспечивает следующие возможности:
- изменение положения объекта в пространстве (перемещение относительно осей);
- приближение и удаление объекта;
- включение и выключение эффекта тумана;
- выбор типа тумана;
- изменение проекции;
- управление дисководом;
- включение и выключение вращения сцены;
- установка скорости вращения сцены.
3.3 Логическая структура и функциональная декомпозиция проекта
Инициализация OpenGL происходит в несколько этапов.
1. Выбираем и устанавливаем
формат пикселей. В информации
о формате пикселей
2. Создаем контекст вывода
для библиотеки OpenGL. Данный контекст
создается с помощью функции
wglCreateContext(), далее функция wglMakeCurrent()
устанавливает текущий
Информация о работе Построение 3D модели "Компьютер" (OpenGL)