Основы программирования с использованием библиотеки OpenGL. Приложение для построения динамического изображения модели объекта "Батискаф": разработка процедуры визуализации трехмерной схемы, интерфейса пользователя и подсистемы управления событиями.
Аннотация к работе
Раньше, когда трехмерная графика существовала только на суперкомпьютерах, не существовало единого стандарта в области графики. Все программы писались с "нуля" или с использованием накопленного опыта, но в каждой программе реализовывались свои методы для отображения графической информации. С приходом мощных процессоров и графических ускорителей трехмерная графика стала реальностью для персональных компьютеров. Но в тоже время производители программного обеспечения столкнулись с серьезной проблемой - это отсутствие каких-либо стандартов, которые позволяли писать программы, независимые от оборудования и операционной системы. Еще в 1982 г. в Стенфордском университете была разработана концепция графической машины, на основе которой фирма Silicon Graphics в своей рабочей станции Silicon IRIS реализовала конвейер рендеринга.Возможности OPENGL описаны через функции его библиотеки. Функции описания примитивов определяют объекты нижнего уровня иерархии (примитивы), которые способна отображать графическая подсистема. Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене. С помощью задания атрибутов программист определяет, как будут выглядеть на экране отображаемые объекты.Для задания различных преобразований объектов сцены в OPENGL используются операции над матрицами, при этом различают три типа матриц: модельно-видовая, матрица проекций и матрица текстуры. Матрица проекций определяет, как будут проецироваться трехмерные объекты на плоскость экрана (в оконные координаты), а матрица текстуры определяет наложение текстуры на объект. Для того чтобы выбрать, какую матрицу надо изменить, используется команда: void GLMATRIXMODE(GLENUM mode), вызов которой, со значением параметра "mode" равным GL_MODELVIEW, GL_PROJECTION, или GL_TEXTURE включает режим работы с модельно-видовой матрицей, матрицей проекций, или матрицей текстуры соответственно.Первый тип проекции может быть задан командами void GLORTHO(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top, GLDOUBLE near, GLDOUBLE far) и void GLUORTHO2D(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top). Первая команда создает матрицу проекции в усеченный объем видимости (параллелепипед видимости) в левосторонней системе координат. Параметры команды задают точки (left, bottom, znear) и (right, top, zfar), которые отвечают левому нижнему и правому верхнему углам окна вывода. Перспективная проекция определяется командой void GLUPERSPECTIVE(GLDOUBLE angley, GLDOUBLE aspect, GLDOUBLE znear, GLDOUBLE zfar), которая задает усеченный конус видимости в левосторонней системе координат.В 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" должен быть булевым и задает положение наблюдателя.Для задания параметров текущего материала используются команды 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, которые определяют рассеянный цвет материала (цвет материала в тени). GL_SPECULAR параметр "params" должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют зеркальный цвет материала. GL_SHININESS параметр params должен содержать одно целое или вещественное значение в диапазоне от 0 до 128, которое определяет степень зеркального отражения материала.Легкое затуманивание сцены создает реалистичный эффект, а частенько может и скрыть некоторые артефакты, которые появляются, когда в сцене присутствуют отдаленные объекты. Туман в OPENGL реализуется путем изменения цвета объектов в сцене в зависимости от их глубины, т.е. расстояния до точки наблюдения. Метод вычисления интенсивности тумана в вершине можно определить с помощью команд void GLFOG[if](enum pname, T param); void GLFOG[if]v(enum pname,
План
Содержание
АННОТАЦИЯ
ВВЕДЕНИЕ
1. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ OPENGL
1.1 Основные возможности
1.2Работа с матрицами
1.3 Проекции
1.4 Освещение
1.5 Спецификация материалов
1.6 Создание эффекта тумана
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ПОСТОРОЕНИЯ ДИНАМИЧЕСКОГО ИЗОБРАЖЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ОБЪЕКТА "БАТИСКАФ"
2.1 Разработка процедуры визуализации трехмерной сцены
2.2 Разработка интерфейса пользователя
2.3 Разработка подсистемы управления событиями
3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
3.1 Общие сведения о программе
3.2 Функциональное назначение
3.3 Логическая структура и функциональная декомпозиция проекта
3.4 Требования к техническому и программному обеспечению