1 / 77

Компьютерная графика. Лекция 4

Компьютерная графика. Лекция 4. Алгоритмы формирования изображений. Основы OpenGL. Основные задачи отображения. В любой системе отображения геометрических объектов по мере обработки информации решаются четыре основные задачи: моделирование; геометрическая обработка;

natala
Download Presentation

Компьютерная графика. Лекция 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Компьютерная графика. Лекция 4 Алгоритмы формирования изображений. Основы OpenGL

  2. Основные задачи отображения В любой системе отображения геометрических объектов по мере обработки информации решаются четыре основные задачи: моделирование; геометрическая обработка; преобразование в растр; отображение (визуализация). Компьютерная графика. Лекция 4

  3. Моделирование Компьютерная графика. Лекция 4 Результатом решения задачи моделирования является множество вершин, однозначно определяющих набор геометрических объектов тех типов, которые поддерживаются программными и аппаратными средствами конкретной графической системы.

  4. Геометрическая обработка Компьютерная графика. Лекция 4 Цель геометрической обработки – определить, какие геометрические объекты подлежат отображению, и сформировать степень почернения или оттенок цвета этих объектов.

  5. Системы координат Компьютерная графика. Лекция 4 Реализация геометрических преобразований базируется на математическом аппарате однородных координат. Используются пять систем координат: • система координат объектов (мировая); • система координат наблюдателя (камеры); • система координат отсечения; • нормализованная система координат устройства отображения; • система координат окна приложения.

  6. Компьютерная графика. Лекция 4 Преобразования объектов В процессе перехода от одной системы координат к другой над объектом выполняются следующие преобразования: • проективное преобразование; • нормализация; • ортогональное проецирование; • отсечение. Для выполнения преобразований используются следующие алгоритмы: • Коэна-Сазерленда; • Лиана-Барского; • z-буфера; • построчного сканирования; • Брезенхэма.

  7. Проективное преобразование Компьютерная графика. Лекция 4 Проективное преобразование - преобразование трехмерной сцены в двумерное изображение на картинной плоскости. После выполнения проективного преобразования графическая система имеет дело только с двумерными объектами. Эти объекты описаны в системе координат экрана и представлены только характерными точками – вершинами • например, после проецирования трехмерный прямолинейный отрезок становится двухмерным, представленным парой двухмерных вершин.

  8. Растровое преобразование Компьютерная графика. Лекция 4 Для вывода изображения отрезка на экран необходимо сформировать на основе координат вершин последовательность точек растра – пикселей. Процесс формирования промежуточных точек графического образа объекта и составляет суть растрового преобразования.

  9. Визуализация Компьютерная графика. Лекция 4 Визуализация в общем смысле — метод представления информации в виде оптического изображения (например, в виде рисунков и фотографий, графиков, диаграмм, структурных схем, таблиц, карт и т. д.). Термин рендеринг является синонимом слова визуализация. Часто в компьютерной графике (художественной и технической) под рендерингом понимают создание плоского изображения (картинки) по разработанной 3D-сцене.

  10. Примеры визуализации Компьютерная графика. Лекция 4 Рисунок, видимо, был первой в мире сознательной попыткой визуализации образов, для их демонстрации другому человеку. Графики предназначены для иллюстрирования математических понятий, функциональных зависимостей или связей между объектами (теория графов). Диаграммы позволяют иллюстрировать количественные соотношения в определённой области.

  11. Стадии визуализации Компьютерная графика. Лекция 4 Процесс визуализации делится на две стадии: • на первой стадии используется матрица вида, которая задает преобразование между мировым фреймом и фреймом камеры; • по типу проекции и части мирового пространства, которая преобразуется в изображение, формируется матрица проецирования, которая объединяется с матрицей вида.

  12. Виды проекций Компьютерная графика. Лекция 4 Существует множество проекций для формирования матрицы проецирования. Рассмотрим следующие: • ортографические проекции; • аксонометрические проекции; • косоугольные проекции.

  13. Ортографические проекции Компьютерная графика. Лекция 4 При построении всех ортогональных видов проецирующие лучи перпендикулярны картинной плоскости.

  14. Аксонометрические проекции Компьютерная графика. Лекция 4 В аксонометрических проекциях проецирующие лучи ортогональны картинной плоскости, но сама картинная плоскость может иметь любую ориентацию относительно объекта. • Если картинная плоскость ориентирована симметрично по отношению к трем главным граням, пересекающимся в одном углу прямоугольного объекта, то образуется изометрическая проекция. • Если картинная плоскость ориентирована симметрично по отношению к двум главным граням, то образуется диметрическая проекция. • Общий случай – триметрическая проекция.

  15. Косоугольные проекции Компьютерная графика. Лекция 4 Косоугольная проекция является параллельной проекцией общего вида. При построении косоугольной проекции не накладываются никакие ограничения на угол между проецирующими лучами и картинной плоскостью.

  16. Операции с изображением на уровне растрового представления Компьютерная графика. Лекция 4 При построении образа поверхности его можно разбить на мелкие фрагменты, каждый из которых имеет размер, не превышающий размер пикселя экрана. То, что размер фрагмента меньше одного пикселя, позволяет объединять образы нескольких поверхностей, каждый из которых вносит свой вклад в засветку пикселя (его цвет). При формировании окончательного изображения нужно назначить тон или цвет каждому фрагменту.

  17. Алгоритмы наложения Компьютерная графика. Лекция 4 Алгоритм наложения можно рассматривать: • как алгоритм модификации параметров модели закрашивания, который опирается на некоторый двухмерный массив данных – карту (тар); • как алгоритм модификации параметров поверхности, обрабатываемой алгоритмом закрашивания, например свойств материала или направления нормали. В рамках этого подхода можно выделить: • наложение проективной текстуры; • наложение микрорельефа; • наложение параметров среды.

  18. Компьютерная графика. Лекция 4 OpenGL • Широко распространенный графический API для программирования 2D и 3D графики • Разработан в 1992 году фирмой Silicon Graphics • Выступает в качестве стандартного и стабильного API на многих программно-аппаратных платформах • Спецификация, описывающая набор функций и их точное поведение • Производители оборудования создают реализации библиотеки согласно данной спецификации

  19. Компьютерная графика. Лекция 4 Достоинства • Промышленный стандарт • Стабильность • Надежность и переносимость • Современность • Масштабируемость • Легкость в изучении и использовании • Хорошо документирован • Независим от языка программирования

  20. Компьютерная графика. Лекция 4 Место OpenGL в приложении Программа-приложение Службы операционной системы GDI Службы ввода-вывода OpenGL Устройство отображения Программа растеризации

  21. Компьютерная графика. Лекция 4 OpenGL с аппаратным ускорением Программа-приложение Службы операционной системы GDI Службы ввода-вывода OpenGL Устройство отображения Аппаратный драйвер

  22. Компьютерная графика. Лекция 4 Базовые возможности • Рисование геометрических примитивов (точки, линии, многоугольники) • Рисование сложных объектов реализуется силами программиста либо сторонними библиотеками • Работа с растровыми примитивами • Цветовые режимы RGBA / Index • Видовые и модельные преобразования • Прозрачность • Удаление невидимых линий и поверхностей • B-сплайны • Наложение текстуры • Интерполяция цветов, Anti-aliasing, туман • Использование списков изображений (display lists)

  23. Компьютерная графика. Лекция 4 Основы • Ориентированность главным образом на построение изображения в буфере кадра (Frame Buffer) и чтение из него • Основное назначение OpenGL - интерактивная визуализация трехмерных сцен

  24. Компьютерная графика. Лекция 4 Библиотека OpenGL • Графическая библиотека OpenGL позволяет рисовать графические примитивы в различных режимах • Примитивами являются точки, отрезки прямых, многоугольники или растровые прямоугольники • Переключение режимов рисования, отображение примитивов и другие операции GL описываются при помощи вызовов процедур и функций

  25. Компьютерная графика. Лекция 4 Примитивы OpenGL • Примитивы задаются при помощи групп из одной или более вершин • Каждая вершина определяет точку, конец отрезка прямой или вершину многоугольника • Атрибуты вершины (позиция, нормаль, цвет, текстурные координаты и т.п.) – набор свойств, ассоциированных с вершиной • В версии OpenGL 3.0 убраны все встроенные атрибуты вершин и функции по их установке • Каждая вершина обрабатывается независимо от других и одним и тем же образом. При отсечении примитивов могут создаваться дополнительные вершины • Значения атрибутов при этом интерполируются с учетом перспективы

  26. Компьютерная графика. Лекция 4 Пример 1 3 2

  27. Компьютерная графика. Лекция 4 Команды OpenGL • Взаимодействие приложения с OpenGL происходит посредством отдачи команд • Команда – вызов определенной функции библиотеки • Команды всегда выполняются в порядке их получения • Выборка данных, необходимых для выполнения команды происходит в момент вызова команды • Актуально при передаче массивов в качестве аргументов команд

  28. Компьютерная графика. Лекция 4 Команды OpenGL • Возможна некоторая задержка между вызовом команды и отображением результата • команда glFinish() вызывает немедленное выполнение команд и дожидается завершения их выполнения • команда glFlush() вызывает немедленное выполнение команд, ноне дожидается завершения их выполнения

  29. Компьютерная графика. Лекция 4 Парадигма glBegin()/glEnd() • Большинство геометрических примитивов OpenGL отображаются при помощи перечисления их вершин между «командными скобками» glBegin()и glEnd() • При выполнении команды glVertex* происходит создание новой вершины внутри примитива с текущими атрибутами вершины на момент выполнения команды glVertex* • Данная парадигма объявлена устаревшей из за своей низкой производительности в версии OpenGL 3.0 и более не поддерживается

  30. Компьютерная графика. Лекция 4 Пример:рисование линий float x0 = 0; float y0 = 0; glBegin(GL_LINES); for (int angle = 0; angle < 360; angle += 3) { float angleInRadians = (float)(angle * M_PI / 180.0f); float x1 = cosf(angleInRadians); float y1 = sinf(angleInRadians); glVertex2f(x0, y0); glVertex2f(x1, y1); } glEnd();

  31. Компьютерная графика. Лекция 4 Результат

  32. Компьютерная графика. Лекция 4 Примитивы OpenGL • Примитив – это фигура (точка, линия, многоугольник, прямоугольник пикселей, или битовый массив), которая рисуется, хранится и которой манипулируют как единой дискретной сущностью • из примитивов строятся геометрические объекты любой степени сложности • примитивы определяются группами из одной или нескольких вершин, с каждой из которых ассоциирован определенный набор атрибутов

  33. Компьютерная графика. Лекция 4 Вершины • Вершины используются для задания основных примитивов OpenGL. • могут иметь размерность от 1 до 4 координат • задаются при помощи glVertex* • вмомент обработки команды glVertex OpenGL создает вершину с текущими атрибутами вершины

  34. Компьютерная графика. Лекция 4 Атрибуты вершин • Текущий цвет • вместе с условиями освещения определяет результирующий цвет вершины • Текущая позиция растра (при работе с пикселями и битовыми массивами) • Текущая нормаль • Вектор нормали, ассоциированный с вершиной, задает ориентацию содержащей ее поверхности в трехмерном пространстве • Текущие координаты текстуры • Местоположение в карте текстуры (texture map), ассоциированное с вершиной • В OpenGL 3.0 встроенные атрибуты вершин объявлены устаревшими

  35. Компьютерная графика. Лекция 4 Нормаль • Одним из атрибутов вершины в OpenGL является вектор нормали к поверхности в точке вершины • направлен перпендикулярно поверхности, проходящей через текущую вершину • OpenGL использует нормали для расчета освещенности граней • текущий вектор нормали задается при помощи функций glNormal

  36. Компьютерная графика. Лекция 4 Задание нормалей вершин для объекта с плоскими гранями

  37. Компьютерная графика. Лекция 4 Задание нормалей вершин примитивов, аппроксимирующих криволинейную поверхность

  38. Компьютерная графика. Лекция 4 Рисование примитивов • Примитив, или группа однотипных примитивов определяютсяпутем объявления их вершин внутри командных скобок glBegin/glEnd • void glBegin(GLenum mode) • void glEnd() • mode – тип примитивов glBegin(GL_TRIANGLES); glVertex2f(3.0f, 0.0f); glVertex2f(0.0f, 0.0f); glVertex2f(2.2f, 3.0f); … glEnd();

  39. Компьютерная графика. Лекция 4 Типы геометрических примитивов OpenGL

  40. Компьютерная графика. Лекция 4 Клиент-серверная интерпретация команд • Приложение (Клиент) вызывает команды, обрабатываемые OpenGL (Сервер) • Сервер может работать с несколькими различными контекстами • контекст хранит состояние OpenGL • команды в один момент времени работают с текущим контекстом • клиент может переключаться с одного контекста на другой при помощи специальных команд

  41. Компьютерная графика. Лекция 4 Низкоуровневой доступ • OpenGL предоставляет доступ к низкоуровневым графическим операциям • изменить режим • установить заданный параметр • нарисовать группу примитивов • Описание сложных 3d и 2d-объектов и сцен – забота программиста, а не библиотеки

  42. Компьютерная графика. Лекция 4 Оконная система • OpenGL осуществляет графический вывод в буфер кадра • Отображение буфера кадра на экране монитора не входит в обязанности OpenGL • Изначально OpenGL был спроектирован как аппаратно-независимая графическая библиотека • Управлением буфером кадра и его отображением на экране монитора занимается оконная система • WGL – Microsoft Windows • GLX – Unix/Linux • GLUT – мультиплатформенная библиотека • Скрывает особенности различных оконных систем за единым API (пусть даже с ограниченным функционалом)

  43. Компьютерная графика. Лекция 4 Типы данных OpenGL • Функции OpenGL работают с аргументами определенного типа • Целые, числа с плавающей точкой • Размер одного и того же типа в различных системах может варьироваться • Рекомендуется использовать встроенные типы OpenGL • Функции OpenGL, способные работать с несколькими типами данных имеют в составе своего имени суффиксы

  44. Компьютерная графика. Лекция 4 Суффиксы команд и типы данных аргументов

  45. Компьютерная графика. Лекция 4 Пример void DrawDot(GLint x, GLint y) { glBegin(GL_POINTS); glVertex2i(x, y); glEnd(); }

  46. Компьютерная графика. Лекция 4 Состояние OpenGL (OpenGL state) • OpenGL с точки зрения спецификации – конечный автомат, управляющий набором определенных графических операций • Состояние OpenGL описывается множеством переменных состояния (state variables) • текущий цвет • текущая нормаль • текущий размер точки • текущие координаты текстуры и т.п. • Значения переменных состояния изменяются при помощи команд OpenGL • В версии OpenGL 3.0 произошел практически полный отказ от архитектуры конечного автомата

  47. Компьютерная графика. Лекция 4 Два типа состояния OpenGL • Состояние сервера • с каждым контекстом OpenGL связан полный набор переменных состояния сервера • к данному типу относится большая часть переменных OpenGL • Состояние клиента • определяется набором переменных состояния клиента • каждое соединение клиента с сервером заключает в себе полный набор переменных состояния клиента и сервера

  48. Компьютерная графика. Лекция 4 Синтаксис команд OpenGL • Команды OpenGL – функции или процедуры • Группы команд выполняют одну операцию, однако используют разные типы и количество аргументов, например: • glVertex* • glColor* • glTranslate*

  49. Компьютерная графика. Лекция 4 Форма записи команд OpenGL • Команды OpenGL имеют следующий синтаксис: • rtypeCommandName[1 2 3 4][b s i f d ub us ui][v]( [args ,] T arg1 , . . . , T argN[, args] ); • rtype - тип, возвращаемый функцией OpenGL • CommandName - имя функции, например glVertex • [1 2 3 4] – количество аргументов команды, например, разрядность координатного вектора • [b s i f d ub us ui] - тип аргументов команды • [v] - если присутствует, то в качестве аргумента команды выступает указатель на массив значений

  50. Компьютерная графика. Лекция 4 Примеры: glVertex2f(GLfloat x, GLfloat y) glNormald(GLdouble x, GLdouble y, GLdouble z) glColor4ub(GLubyte r, GLubyte g, GLubyte b, GLubyte a) glClearColor(GLclampfr, GLclampfg, GLclampfb, GLclampfa) glVertex3fv(GLfloat*v) glTranslatef(GLfloat x, GLfloat y, GLfloat z) glFlush() glClear(GLbitfield mask) glScalefv(GLfloat*v)

More Related