Разработка приложения с использованием ОреnGL для построения динамического изображения трехмерной модели объекта "Мотоцикл" - Курсовая работа

бесплатно 0
4.5 229
Программирование с использованием библиотеки ОреnGl: возможности, работа с матрицами, синтаксист команд, освещение, спецификация материалов, создание эффекта тумана. Разработка визуализации трехмерной сцены. Информационное и программное обеспечение.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Говоря более простым языком, вы определяете объекты, задаете их местоположение в трехмерном пространстве, определяете другие параметры (поворот, масштаб,…), задаете свойства объектов (цвет, текстура, материал,…), положение наблюдателя, а библиотека OPENGL позаботится о том чтобы отобразить все это на экране. OPENGL предоставляет программисту возможность работы с цветом в режиме RGBA (красный-зеленый-синий-альфа) или используя индексный режим, где цвет выбирается из палитры. Для того чтобы выбрать, какую матрицу надо изменить, используется команда: void GLMATRIXMODE (GLENUM mode), вызов которой, со значением параметра «mode» равным GL_MODELVIEW, GL_PROJECTION, или GL_TEXTURE включает режим работы с модельно-видовой матрицей, матрицей проекций, или матрицей текстуры соответственно. Например, команда GLVERTEX2i() описана как базовая в библиотеке OPENGL, и использует в качестве параметров два целых числа, а команда GLCOLOR3fv() использует в качестве параметра указатель на массив из трех вещественных чисел. Если в сцене материалы объектов различаются лишь одним параметром, рекомендуется сначала установить нужный режим, вызвав GLENABLE() с параметром GL_COLOR_MATERIAL, а затем использовать команду void GLCOLORMATERIAL (GLENUM face, GLENUM pname), где параметр «face» имеет аналогичный смысл, а параметр «pname» может принимать все перечисленные значения.

Введение
Сейчас трехмерные изображения можно увидеть везде, начиная от компьютерных игр и заканчивая системами моделирования в реальном времени. Раньше, когда трехмерная графика существовала только на суперкомпьютерах, не существовало единого стандарта в области графики. Все программы писались с «нуля» или с использованием накопленного опыта, но в каждой программе реализовывались свои методы для отображения графической информации. С приходом мощных процессоров и графических ускорителей трехмерная графика стала реальностью для персональных компьютеров. Но в тоже время производители программного обеспечения столкнулись с серьезной проблемой - это отсутствие каких-либо стандартов, которые позволяли писать программы, независимые от оборудования и операционной системы. Одним из первых таких стандартов, существующий и по сей день является 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 (например под Х Windows) имеется возможность изображать результат не только на локальной машине, но также и по сети. Приложение, которое вырабатывает команды OPENGL называется клиентом, а приложение, которое получает эти команды и отображает результат - сервером. Таким образом, можно строить очень мощные воспроизводящие комплексы на основе нескольких рабочих станций или серверов, соединенных сетью.

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

1.1 Основные возможности

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

Использование В-сплайнов. B-сплайны используются для рисования кривых по опорным точкам.

Видовые и модельные преобразования. С помощью этих преобразований можно располагать объекты в пространстве, вращать их, изменять форму, а также изменять положение камеры из которой ведется наблюдение.

Работа с цветом. OPENGL предоставляет программисту возможность работы с цветом в режиме RGBA (красный-зеленый-синий-альфа) или используя индексный режим, где цвет выбирается из палитры.

Удаление невидимых линий и поверхностей. Z-буферизация.

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

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

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

Освещение. Позволяет задавать источники света, их расположение, интенсивность, и т.д.

Атмосферные эффекты. Например туман, дым. Все это также позволяет придать объектам или сцене реалистичность, а также «почувствовать» трехмерное изображение.

Прозрачность объектов.

Использование списков изображений. программирование библиотека трехмерный матрица

1.2 Работа с матрицами

Для задания различных преобразований объектов сцены в OPENGL используются операции над матрицами, при этом различают три типа матриц: модельно-видовая, матрица проекций и матрица текстуры. Все они имеют размер 4х4. Видовая матрица определяет преобразования объекта в мировых координатах, такие как параллельный перенос, изменение масштаба и поворот. Матрица проекций определяет, как будут проецироваться трехмерные объекты на плоскость экрана (в оконные координаты), а матрица текстуры определяет наложение текстуры на объект.

Умножение координат на матрицы происходит в момент вызова соответствующей команды OPENGL, определяющей координату (как правило, это команда GLVERTEX*.

Для того чтобы выбрать, какую матрицу надо изменить, используется команда: void GLMATRIXMODE (GLENUM mode), вызов которой, со значением параметра «mode» равным GL_MODELVIEW, GL_PROJECTION, или GL_TEXTURE включает режим работы с модельно-видовой матрицей, матрицей проекций, или матрицей текстуры соответственно. Для вызова команд, задающих матрицы того или иного типа, необходимо сначала установить соответствующий режим.

Для определения элементов матрицы текущего типа вызывается команда void GLLOADMATRIX [f d] (GLTYPE *m), где «m» указывает на массив из 16 элементов типа float или double в соответствии с названием команды, при этом сначала в нем должен быть записан первый столбец матрицы, затем второй, третий и четвертый. Еще раз следует обратить внимание, в массиве «m» матрица записана по столбцам.

Команда void GLLOADIDENTITY(void) заменяет текущую матрицу на единичную.

1.3 Синтаксис команд

Определения команд GL находятся в файле gl.h, для включения которого нужно написать#include

Для работы с библиотекой GLU нужно аналогично включить файл glu.h. Версии этих библиотек, как правило, включаются в дистрибутивы систем программирования, например Microsoft Visual С или Borland С 5.02.

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

Все команды (процедуры и функции) библиотеки GL начинаются с префикса gl, все константы - с префикса GL_. Соответствующие команды и константы библиотек GLU и GLUT аналогично имеют префиксы glu (GLU_) и glut (GLUT_)

Кроме того, в имена команд входят суффиксы, несущие информацию о числе и типе передаваемых параметров. В OPENGL полное имя команды имеет вид: туре GLCOMMAND_name [1 2 3 4] [b s i f d ub us ui] [v] (type1 arg1,…, TYPEN ARGN)

Таким образом, имя состоит из нескольких частей: Gl это имя библиотеки, в которой описана эта функция: для базовых функций OPENGL, функций из библиотек GLU, GLUT, GLAUX это gl, glu, glut, glaux соответственно Command_name имя команды

[1 2 3 4] число аргументов команды

[b s i f d ub us ui] тип аргумента: символ b означает тип GLBYTE (аналог char в С\С ), символ f - тип GLFLOAT (аналог float), символ i - тип GLINT (аналог int) и так далее. Полный список типов и их описание можно посмотреть в файле gl.h

[v] наличие этого символа показывает, что в качестве параметров функции используется указатель на массив значений

Символы в квадратных скобках в некоторых названиях не используются. Например, команда GLVERTEX2i() описана как базовая в библиотеке OPENGL, и использует в качестве параметров два целых числа, а команда GLCOLOR3fv() использует в качестве параметра указатель на массив из трех вещественных чисел.

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

1.4 Освещение

В OPENGL используется модель освещения, в соответствии с которой цвет точки определяется несколькими факторами: свойствами материала и текстуры, величиной нормали в этой точке, а также положением источника света и наблюдателя. Для корректного расчета освещенности в точке надо использовать единичные нормали, однако команды: типа GLSCALE*(), могут изменять длину нормалей. Чтобы это учитывать, нужно использовать режим нормализации векторов нормалей, который включается вызовом команды GLENABLE (GL_NORMALIZE).

Для задания глобальных параметров освещения используются команды void GLLIGHTMODEL [i, f] (GLENUM pname, GLENUM param) и void GLLIGHTMODEL [i f] v (GLENUM pname, const GLTYPE *params).

Аргумент «pname» определяет, какой параметр модели освещения будет настраиваться и может принимать следующие значения: GL_LIGHT_MODEL_LOCAL_VIEWER, параметр «param» должен быть булевым и задает положение наблюдателя. Если он равен GL_FALSE, то направление обзора считается параллельным оси z, вне зависимости от положения в видовых координатах. Если же он равен GL_TRUE, то наблюдатель находится в начале видовой системы координат. Это может улучшить качество освещения, но усложняет его расчет. Значение по умолчанию - GL_FALSE.

GL_LIGHT_MODEL_TWO_SIDE параметр «param» должен быть булевым и управляет режимом расчета освещенности, как для лицевых, так и для обратных граней. Если он равен GL_FALSE, то освещенность рассчитывается только для лицевых граней. Если же он равен GL_TRUE, расчет проводится и для обратных граней. Значение по умолчанию - GL_FALSE.

GL_LIGHT_MODEL_AMBIENT параметр «params» должен содержать четыре целых или вещественных числа, которые определяют цвет фонового освещения даже в случае отсутствия определенных источников света. Значение по умолчанию - (0.2, 0.2, 0. 2,1.0).

1.5 Спецификация материалов

Для задания параметров текущего материала используются команды void GLMATERIAL [i f] (GLENUM face, GLENUM pname, GLTYPE param) void GLMATERIAL [i f] v (GLENUM face, GLENUM pname, GLTYPE *params).

С их помощью можно определить рассеянный, диффузный и зеркальный цвета материала, а также степень зеркального отражения и интенсивность излучения света, если объект должен светиться. Какой именно параметр будет определяться значением «param», зависит от значения pname: - GL_AMBIENT параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют рассеянный цвет материала (цвет материала в тени). Значение по умолчанию - (0.2, 0.2, 0.2, 1.0);

- GL_DIFFUSE параметр «params» должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют диффузный цвет материала. Значение по умолчанию - (0.8, 0.8, 0.8, 1.0);

- GL_SPECULAR параметр «params» должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют зеркальный цвет материала. Значение по умолчанию - (0.0, 0.0, 0.0, 1.0);

- GL_SHININESS параметр params должен содержать одно целое или вещественное значение в диапазоне от 0 до 128, которое определяет степень зеркального отражения материала. Значение по умолчанию - 0;

- GL_EMISSION параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют интенсивность излучаемого света материала. Значение по умолчанию: (0.0, 0.0, 0.0, 1.0);

- GL_AMBIENT_AND_DIFFUSE эквивалентно двум вызовам команды: GLMATERIAL*() со значением «pname» GL_AMBIENT и GL_DIFFUSE и одинаковыми значениями «params».

Из этого следует, что вызов команды: GLMATERIAL [i f]() возможен только для установки степени зеркального отражения материала. Команда GLMATERIAL [i f] v() используется для задания остальных параметров.

Параметр «face» определяет тип граней, для которых задается этот материал и может принимать значения GL_FRONT, GL_BACK или GL_FRONT_AND_BACK.

Если в сцене материалы объектов различаются лишь одним параметром, рекомендуется сначала установить нужный режим, вызвав GLENABLE() с параметром GL_COLOR_MATERIAL, а затем использовать команду void GLCOLORMATERIAL (GLENUM face, GLENUM pname), где параметр «face» имеет аналогичный смысл, а параметр «pname» может принимать все перечисленные значения. После этого значения выбранного с помощью «pname» свойства материала для конкретного объекта (или вершины) устанавливаются вызовом команды GLCOLOR*(), что позволяет избежать вызовов более ресурсоемкой команды GLMATERIAL*() и повышает эффективность программы.

1.6 Создание эффекта тумана

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

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

Для включения эффекта затуманивания необходимо вызвать команду GLENABLE (GL_FOG).

Метод вычисления интенсивности тумана в вершине можно определить с помощью команд void GLFOG[if] (enum pname, T param); void GLFOG[if] v (enum pname, T params);

Аргумент «pname» может принимать следующие значения: GL_FOG_MODE аргумент «param» определяет формулу, по которой будет вычисляться интенсивность тумана в точке. В этом случае «param» может принимать значения: - GL_ЕХР интенсивность вычисляется по формуле f=ехр (-d*z);

- GL_ЕХР2 интенсивность вычисляется по формуле f=ехр(- (d*z) 2);

- GL_LINEAR интенсивность вычисляется по формуле f=е-z/е-s, где z - расстояние от вершины, в которой вычисляется интенсивность тумана, до точки наблюдения.

Коэффициенты d, е, s задаются с помощью следующих значений аргумента pname: - GL_FOG_DENSITY param определяет коээфициент d;

- GL_FOG_START param определяет коэффициент s;

- GL_FOG_END param определяет коэффициент е.

Цвет тумана задается с помощью аргумента pname, равного GL_FOG_COLOR в этом случае params - указатель на массив из 4-х компонент цвета.

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

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

Прорисовка в рабочей области начинается с метода void CLAB1View: ONDRAW (CDC* PDC), в котором вызывается функция usr_RENDERSCENE (). Она отвечает за прорисовку функциональных частей и за некоторые важные расчеты, которые связаны с расположением некоторых отдельных деталей.

Рисование 3D объекта начинается с установления формата пикселей и области вывода в методах BOOL CLAB1View:usr_setuppixelformat() и void CLAB1View:usr_Resize (int х, int y, int width, int heidht) соответственно. Рассмотрим подробнее метод usr_RENDERSCENE (), код которого представлен в приложении Б.

В этом методе начинается прорисовка объекта. Модель рисуем с переднего колеса состоящего из нескольких деталей - GLUCYLINDER (quadric, 0.5, 0.5, 0.12, 50,40), GLUCYLINDER (quadric, 0.45, 0.45, 0.12, 50,40), Cylinder (quadric, 0.5, 0.45, 0.0, 50,40), Cylinder (quadric, 0.5, 0.45, 0.0, 50,40), Cylinder (QUADOBJ, 0.05, 0.46, 0.0, 25, 15), Cylinder (quadric, 0.05, 0.05, 0.18, 50,40) и 2-х SOLIDSPHERE (0.05). Затем рисуем корпус предварительно развернув сцену на 80 градусов при помощи функции GLROTATEF, при помощи функций GLUCYLINDER (quadric, 0.3, 0.3, 0.4, 50,40). Следующий шаг - стойки состоящие из цилиндров, но прежде настраиваем сцену при помощи функций (GLSCALEF (0. 4,1,1); GLROTATEF (90, 1, 0, 0); GLROTATEF (-10, 0, 1, 0);). Теперь рисуем фару также из цилиндра предварительно настроив сцену GLCOLOR3f (155.0f, 5.0f, 0.0f), GLTRANSLATEF (-0. 55,0. 2,0.07), GLSCALEF (0. 4,1,1), GLROTATEF (90, 0, 1, 0). Рисуем руль при помощи цилиндров и сфер и GLROTATEF, GLSCALEF, GLTRANSLATEF. Теперь рисуем заднее колесо, задние стойки аналогично передним. Рисуем сидение при помощи AUXSOLIDBOX((GLFLOAT) 0. 2,0. 3,0.38). Перед прорисовкой каждой детали использовалась функция GLTRANSLATEF для переноса начала координат. На этом прорисовка модели закончена.

Весь код метода usr_RENDERSCENE() представлен в приложении Б.

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

Для данной программы разработан интерфейс, позволяющий: - включать и выключать эффект тумана;

- выбрать цвет тумана;

- выбирать тип тумана;

- вращать Мотоцикл;

- задавать цвет деталей Мотоцикла;

- выбирать тип полигонов;

- выбирать несколько источников света;

- выбирать тип и задавать параметры перспективы;

- вращать и поворачивать сцену цифровой клавиатурой;

- приближать и удалять объект с помощью мышки.

В главном меню добавлены пункты: - «Настройки» - различные настройки всей сцены (Рисунок Г.2).

Приложение имеет интуитивно понятный интерфейс, с которым удобно работать.

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

Любое windows-положение основано на событиях и их обработке, другими словами поведение программы управляется событиями. Данный проект тоже является windows приложением, и, следовательно, обработка событий занимает важное место. К основным событиям, играющим важную, для корректной работы программы, роль относятся следующие: - 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()) - обработка события нажатия кнопки «Убрать туман».

-

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

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

Программа называется «Мотоцикл». При работе с данной программой у пользователя есть возможность работать с визуальной моделью данного объекта. Вращать ее относительно осей, включать и выключать эффект тумана, выбирать цвет тумана, выбирать тип полигонов, выбирать несколько источников света, выбирать цвет деталей Мотоцикла, также задавать тип тумана, приближать и удалять сцену с помощью колеса мышки, включать и выключать вращение модели и устанавливать скорость вращения. Программное обеспечение, на котором разработана приложение - Microsoft Visual С 6.0.

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

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

- включать и выключать эффект тумана;

- выбрать цвет тумана;

- выбирать тип тумана;

- вращать Мотоцикл;

- задавать цвет деталей Мотоцикла;

- выбирать тип полигонов;

- выбирать несколько источников света;

- выбирать тип и задавать параметры перспективы;

- вращать и поворачивать сцену цифровой клавиатурой;

- приближать и удалять объект с помощью мышки.

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

Инициализация OPENGL происходит в несколько этапов.

1. Выбираем и устанавливаем формат пикселей. В информации о формате пикселей указывается такая информация как глубина цвета, различные флаги поверхности. Вся эта структура представляется в специальной структуре PIXELFORMATDESCRIPTOR. Далее передаем на рассмотрение операционной системе, выбранный формат пикселей. После того, как система просмотрит его, она выберет наиболее совпадающий формат с тем, который поддерживается в контексте устройства. Функцией, осуществляющей такого рода проверку, является CHOOSEPIXELFORMAT(). После выбора формата пикселей функция SETPIXELFORMAT() устанавливает его в контексте устройства.

2. Создаем контекст вывода для библиотеки OPENGL. Данный контекст создается с помощью функции WGLCREATECONTEXT(), далее функция WGLMAKECURRENT() устанавливает текущий контекст. Функция WGLGETCURRENTDC() необходима для корректного завершения приложения, а WGLGETCURRENTDC() - для удаления контекста воспроизведения.

Одним из важных методов является usr_RESIZE(), который устанавливает перспективу и область вывода.

За отображение сцены отвечает метод usr_RENDERSCENE(), который вызывает в свою очередь функции рисования компьютера.

Функции, вызываемые методом usr_RENDERSCENE() были подробно рассмотрены в разделе «2.1 Разработка процедуры визуализации трехмерной сцены», а важные для логического понимания структуры события программы рассмотрены в разделе «2.3 Разработка подсистемы управления событиями».

Для наглядности приведем таблицу наиболее важных методов - таблица 3.1.

Таблица 3.1 - Основные методы и функции

№ Метод Назначение Назначение параметров

1 PRECREATEWINDOW (CREATESTRUCT& cs) Инициализация окна cs - объект структуры CREATESTRUCT. Производится изменение значений, присвоенных переменным-членам структуры CREATESTRUCT для изменения режима открытия окна и его параметров.

2 usr_BSETUPPIXELFORMAT () Установка формата пикселей

3 usr_BINITOPENGL() Инициализация OPENGL

4 user_DESTORYOPENGL() Освобождение ресурсов (изпод OPENGL)

5 usr_RESIZE (int х, int y, int width, int height) Корректирует вывод сцены на экран при изменении размера окна х и y определяют координаты левого нижнего угла вывода, width и height - ширину и высоту области вывода

6 usr_RENDERSCENE() Рисует Мотоцикл целиком

В таблице 3.2 приведены спецификации разработанных классов.

Таблица 3.2 - Спецификации классов

Название Назначение

CMAINFRAME Класс главного окна приложения. Используется для управления главным окном

CKARKASAPP Главный класс приложения. Управляет работой всего приложения. Методы этого класса выполняют инициализацию приложения, обработку цикла сообщений и вызываются при завершении приложения.

CKARKASDOC Класс документа приложения.

CKARKASVIEW Класс окна просмотра документа. Служит для отображения в клиентской области класса документа приложения в нашем случае нашей 3D модели.

CABOUTDLG Класс справочной информации о программе

DLGPERS Класс диалогового окна. Служит для настройки и смены перспективы

DLGOPTIONS Класс диалогового окна. Служит для включения различных настроек сцены.

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

Для успешной эксплуатации программного продукта необходим персональный компьютер со следующими характеристиками: процессор Intel Pentium с тактовой частотой 800 МГЦ и выше, оперативная память - не менее 64 Мбайт, свободное дисковое пространство - не менее 200 Мбайт, устройство для чтения компакт-дисков, монитор типа Super VGA (число цветов - 256). Программное обеспечение: операционная система WINDOWS 2000/ХР и выше.

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

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

Разработанное приложение имеет интуитивно понятный интерфейс, который схож с другими Windows - приложениями. После запуска программы пользователь, может вращать сцену и поворачивать ее с помощью цифровой клавиатуры (8 - вверх, 2 - вниз, 4 - влево, 6 - вправо, 7 и 9 - вращение по оси, 1 и 3 - вращение по другой оси). Также имеется возможность приближать и удалять модель, это можно сделать, задействовав колесо мыши.

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

Заключение и выводы

В ходе разработки данного приложения были получены практические навыки по разработке программ для операционных систем семейства Windows с применением технологий трехмерной графики с использованием библиотеки OPENGL.

Таким образом, можно выделить следующие решенные в рамках данной курсовой работы задачи: - изучение принципов работы OPENGL в оконной среде Windows;

- получение практических навыков использования средств OPENGL;

- получение навыков программирования динамических трехмерных анимационных сцен;

- получение навыков программирования интерактивных трехмерных приложений.

Также была проведена работа с такими возможностями библиотеки как: - использование эффекта тумана;

- использование графических примитивов;

- применение освещения;

- загрузка текстур;

- применение проекции.

Список литературы
1. Порев В.Н. Компьютерная графика. СПБ., BHV, 2002.

2. Херн Бейкер, Компьютерная графика и стандарт OPENGL, 3-е издание.: Пер. с англ. - М.: Издательство дом «Вильямс», 2005. - 1168 с.

3. Шикин А.В., Боресков А.В. Компьютерная графика. Полигональные модели. Москва, ДИАЛОГ-МИФИ, 2001.

4. Тихомиров Ю. Программирование трехмерной графики. СПБ, BHV, 1998.

5. OPENGL performance optimization, Siggraph"97 course.

6. Visual Introduction in OPENGL, SIGGRAPH"98.

7. The OPENGL graphics system: а specification (version 1.1).

8. Программирование GLUT: окна и анимация. Miguel Angel Sepulveda, LINUXFOCUS.

9. The OPENGL Utility Toolkit (GLUT) Programming Interface, API version 3, specification.

10. Хилл, Ф. OPENGL. Программирование компьютерной графики. Для профессионалов/ Ф. Хилл, - СПБ.: «Питер», 2004. - 1088 с.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?