Вывод текстурированных прозрачных фигур
Подключение графической библиотеки OpenGL к интерфейсу Windows. Рисование примитивов, визуализация сцены. Закрашивание объектов. Видовые (матричные) преобразования. Простая схема создания и вывода текстуры. Эффекты наложения объектов друг на друга.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 23.12.2011 |
Размер файла | 60,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Вывод текстурированных прозрачных фигур
графический библиотека текстура преобразование
Введение
Текстурирование используется для придания рисуемым объектам реалистичности. В первой главе данной работы даны общие сведения об OpenGL(открытая графическая библиотека) - это стандартная библиотека для всех 32-разрядных операционных систем, в том числе и для операционной системы Windows состоящий приблизительно из 250 отдельных команд (почти 200 команд в ядре OpenGL и еще 50 команд в библиотеке утилит OpenGL), которые используются для того, чтобы определить объекты и операции, необходимые для создания интерактивных трехмерных прикладных программ.
Во второй главе представлена простая схема создания и наложения текстуры на объект и программа выводящая полупрозрачную планету.
1. Общие сведения об Opengl
1.1 Подключение графической библиотеки OpenGL к интерфейсу Windows
Стандарт реализации OpenGL для Windows требует выполнения некоторых настроек, связанных с особенностями операционной системы. Для того чтобы оконная система могла работать с OpenGL, необходимо провести ее инициализацию и сконфигурировать буфер фрейма.
Система OpenGL, как и любое другое приложение Windows, нуждается в ссылке на окно, на котором будет осуществляться воспроизведение. Ссылка на контекст воспроизведения - величина типа HGLRC (Handle to OpenGL Rendering Context) - связывает OpenGL с оконными системами Windows.
Для получения этого контекста OpenGL нуждается в величине типа HDC (контекст устройства) окна, на который будет осуществляться вывод.
Таким образом, чтобы начать работать с командами OpenGL, приложение должно создать один или несколько контекстов воспроизведения для потока, и сделать текущим один из них. Каждый поток при этом может иметь один и только один текущий контекст воспроизведения, который ассоциирован с определённым контекстом устройства.
Прежде чем получить контекст воспроизведения, сервер OpenGL должен получить детальные характеристики используемого оборудования. Эти характеристики хранятся в специальной структуре, тип которой TPixelFormatDescriptor (описание формата пикселей). Формат пикселей определяет число бит на пиксел, конфигурацию буфера цвета и вспомогательных буферов используемых для вывода изображения.
Для установки формата пикселей необходимо написать соответствующую процедуру, типичный пример которой приведён в приложении 2.
Для работы с контекстом воспроизведения в Win32 API реализованы следующие функции:
wglCreateContext(dc);
Функция создаёт контекст воспроизведения OpenGL, который подходит для рисования на устройстве, определённом дескриптором dc. При успешном завершении функция возвращает дескриптор созданного контекста воспроизведения OpenGL, и NULL - в случае неудачи.
Текущий контекст воспроизведения потока должен быть единственным. Следующая функция позволяет определить контекст воспроизведения для контекста устройства.
wglMakeCurrent (dc, hrc);
При завершении работы, необходимо, чтобы контекст никем не использовался. Для этого достаточно выполнить вызов функции:
wglMakeCurrent (0,0);
Завершая работу с OpenGL необходимо удалить контекст воспроизведения. Для этой цели используется функция:
wglDeleteContext(hrc);
После того как удалён контекст воспроизведения, следует удалить и ассоциированный с ним контекст устройства.
1.2 Синтаксис команд OpenGL
Для того чтобы команды OpenGL были доступны в проекте, необходимо указать библиотеку в списке используемых модулей.
Все команды начинаются с префикса gl, затем идёт имя команды, цифра и суффикс. Цифра в окончании соответствует количеству аргументов, буква показывает требуемый тип аргумента.
Если имя команды заканчивается на v (векторная форма), то аргументом её служит указатель на массив значений.
Например: Если последние три символа в имени команды 3fv, то её аргумент - адрес массива трёх вещественных чисел.
В общем виде команду можно представить:
glCommandName {1,2,3,4} {b, s, i, f, d, ub, us, ui} {v} (arguments)
Таблица 1.1. Возможные типы аргументов
Символ |
Обозначение типа в OpenGL |
Расшифровка |
|
b |
GLbyte |
Байтовый |
|
s |
GLshort |
Короткий целый |
|
i |
GLint |
Целый |
|
d |
GLdouble |
Вещественный двойной точности |
|
f |
GLfloat |
Вещественный |
|
ub |
GLubyte |
Байтовый, беззнаковый |
|
us |
GLushort |
Короткий целый, беззнаковый |
|
ui |
GLuint |
Целый, беззнаковый |
Почти всегда предпочтительно использовать команду в вещественной форме, поскольку хранит данные OpenGL именно в вещественном формате.
1.3 Рисование примитивов
Процедура рисования заключается в командные скобки glBegin(mode) // команды, указывающие вершины фигуры glEnd;
Главное назначение командных скобок - это задание режима, определяющего как соединять точки (вершины). Вершины задаются своими координатами (количество координат зависит от пространства изображения) с помощью команд glVertex {2,3,4} {s, i, f, d} (arg).
Режим (mode), задающий правило соединения точек, определяет примитив. К примитивам относятся точки, линии, связанные линии, замкнутые линии, треугольники, связанные треугольники, четырёхугольники, связанные четырёхугольники и многоугольники.
Примеры режима mode
GL_POINTS: каждый вызов glVertex задает отдельную точку;
GL_LINES: каждая пара вершин задает отрезок;
GL_LINE_STRIP: указанные вершины последовательно соединяются;
GL_TRIANGLES: каждая тройка вершин задает треугольник;
GL_QUADS: каждые 4 вершины задают четырехугольник.
И др..
1.4 Визуализация сцены
Для создания сцены необходимо задать область вывода объектов и задать способ проецирования.
Если область вывода не задана явно, то в OpenGL используется установленная по умолчанию зона в виде куба видимости 2x2x2 с началом координат в центре куба (рис. 2).
Размещено на http://www.allbest.ru/
Рис. 2. Вид системы координат Oxyz
Система координат в OpenGL Oxyz (рис. 2) расположена таким образом, что ось Oz направлена в сторону противоположную направления зрения. Окно видимости (Windows) масштабируется в пределах [-1; 1] по осям Ox, Oy. Изображение по умолчанию воспроизводится на плоскости z=0.
Существует два типа проецирования: параллельная проекция и перспективная. Ортогональная проекция - это частный случай параллельной проекции, при которой проецирующие лучи ортогональны картинной плоскости.
При ортогональном проецировании точка (x, y, z) на объекте проецируется в точку (x, y, 0) на плоскости проекции. В OpenGL ортогональная проекция, характеризуемая параллелепипедом видимости, задаётся функцией glOrtho(), объявленной следующим образом:
glOrtho (left, right, bottom, top, near, far)
Таким образом, видны все объекты, которые попали внутрь параллелепипеда видимости.
При проецировании, преобразование координат включает в себя этапы, изображённые на рис. 3. Сначала мировые координаты (система координат, в которой определяется положение объекта, положение точки наблюдения и экрана) преобразовываются в видовые координаты. При этом точки изображения остаются на своих местах, но система мировых координат переходит в систему видовых координат. Затем выполняется перспективное преобразование, добавляющее эффект перспективы в зависимости от расстояния от объекта до экрана и расстояние от точки наблюдения до экрана. Система трёхмерных видовых координат переходит в систему двухмерных экранных координат. При построении параллельной проекции перспективное преобразование не выполняется, и видовые координаты используются в качестве экранных координат (X, Y).
1.5 Видовые преобразования
Видовые преобразования осуществляются с помощью матричных преобразований. В OpenGL текущая матрица преобразований является произведением двух матриц - матрицы модели и матрицы проецирования, при этом формируется единая матрица преобразования, которая применяется ко всем вершинам всех геометрических объектов.
Матрица модели - glMatrixMode (GL_MODELVIEW) связана с координатами объектов. Это матрица в базисе видовых координат, она используется для построения картинки в том виде как её видит наблюдатель.
Матрица проецирования - glMatrixMode (GL_PROJECTION). Матрица в системе координат устройства. Вычисляет нормализованные координаты, которые преобразуются в экранные после трансформаций, связанных с областью вывода.
Команда glLoadIdentity заменяет текущую матрицу единичной матрицей (матрицей с единицами по главной диагонали и равными нулю всеми остальными элементами).
1.6 Матрица преобразования
Преобразование масштабирования увеличивает или уменьшает размеры объекта.
Команда масштабирования glScale (arg1, arg2, arg3) с тремя аргументами - коэффициентами масштабирования по каждой из осей.
Если масштабные множители больше единицы объект растягивается в заданном направлении, если меньше объект сжимается. Масштабные множители могут иметь отрицательные значения, при этом изображение переворачивается по соответствующей оси. При двумерных построениях значение коэффициента по оси Z игнорируется.
После команд рисования следует восстановить нормальный масштаб, чтобы каждое следующее обращение к обработчику перерисовки экрана не приводило бы к последовательному уменьшению / увеличению изображения.
Для поворота изображения используется команда glRotate (arg1, arg2, arg3, arg4) с четырьмя аргументами:
arg1 - угол поворота (в градусах),
arg2, arg3, arg4 - вектор поворота.
Преобразование сдвига смещает точки в новые позиции в соответствии с заданным вектором смещения. Перенос системы координат осуществляется командой glTranslate (arg1, arg2, arg3) arg1, arg2, arg3 - величины переноса по каждой из осей.
Для поворота вокруг произвольной фиксированной точки сначала нужно выполнить преобразование сдвига, совмещающую заданную фиксированную точку с началом координат, потом выполнить преобразование поворота вокруг начала координат, а затем обратное преобразование сдвига. Порядок манипуляции с системой координат: вначале перенос, затем поворот, по окончании рисования - в обратном порядке: поворот, затем перенос.
1.7 Закрашивание объектов
В трёхмерном пространстве поверхность объектов характеризуется материалом. Материал может отражать, поглощать и пропускать свет различной длины волн. В зависимости от характеристик материала и от свойств источника света мы видим объекты различными. Свойства материала задаются с помощью команды glMaterialfv(). Характеристики свойств материала, определяют соответствующие им символьные константы, которые представлены в таблице 1.3.
Таблица 1.3. Характеристики свойств материала
GL_AMBIENT |
рассеянный свет |
|
GL_DIFFUSE |
Параметр, указывающий насколько сильно этот цвет отражается поверхностью при её освещении |
|
GL_EMISSION |
излучаемый свет |
|
GL_SHININESS |
степень отраженного света |
Зеркальный цвет задаёт цветовую гамму бликов материала, степень зеркального отражения определяет, насколько близка поверхность к идеальному зеркалу (определяется числом из интервала [0,128]).
Свойства материала задаются для внешней и внутренней стороны фигуры.
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@MaterialFront); glMaterialfv (GL_BACK, GL_AMBIENT_AND_DIFFUSE,@MaterialBack);
Существует несколько режимов рисования многоугольников.
Чтобы изменить метод отображения многоугольника используется команда:
glPolygonMode (GLenum face, Glenum mode). Параметр mode определяет, как будут отображаться многоугольники, а параметр face устанавливает тип многоугольников, к которым будет применяться эта команда и могут принимать следующие значения:
Таблица 1.4. Значения параметров face и mode
GLenum face |
GL_FRONT |
для лицевых граней |
|
GL_BACK |
для обратных граней |
||
GL_FRONT_AND_BACK |
для всех граней |
||
Glenum mode |
GL_POINT |
Отображаются вершины многоугольников |
|
GL_LINE |
представляется набором отрезков |
||
GL_FILL |
закрашиваются текущим цветом с учетом освещения и этот режим установлен по умолчанию. |
Пример:
GlPolygonMode (GL_FRONT, GL_POINT);
GlPolygonMode (GL_ BACK, GL_LINE);
GlPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
1.8 Источники света
Без источника света изображения не видно. По умолчанию освещение отключено. Что бы инициализировать источник, и включить обработчик расчёта воздействия источника на объекты достаточно выполнить команды:
glEnable (gl_lighting);glEnable (gl_light0);
Источник света по умолчанию располагается в пространстве с координатами (0,0,), можно создавать источник света в любой точке пространства изображений.
Параметры источника света задаются с помощью команды,
glLightfv (source, parameter, pointer_to_array).
Первый параметр команды - идентификатор источника
Второй аргумент - символическая константа, задающая атрибут
Третий - ссылка на структуру, содержащую задаваемые значения для данного атрибута.
Таблица 1.5. Константы, задающие свойства окружающей среды и позицию источника света
GL_Position |
задаёт позицию источника света, источник света не перемещается за системой координат (x, y, z, cos ) |
|
GL_AMBIENT |
рассеянный свет |
|
GL_DIFFUSE |
Параметр, указывающий насколько сильно этот цвет отражается поверхностью при её освещении |
|
GL_SPECULAR |
отраженный свет |
|
GL_EMISSION |
излучаемый свет |
|
GL_SHININESS |
степень отраженного света |
|
GL_AMBIENT_AND_DIFFUSE |
задаёт поглощение цвета поверхностью в рассеивающей составляющей |
|
GL_SPOT_direction |
направление света (x, y, z) |
|
GL_SPOT_Cutoff |
задаёт максимальный угол излучения источника света [0,90] и 180. |
1.9 Использование дополнительных библиотек
Несмотря на то, что библиотека OpenGL предоставляет практически все возможности для моделирования и воспроизведения трёхмерных сцен, некоторые из функций, которые требуются при работе с графикой, напрямую отсутствуют в стандартной библиотеке OpenGL. Например, чтобы задать положение и направление камеры, с которой будет наблюдаться сцена, нужно самому рассчитывать модельную матрицу, а это далеко не все умеют. Поэтому для OpenGL существуют так называемые вспомогательные библиотеки. Библиотека GLU уже стала стандартом и поставляется вместе с главной библиотекой OpenGL. В состав этой библиотеки вошли более сложные функции, например для того чтобы определить цилиндр или диск потребуется всего одна команда. Также в библиотеку вошли функции для работы со сплайнами, реализованы дополнительные операции над матрицами и дополнительные виды проекций.
Это независимая от платформы библиотека. Она реализует не только дополнительные функции OpenGL, но и предоставляет функции для работы с окнами, клавиатурой и мышкой. Для того чтобы работать с OpenGL в конкретной операционной системе, надо провести некоторую предварительную настройку и эта предварительная настройка зависит от конкретной операционной системы. С библиотекой GLUT всё намного упрощается, буквально несколькими командами можно определить окно, в котором будет работать OpenGL, определить прерывание от клавиатуры или мышки и всё это не будет зависеть от операционной системы. Библиотека предоставляет функции, с помощью которых можно определять сложные правильные многогранники: куб, сфера, тор, конус, тетраэдр и додекаэдр, и даже можно с помощью одной команды определить сложный объект, типа чайник. Например, для воспроизведения куба достаточно выполнить команду: glutSolidCube(N), где N_задаёт величину стороны грани куба.
2. Текстурированные прозрачные фигуры
2.1 Простая схема создания и вывода текстуры
Текстура подобна обоям, наклеиваемым на поверхность. Одномерная текстура может использоваться только для нанесения узора в виде полосок. Двумерная позволяет наносить прямоугольные образы. Для использования текстуры требуется создать и заполнить массив образа - для хранения текстурной картинки, затем выполнить ряд действий по его нанесению.
Из ситуаций заполнения трехмерного массива цветов пикселей (заранее известны размеры, заранее неизвестны размеры) выберем простой первый: если заранее известны размеры растра - файла, использовать объект класса TBitmap для загрузки текстуры, а размеры массива образа задавать равными размерам растра:
var t: array [ширина 0..127, высота 0..127, составляющие цветов 0..2] of gluByte;
Var B: TBitMap; I, j: integer;
Begin
B:=TBitMap.Create; b.LoadFromFile (`Gold.bmp'); for i:=0 to 63 do for j:=0 to 63 do begin
t[i,j,0]:=GetRValue (b.canvas.pixels[i,j];
t[i,j,1]:=GetGValue (b.canvas.pixels[i,j];
t[i,j,2]:=GetBValue (b.canvas.pixels[i,j];
end; end;
Здесь используются API-функции, вырезающие значение веса для цветовых составляющих пиксела, поскольку в формате OpenGL вначале идет красный цвет, а в растре первым идет синий цвет.
Команда GlTextImageID (9 параметров);
glTexImage2D ({1}GL_Texture_2D, {2}0, {3}GL_RGBA, {4}128, {5}128, {6}0, GL_RGB, GL_unsigned_Byte, @image);
{1}- указывает на размерность, {2} - число уровней детализации текстуры - рекомендуется всегда брать равным 0, {3} - задается GL_RGBA=4 или GL_RGB=3 для сохранения цвета, остальные приведут к потере цвета, {4-5}- ширина/высота текстуры, необязательно должны совпадать с размерами массива, {6}- 0, ширина границы, не рекомендуется трогать, {7} - формат цвета, {8} - тип данных, {9} - адрес массива.
Где сохраняется - в буфере текстур, где доступна последняя текстура.
Учет ситуаций, когда размеры текстуры и поверхности не совпадают:
glTexParameteri (GL_Texture_2D, GL_Texture_Min_Filter, GL_Nearest); {/GL_Linear}
glTexParameteri (GL_Texture_2D, GL_Texture_Mag_Filter, GL_Nearest);
Фильтры задают вид текстуры, когда площадь пиксела, на которую она накладывается, в одном случае больше, а в другом меньше элемента текстуры. Эти значения я задал равными GL_NEAREST, что соответствует неточному расчету текстуры. Другое возможное значение - GL_LINEAR, расчет будет точным, но за счет скорости.
Разрешение использовать двумерную текстуру:
glEnable (GL_TEXTURE_2D);
Определение характера взаимодействия цвета примитива и цвета текстуры задается командой glTexEnvi(3 параметра).
glTexEnvi (GL_Texture_env, GL_Texture_env_mode, GL_decal );
GL_decal - цвет примитива не влияет на цвет текстуры,
GL_Modulate - цветовое содержание текстуры будет зависеть от яркости и составляющих цвета примитива. Если, например, примитив будет иметь красный цвет, то в текстуре красный цвет уберется, если же примитив окрасить в 50%-й серый, то яркость пикселов текстуры уменьшится на 50%.
GL_Blend - противоположность GL_Modulate.
Вывод кадра с текстурой в glBegin (gl_quads или gl_polygon); склеивая точки текстуры и 4-угольника командами gltexCoord2f (x, y) - glvertex2f (x',y') по правилу
Рис.
GLColor3f (1,1,1);
glBegin (gl_polygon);
gltexCoord2f (0, 1); glvertex2f (1,1);
gltexCoord2f (0,0); glvertex2f(-1,1);
gltexCoord2f (1, 0); glvertex2f(-1,-1);
gltexCoord2f (1, 1); glvertex2f(1,-1);
glEnd;
При создании образа текстуры в памяти следует учитывать следующие требования. Во-первых, размеры текстуры как по горизонтали, так и по вертикали должны представлять собой степени двойки. Это требование накладывается для компактного размещения текстуры в памяти и способствует ее эффективному использованию. Использовать только текстуры с такими размерами конечно неудобно, поэтому после загрузки их надо преобразовать.
2.2 Вращающаяся полупрозрачная планета
С помощью четвертого компонента цвета можно получать различные эффекты наложения объектов друг на друга, наложения цветов и т.п. Также с помощью него можно получить наиболее нужный и распространенный эффект - прозрачность. Для того, чтобы разрешить обрабатывать четвертый компонент цвета вы должны вызвать функцию glEnable с аргументом GL_ALPHA_TEST. Для получения требуемого эффекта прозрачности нужно разрешить наложение цветов - glEnable(GL_BLEND) и установить алгоритм, по которуму будут смешиваться два цвета - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). Нужно учесть, что эти режимы затормаживают вывод изображения, поэтому рекомендуется не устанавливать эти режимы глобально, для воспроизведения всех объектов. Выделяйте из объектов те, которым требуется этот режим, и включайте и отключайте его своевременно.
В процедуре CreateTexture заполняется трехмерный массив image и подготавливается текстура.
Procedure Tform1.CreateTexture;
var
Color ,k,i:GLint; B:TBitmap;
image:array[0..127,0..255,0..2] of GLubyte;
begin
b:=TBitmap.Create;
b.LoadFromFile('earth.bmp');
for k:=0 to 255 do
for i:=0 to 127 do
begin
color:=b.Canvas.Pixels[i,k];
image[i,k,0]:=GetRValue(Color);
image[i,k,1]:=GetGValue(Color);
image[i,k,2]:=GetBValue(Color);
end;
glTexParameteri (GL_Texture_2D, GL_Texture_Mag_Filter, GL_Nearest);
glTexParameteri (GL_Texture_2D, GL_Texture_Min_Filter, GL_Nearest);
glTexImage2D (GL_Texture_2D, 0, GL_RGBA, 256, 128, 0,
GL_RGB, GL_unsigned_Byte, @image);
glTexEnvi (GL_Texture_env, GL_Texture_env_mode, GL_decal);
glEnable (GL_texture_2D);
end;
OnCreate
glEnable(GL_DEPTH_TEST) ;
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
Q:=gluNewQuadric;
CreateTexture;
glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
При создании формы включаем необходимые режимы.
OnPaint
glViewport(0,0,form1.ClientWidth,form1.ClientHeight);//Область вывода
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
// очищение буфера цвета и глубины
gluQuadricTexture(q,true);
glColor4d(0,0,0,0.9); // 4-й параметр определяет степень прозрачности
glEnable(GL_CULL_FACE); // включаем отсечение сторон полигонов
glCullFace(GL_FRONT); // не воспроизводить лицевую поверхность сферы
glCullFace(GL_BACK); // не воспроизводить заднюю поверхность сферы
gluSphere(Q, 0.9, 80, 80); // вывести переднюю поверхность сферы
glDisable(GL_CULL_FACE); // отключить сортировку поверхностей
SwapBuffers(dc);
Для того чтобы не было ненужных узоров и прозрачность сохранялась, вначале воспроизводится внутренняя поверхность сферы, а затем внешняя.
Список использованной литературы
1.Краснов М. OpenGL. Графика в проектах Delphi.-СПб.:БХВ - Санкт-Петербург, 2000.-352 с.:ил.
2.Тихомиров Ю. Программирование трёхмерной графики - СПб.:BHV - Санкт-Петербург, 1998. - 256 с., ил.
3.http://opengl.org.ru
4.http://www.gamedev.ru Основы OpenGL
Размещено на Allbest.ru
Подобные документы
Назначение и стандарты реализации OpenGL для Windows, порядок подключения графической библиотеки. Основные функции и синтаксис команд. Рисование примитивов, видовые и аффинные преобразования. Моделирование двумерных графических объектов и анимации.
лабораторная работа [35,0 K], добавлен 04.07.2009Рисование линий. Выбор объектов. Создание фигур. Редактирование фигур. Вращение, искажение и другие преобразования объектов. Копирование и наложение объектов. Установка позиции и размеров объекта. Сохранение проекта.
реферат [55,3 K], добавлен 21.12.2003Инициализация графического драйвера и режима. Функции доступа к видеопамяти. Подключение графической библиотеки. Инициализация графического режима. Включение драйвера, шрифтов в исполняемый файл. Рисование геометрических фигур. Вывод числовой информации.
лабораторная работа [77,2 K], добавлен 06.07.2009Программный код OpenGL. Синтаксис команд OpenGL. OpenGL как конечный автомат. Конвейер визуализации OpenGL. Библиотеки, относящиеся к OpenGL. Библиотека OpenGL. Подключаемые файлы. GLUT, инструментарий утилит библиотеки OpenGL.
курсовая работа [304,9 K], добавлен 01.06.2004Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.
курсовая работа [1,1 M], добавлен 23.06.2011Построение динамической трехмерной сцены, включающей заданные тело и поверхность определенного вида средствами графической библиотеки. Наложение текстур на тела, поверхности с помощью функции SetupTextures. Графическое представление тела с текстурой.
курсовая работа [582,9 K], добавлен 24.12.2010Основы работы с графиков средствами OpenGL в C#. Ее спецификации, принципы и возможности. Direct3D как самостоятельная часть библиотеки Microsoft DirectX, которая отвечает за графику и вывод графической информации. Независимость от языка программирования.
курсовая работа [2,1 M], добавлен 17.02.2013Изучение моделирования и визуализации трехмерных динамических сцен в пакете 3Ds Max на примере создания анимированной сцены, содержащей мышь, стул, чашку, чайную ложку и море. Создание материалов, камер и анимации, постановка света и визуализация сцены.
курсовая работа [1,2 M], добавлен 26.02.2012Определение понятия трехмерной компьютерной графики. Особенности создания 3D-объектов при помощи булевых операций, редактируемых поверхностей, на основе примитивов. Моделирование трехмерных объектов при помощи программного пакета Autodesk 3ds Max.
дипломная работа [4,2 M], добавлен 13.04.2014Функциональные возможности библиотеки OpenGL. Разработка процедуры визуализации трехмерной сцены, интерфейса пользователя и подсистемы управления событиями с целью создания приложения для построения динамического изображения 3D-модели объекта "Самолет".
курсовая работа [1,7 M], добавлен 28.06.2011