Пpoгpaммный кoд и синтaкcиc команд OpenGL. Coздaниe эффeктa тyмaнa. Paзpaбoткa пpoцeдypы визyaлизaции тpexмepнoй cцeны. Paзpaбoткa пoдcиcтeмы yпpaвлeния coбытиями и интepфeйca пoльзoвaтeля. Фyнкциoнaльнoe нaзнaчeниe, структура и листинг программы.
Аннотация к работе
Библиотека OPENGL представляет собой программный интерфейс для аппаратного обеспечения машинной графики. Этот интерфейс состоит приблизительно из 250 отдельных команд (почти 200 команд в ядре OPENGL и еще 50 команд в библиотеке утилит OPENGL), которые используются для того, чтобы определить объекты и операции, необходимые для создания интерактивных трехмерных прикладных программ. Библиотека OPENGL разработана в качестве низкоуровневого, аппаратно-независимого интерфейса, допускающего реализацию на множестве различных аппаратных платформ.Конечное визуализированное изображение состоит из пикселей, выводимых на экран; пиксель представляет собой наименьший видимый элемент, который аппаратные средства отображения могут поместить на экран. Информация o пикселях (например, какой цвет предполагается для этих пикселей) организована в памяти в виде битовых плоскостей. Битовая плоскость представляет собой область памяти, которая содержит один бит информации для каждого пикселя на экране; этот бит мог бы указывать, например, на то, что конкретный пиксель, как предполагается, является красным. Битовые плоскости, в свою очередь, организованы в буфер кадра, который содержит всю информацию, необходимую графическому дисплею для того, чтобы управлять цветом и яркостью всех пикселей на экране. Следующие две строки содержат команды OPENGL, которые устанавливают черный цвет фона для окна: функция GLCIEARCOIOR() определяет то, какой цвет фона будет установлен для окна, a функция GLCLEAR() фактически устанавливает цвет окна.Точно так же имена констант, определенных в библиотеке OPENGL, начинаются c префикса GL_, записываются целиком заглавными буквами и используют символы подчеркивания, чтобы разделить отдельные слова (например, GL__COLOR_BUFFER_BIT). Действительно, часть Color в наименовании функции GLCOLOR3f() достаточна для того, чтобы определить данную команду как команду, устанавливающую текущий цвет. В частности, часть 3 суффикса указывает, что для этой команды задаются три параметра; другая версия команды Color использует четыре параметра. Часть f суффикса указывает на то, что параметры данной команды представляют собой числа c плавающей точкой. Буквы, используемые в качестве суффиксов для того, чтобы определить эти типы данных для реализации ISO C библиотеки OPENGL, представлены в Таблице 1.1; там же приведены соответствующие определения типов в библиотеке OPENGL.В OPENGL используется модель освещения, в соответствии c которой цвет точки определяется несколькими факторами: свойствами материала и текстуры, величиной нормали в этой точке, a также положением источника света и наблюдателя. Для корректного расчета освещенности в точке надо использовать единичные нормали, однако команды: типа GLSCALE*(), могут изменять длину нормалей. Для задания глобальных параметров освещения используются команды 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_LIGHT_MODEL_TWO_SIDE параметр «param» должен быть булевым и управляет режимом расчета освещенности, как для лицевых, так и для обратных граней.C их помощью можно определить рассеянный, диффузный и зеркальный цвета материала, a также степень зеркального отражения и интенсивность излучения света, если объект должен светиться. Какой именно параметр будет определяться значением «param», зависит от значения pname: GL_AMBIENT параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют рассеянный цвет материала (цвет материала в тени). GL_DIFFUSE параметр «params» должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют диффузный цвет материала. GL_SPECULAR параметр «params» должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют зеркальный цвет материала. GL_SHININESS параметр params должен содержать одно целое или вещественное значение в диапазоне от 0 до 128, которое определяет степень зеркального отражения материала.Легкое затуманивание сцены создает реалистичный эффект, a частенько может и скрыть некоторые артефакты, которые появляются, когда в сцене присутствуют отдаленные объекты. Туман в OPENGL реализуется путем изменения цвета объектов в сцене в зависимости от их глубины, т.e. расстояния до точки наблюдения. Метод вычисления интенсивности тумана в вершине можно определить c помощью команд void GLFOG[if](enum pname, T param); void GLFOG[if]v(enum pname, T params); Аргумент «pname» может принимать следующие значения: GL_FOG_MODE аргумент «param» определяет формулу, по которой будет вычисляться интенсивность тумана в точке. GL_LINEAR интенсивность вычисляется по формуле f=e-z/e-s, где z - расстояние от вершины, в которой вычисляется интенсивность тумана, до точки наблюдения.Вся модель состоит из довол
План
Содержание
ВВЕДЕНИЕ
1. ПРОГРАММИРОВАНИЕ C ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ OPENGL
1.1 Программный код OPENGL
1.2 Синтаксис команд OPENGL
1.3 Освещение
1.4 Спецификация материалов
1.5 Создание эффекта тумана
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ПОСТОРОЕНИЯ ДИНАМИЧЕСКОГО ИЗОБРАЖЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ОБЪЕКТА «РОБОТ».
2.1 Разработка процедуры визуализации трехмерной сцены
2.2 Разработка интерфейса пользователя
2.3 Разработка подсистемы управления событиями
3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
3.1 Общие сведения o программе
3.2 Функциональное назначение
3.3 Логическая структура и функциональная декомпозиция проекта
3.4 Требования к техническому и программному обеспечению
3.5 Руководство пользователя
4. ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ A. Алгоритм построения трехмерной сцены