Автор работы: Пользователь скрыл имя, 18 Ноября 2013 в 22:46, курсовая работа
Целью данной курсовой работы является детальное изучение и исследование различных способов создания, представления и отображения текстур и их взаимодействия с объектами (особое внимание уделяется наложению текстур на поверхности второго порядка). А также разработка, сравнительный анализ и программная реализация загрузки текстур форматов BMP и TGA. Объектом исследования выступают проективные двухмерные (поверхностные) текстуры, но также рассмотрены одномерные и трехмерные текстуры, которые носят название линейных и объемных текстур.
В течение многих лет
графические программы имели
дело исключительно с геометрическими объектами,
такими как прямые, многоугольники и многогранники.
………………………………………………………………………………
Целью данной курсовой работы является детальное изучение и исследование различных способов создания, представления и отображения текстур и их взаимодействия с объектами (особое внимание уделяется наложению текстур на поверхности второго порядка). А также разработка, сравнительный анализ и программная реализация загрузки текстур форматов BMP и TGA.
Объектом исследования выступают проективные двухмерные (поверхностные) текстуры, но также рассмотрены одномерные и трехмерные текстуры, которые носят название линейных и объемных текстур.
Предмет исследования составляют способы отображения проективных текстур на различного рода объекты. В работе рассмотрены: теория наложения проективных текстур, особые варианты создания текстур в памяти в форматах TGA и BMP, текстурирование поверхности и применение вычислителей для текстур. А также некоторые дополнительные возможности OpenGL, такие как построение поверхности второго порядка и использование буфера кадра на примере теста трафарета.
Практическое значение полученных результатов работы состоит в том, что они могут быть использованы при создании и разработке игр, для которых ощутимым является количество используемой оперативной памяти. Также результаты работы могут быть использованы при построении изображений, использующих буфер кадра, кривые и поверхности Безье, с последующим наложением на них текстур. А также везде, где необходимо восстановление поверхности через ее 2х-мерное изображение (в данной работе была построена поверхность с использование черно-белой картинки в формате raw).
Представленный в работе теоретический и практический материал разбит на тематические разделы. Первый раздел поясняет, как специфицируются одномерные, двухмерные и трехмерные текстуры, повествует о методах, используемых для окрашивания текстурами поверхностей, собранных из набора прямоугольников, о различных способах загрузки текстур, а также указывает на дополнительные возможности текстурирования в OpenGL и трудности, связанные с наложением текстур. Второй раздел посвящен построению кривых и криволинейных поверхностей с последующим наложением на них текстур. Последний третий раздел демонстрирует совместное использование рассмотренных в работе средств, а также некоторые дополнительные возможности программы OpenGL, такие как тектсурирование поверхности и буфер кадра на примере теста трафарета. В данном разделе приводятся конкретные функции с описанием программной реализации изложенных методов для создания реалистичной 3D-сцены, которая представляет собой замок с прилегающим к нему парком.
Некоторые материалы данной курсовой работы докладывались на третьей международной научно-технической конференции молодых ученых и студентов, проводимой 11, 12 декабря 2007 г. в Донецке в ДонНТУ и опубликованной в сборнике трудов «Информатика и компьютерные технологии» [12].
Образцы текстур могут иметь самый разный вид — от полос и клеток до сложных изображений, воспроизводящих срез натуральных материалов, таких как мрамор, гранит, дерево. Очень часто мы распознаем материал реального объекта именно по его текстуре. Поэтому, если перед разработчиком графического приложения стоит задача создать иллюзию натурального объекта, ему никак не обойтись без наложения на объект соответствующей текстуры [11].
………………………………………………………………………………
Рис. 1.1. Двухмерные координаты текстурного пространства
На рис.1.1 отображено двухмерное пространство текстур. Независимые переменные и называются координатами текстуры (texture coordinates).
………………………………………………………………………………
Рис. 1.2. Карта наложения при
………………………………………………………………………………
Графическая система поддерживает несколько вариантов реализации проективного наложения текстур. В первой версии OpenGL можно было накладывать одно- и двухмерные текстуры на одно-, двух-, трех- и четырехмерные графические объекты. В последней версии реализовано наложение трехмерных текстур, но эта функция поддерживается только аппаратными средствами профессиональных графических станций. Поскольку управление процессом требует настройки множества параметров, мы рассмотрим здесь только методику работы в OpenGL с двухмерными текстурами.
Для использования текстуры необходимо сначала загрузить в память нужное изображение и передать его OpenGL.
………………………………………………………………………………
Тип |
Имя |
Описание |
AUX_RGBImageRec* |
Image |
Область памяти, в которой будет храниться загружаемое из файла изображение |
Unsigned |
tex[] |
Массив, в котором будут храниться все используемые текстуры, где n – количество текстур. Каждое изображение текстуры берется из отдельного файла. |
Формат TGA широко используется для получения высококачественных профессиональных цифровых фотографий.
В OpenGL есть функции для выполнения множества других операций с текстурами. Если получен текстурный узор (с фотографии или из другого
Если не вдаваться в подробности, то процесс наложения текстуры
Библиотека инструментов OpenGL Utility Library служит дополнением к основной библиотеке OpenGL и поддерживает операции более высокого уровня. В то время как основные средства OpenGL оперирует простыми примитивами, такими как точки, линии и закрашенные многоугольники, библиотека GLU способна создавать сферические поверхности, цилиндры и конусы.
Порядок использования квадратичных объектов следующий:
В OpenGL есть процедуры для автоматической генерации текстурных координат в определенных приложениях. Эта возможность особенно
Гладкие кривые и поверхности рисуются аппроксимированными большим числом маленьких отрезков или многоугольников. Тем не менее, многие полезные кривые и поверхности могут быть описаны математически небольшим числом параметров, таких как контрольные точки.
………………………………………………………………………………
Кривая Безье описывается четырьмя контрольными точками. Этот массив подается на вход функции glMap1f().
Данный проект ………………………………………………………………………………
Рис. 3.1. Замок с прилегающим парком
В программе ландшафт реализован в виде функции Terrain.
void COpenGLView::DrawTerrain()
{
glPushMatrix();
glTranslated(0, -55, 0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
// Построение текстурированой повехности
glBindTexture(GL_TEXTURE_2D, tex[3]);
В программе для управления сценой изображения и различных эффектов были реализованы Menu и Toolbar, а также управление с помощью клавиатуры с использованием Accelerator.
…………………………………………………………..
В данной работе изложены основные теоретические сведения о представлении ………………………………
Подробно изучен процесс ………………………………….
Проведены исследования по ……………………………….
Для работы с изображениями этого формата был спроектирован и реализован отдельный класс, программный код которого приведен в Приложении.