145421_lection3

advertisement
Дисциплина: Методы и средства
распознавания образов и
визуализации
Тема № 3: Визуализация. Основы
3D компьютерной графики.
Графические библиотеки
1
Компьютерные системы и
модели
Компьютерная графика – все, что связано с созданием и отображением
визуальной информации с использование компьютера. Компьютерная
графика базируется на следующих элементах:
•Оборудование (Hardware)
•Программное обеспечение (Software)
•Приложения (Application)
2
Трёхмерная графика
Трёхмерная графика (3D — от англ. three dimensions — «три измерения»)
используется для описания и отображения объектов в трехмерном
пространстве. Наиболее распространенное описание 3D моделей и
произвольных поверхностей это полигональное представление. В качестве
полигона обычно используется треугольник. Для описания вершин
треугольника используются вектора в трехмерном пространстве (x, y, z).
Преобразования в 3D графике базируются на использовании матриц
преобразований: - поворота, сдвига, масштабирования. На экране
монитора 3D графика представлена в виде плоского изображения проекции. В настоящее время интенсивно ведутся разработки получения
стерео-изображений как на экране, так и без их традиционного
использования.
3
Компьютерная графика 19601970 годы
Этот период можно охарактеризовать следующими
элементами:
• Использование векторных дисплеев для отображения
графики.
• Появление первых графических процессоров.
• Разработка основ человеко-машинного взаимодействия.
• Использование светового пера для интерактивного
взаимодействия с компьютером.
• Использование каркасных моделей для описания и
отображения 3D графики.
• Разработка базовых алгоритмов компьютерной графики.
4
Работы Айвена Сазерленда
(Ivan Sutherland)
Большой вклад в развитие компьютерной графики вносят работы Айвена
Сазерленда (Ivan Sutherland) из Массачусетского технологического института.
Им создан программно-аппаратный комплекс позволяющий рисовать на экране
электронно-лучевой трубки графические примитивы – точки, отрезки,
окружности. Реализованы базовые действия с примитивами: перемещение,
копирование и т.д. Фактически реализован первый векторный редактор.
С точки зрения развития компьютерного оборудования в это время появляется
понятие дисплейный процессор – display processor (DPU) для регенерации
изображения на экране монитора.
5
Компьютерная графика 19701980 годы
Этот период можно охарактеризовать как зарождение растровой графики.
Появляются 2D и 3D графические стандарты GKS - International
Organization for Standardization (ISO). Появляются первые рабочие станции
(Workstation) и персональные компьютеры (PCs).
Растровая графика характеризуется как массив (the raster) элементов
(pixels) в буфере кадров (frame buffer). Растровая графика позволяет
перейти от каркасного отображения объемных моделей к закрашенным
полигонам.
6
Компьютерная графика 19801990 годы
В этот период происходит повышение реализма за счет использования
следующих технологий:
• сглаживание - smooth shading;
• использование растровых изображений (карт) для моделирования
окружающей среды - environmental mapping;
• использование растровых изображений для формирования карт глубин
(моделирование неровностей поверхности) - bump mapping.
7
Компьютерная графика 19902000 годы
Разработка платформенно-независимого программного интерфейса
2D-3D графики OpenGL API.
В эти годы появляются первые полнометражные компьютерные
фильмы (Toy Story). Появляются новые аппаратные возможности
графических карт:
• текстурирование (texture mapping);
• наложение смешивание (blanding);
• накопление буфера шаблонов (accumulation, stencil buffer).
8
Компьютерная графика 2000
– годы
Усиление вычислительной мощности
способствует повышению
фотореализма. В области разработки
и производства графических карт и
ускорителей доминируют такие
компании как Nvidia, ATI, 3DLabs.
Появляются специализированные
игровые приставки – Game boxes и
Game play station. В киноиндустрии
все шире применяется компьютерная
графика. Совершенствуются пакеты
Maya, 3ds Max, Lightwave. Появляются
облачные сервисы рендеринга –
RenderMan Pixar, MentalRay.
9
Техническая графика. САПР
Техническая графика – область, в
которой в первую очередь стала активно
применяться компьютерная графика.
Современные пакеты САПР позволяют
создавать конструкторские документы на
основе набора графических примитивов,
а также с использованием изображений
стандартных, типовых и
унифицированных деталей и узлов.
10
AutoCAD
На сегодняшний день AutoCAD компании Autodesk – можно считать одна
из самых мощных и распространенных систем автоматизированного
проектирования, работающих на персональных компьютерах. В этой
системе можно выполнять практически все виды чертёжных работ,
необходимых в разнообразных областях технического проектирования.
11
Визуализация в науке
Компьютерная графика, ставшая самостоятельным научным направлением,
проникает сегодня во все сферы интеллектуальной деятельности человека,
включая кино и телевидение, издательские системы, космос и авиацию,
медицину, экологический мониторинг, научные исследования и образование.
Многие алгоритмы машинной графики названы по фамилиям авторов –
алгоритмы отсечения Сазерленда (Sazerland), прямые Брезенхейма и Брассини,
кривые Безье, поверхности Кунса, Цао Ена и т.д. Этот список постоянно
пополняется новыми алгоритмами, и соответственно именами их авторов.
Научный аспект компьютерной графики связан с моделированием динамических
процессов, диагностикой и распознаванием образов.
12
Визуализация в дизайне
Дизайнеры, как посредники между производителями и покупателями стараются
сделать информацию, которую несет продукт более понятной и ясной, удалить
все неопределенности в его понимании. Это и является наиболее важной
задачей. "Визуализация" является разновидностью эффективной доставки
информации до потребителя. Возможность создавать наглядные зрительные
образы помогает дизайнерам представлять множество своих идей, часть из
которых реализуется на практике. Данная отрасль является перспективным
направлением исследований.
13
Игровые приложения
С технической точки зрения за последние 25 лет графические технологии
прошли полный круг. Если помните, первые трехмерные игры, такие как DOOM и
QUAKE, использовали программный растеризатор. Затем была
усовершенствована аппаратура фиксированного конвейера трехмерной
графики, игры стали больше полагаться на аппаратуру, куда переместился
конвейер, что привело к значительно меньшему контролю над процессом
визуализации.
14
Игровые приложения
Теперь мы можем программно управлять каждым пикселем и это
ошеломляющая концепция. Итак, шейдеры замкнули круг; мы получили
скорость аппаратных решений вместе с гибкостью программных. Я
предполагаю, что следующим этапом развития графических аппаратных
средств станут полностью переконфигурируемые и перепрограммируемые
ядра в видеопроцессоре.
Копия экрана
эпизода
компьютерной игры
SKYRIM
15
Графические интерфейсы
программирования
Программирование этих одинаковых для всех графических приложений
рутинных операций на стандартных языках программирования каждым
отдельным прикладных программистом нецелесообразно, поэтому с
самых первых лет существования компьютерной графики
разрабатывались стандартизованные библиотеки макросов или
подпрограмм, которые могли включаться в прикладную программу и
реализовывать базовые графические функции.
Современное название таких библиотек – графический интерфейс
прикладного программирования (graphics Application Programmers’
Interface – API).
16
Графические интерфейсы
программирования
Для обеспечения переносимости программного обеспечения все API
реализовывались как графические стандарты (1-е поколение до начала 90-х
годов 20-го столетия). Известны следующие стандартные наборы функций
и соответствующих библиотек интерактивного графического
программирования:
• 3D Core Graphics System (1977), GRAFOR -ГРАФОР (1979)
• GKS, GKS 3D Graphical Kernel System (1988)
• PHIGS, PHIGS+ Programmer's Hierarchical Interactive Graphics System (1988)
• PEX and PEXlib (PHIGS+ for X-window) (1989)
• Эти стандарты и библиотеки разрабатывались в основном
академическими учреждениями и впоследствии внедрялись в
промышленность, причем достаточно туго и замедленно.
17
Графические API из
индустрии (2-е поколение)
Взрывной характер развития информационных технологий и электроники в
начале 80-х годов породил массу предприятий, которые разрабатывали и
производили различные графические устройства, которые требовали
стандартизации управления и совместимости с интерактивными графическими
системами.
Silicon Graphics, позже SGI, которая разработала свой собственный графический
интерфейс GL , который затем был сделан публичным стандартом OpenGL (Open
Graphics Library), 1992. Сейчас развитие этого стандарта управляется
общественной организацией OpenGL ARB (Architecture Review Board).
Одним из наиболее распространенных интерфейсов программирования является
Direct3D фирмы Microsoft (1995), как часть мультимедиа интерфейсов DirectX2-3,
Dx5, Dx6, Dx7-Dx11, которые является популярной платформой для
разработчиков компьютерных игр. Общее название у интерфейса WGF (Windows
Graphics Foundation), который развивается непосредственно компанией Microsoft
в сотрудничестве с разработчиками игр и графических процессоров.
18
Шейдеры и языки
программирования шейдеров
Интерфейсы графического программирования с фиксированными функциями
к середине 80-х использовались достаточно широко в промышленности и
научных учреждениях, но фиксированный набор функций с ограниченными
возможностями не позволял их использовать для генерации реалистичных
изображений в задачах компьютерной анимации, синтетической фотографии
и кинематографии. Эти потребности служили отправной точкой разработки
процедурных языков программирования шейдеров, которые позволяли
реализовать практически неограниченную функциональность в обработке
графических данных для генерации реалистичных изображений.
19
Шейдеры и языки
программирования шейдеров
Для OpenGL можно перечислить:
PixelFlow Shading Language (1998) как расширение OpenGL
SGI Interactive Shading language (2000) как расширение OpenGL
Расширения для шейдерной обработки вершин и фрагментов для OpenGL
версий 1.x (ARB, EXT, ATI, NV, Apple)
Stanford Real-Time Shading Language (2001)
OGL Shading language (GLSL) для OpenGL 2.0 (3Dlabs, ARB)
Таким же образом компания Микрософт развивала свой корпоративный
интерфейс графического программирования DirectX7, который был
аналогичен по фиксированным функциям OpenGL 1.1:
Версия DirectX 8 получила ограниченные по возможностям шейдеры вершин
и пикселей (Vertex and Pixel shaders – VS 1.x, PS 1.x)
Версия DirectX 9 получила расширенные шейдеры VS/PS 2.x and VS/PS 3.0
Версии DirectX 10 и DirectX 11получили многофунциональные шейдеры для
всех типов примитивов, включая высокоуровневые криволинейные
20
фрагменты поверхностей (для OS Vista & Windows 7).
Трехмерные системы
координат. Проекции.
Отображение трехмерной графики неразрывно связано с трехмерными
системами координат. Ортогональная (прямоугольная) система координат,
наиболее часто используемая система координат на плоскости или в
пространстве. Такая система координат в пространстве образуется тремя
взаимно перпендикулярными осями координат OX, OY и OZ. Оси координат
пересекаются в точке O, которая называется началом координат, на каждой
оси выбрано положительное направление, указанное стрелками.
Прямоугольную систему координат связывают с именем Декарта (René
Descartes или лат. Renatus Cartesius). Соотвественно используются термины
декартова (картезианская) система координат (Cartesian coordinate system).
21
Декартовы трехмерные
системы координат
Принято оси X и Y располагать в плоскости экрана. Тогда ось Z может быть
направлена на наблюдателя или вглубь экрана. В этом случае говорят о двух
типах систем координат: левосторонней и правосторонней. Их названия
определяются направлением оси Z относительно осей X и Y. Чтобы определить
это направление, можно воспользоваться правилом левой и правой руки. Для
этого необходимо расположить пальцы одной руки вдоль положительного
направления оси X, и согнуть их против часовой стрелки к положительному
направлению оси Y. В этом случае большой палец показывает направление оси
Z.
Y
Y
Z
X
X
Z
Левосторонняя
трехмерная
система
координат
Правосторонняя
трехмерная
система
координат
22
Векторы в трехмерном
пространстве
Векторы обеспечивают удобный механизм задания направления в трехмерном
пространстве. Например, необходимо задать ориентацию грани, направление
камеры, указать направление распространения световых лучей. Кроме этого
векторы очень удобны для моделирования физических величин, которые
характеризуются модулем и направлением. Вектор нормали используется для
расчетов освещенности поверхностей.
x y z
x 
 y
 
 z 
b
Конец
Начало
a
c
23
Матрицы. Преобразования
координат
Большинство приложений 3D-графики базируется на использовании
матриц.
В математике, матрицы прямоугольник группы чисел называется elements.
Размер матрицы выражается в число строк на число столбцов. В 3Dграфике, наиболее распространенный тип матрицы 4 на 4, которая
содержит 16 значений с плавающей точкой.
0
1 0
0 cos sin
Rx  
0 - sin cos

0
0 0
0
0
0

1
cos
0
Ry  
- sin

0
0 sin 0 
1 0 0 
0 cos 0

0 0 1
cos - sin
sin cos
Rz  
0
0

0
0
0
0
1
0
0
0
0

1
24
Визуализация
Важнейший этап любой системы компьютерной графики – визуализация
трехмерных моделей и сцен. В этом разделе обсуждаются общие вопросы
компьютерной визуализации.
Условно способы визуализации трехмерных объектов по характеру
изображений и по степени сложности соответствующих алгоритмов визуализации
можно разделить на следующие виды [Порев Компьютерная графика
http://library.tuit.uz/skanir_knigi/book/kompyuternaya_grafika/pred_3.htm]:
• Каркасная ("проволочная") модель.
• Отображение поверхностей в виде многогранников с плоскими гранями или
сплайнов с удалением невидимых точек.
• То же, что и для второго вида, плюс сложное закрашивание объектов для
имитации отражения света, затенения, прозрачности. Использование текстур.
25
Визуализация
Каркасная модель Wireframe. Удаление невидимых линий (Hidden Line)
26
Визуализация
Закрашивание граней с учетом освещения (Fasets). Имитация гладких
поверхностей закрашиванием (Smooth + Highlights).
27
Визуализация
Материал – ProMaterials:
Water, Type – Steram/River,
Color – Tropical.
Визуализатор – mental ray.
28
Графический конвейер
Большинство систем компьютерной графики построено на
использовании графического конвейера.
Описание сцены в
трехмерном приложении
Стадия геометрических преобразований
Модельные
преобразования
Генерация
треугольников
Освещение
Проверка
глубины
Стадия рендеринга (Renderin pipeline)
Сортировка по Z –
буферу и смещение
текстур
Наложение
текстур
Закраска
треугольников
Вывод изображения сцены на экран
Сглаживание
29
Стадия рендеринга
Этапы стадии рендеринга:
сортировка по Z-буферу (так называемый «буфер глубины») и смешение
текстур;
наложении текстурной карты на объект;
закраска треугольников. Для выполнения этой задачи используются три
модели - плоское закрашивание (по Ламберту) и закрашивание по Гуро
и по Фонгу. Модель с плоским закрашиванием заключается
в равномерном однородном закрашивании каждого треугольника одним
цветом (обычная заливка).
30
Графические библиотеки
DirectX – это мультимедийная библиотека, позволяющая напрямую
работать с аппаратным обеспечением компьютера. Разработка компании
Microsoft. Тесное взаимодействие DirectX и оборудования с драйверами,
написанными производителями оборудования, дают возможность
разрабатывать программный код, не вдаваясь в подробности работы
аппаратной части.
Остановимся подробнее на библиотеке Direct3D отвечающей за работу с
трехмерной графикой. В ранних версиях DirectX Graphics состоял из двух
частей – DirectDraw (рисование двумерной графики) и Direct3D
(трехмерная графика). Начиная с восьмой версии, DirectDraw вошла в
состав Direct3D.
DirectX включает в себя уровень абстракции – HAL (Hardware Abstraction
Layer), позволяющий приложению работать с любым оборудованием
компьютера, независимо от производителя.
31
Microsoft XNA
Microsoft XNA (англ. XNA's Not Acronymed) - набор инструментов с
управляемой средой времени выполнения (.NET), созданный Microsoft,
облегчающий разработку и управление компьютерными играми. XNA
стремится освободить разработку игр от написания «повторяющегося
шаблонного кода» и объединить различные аспекты разработки игр в
одной системе. Набор инструментов XNA был анонсирован 24 марта 2004
на Game Developers Conference в Сан-Хосе, Калифорния. Первый
Community Technology Preview XNA Build был выпущен 14 марта 2006.
Платформа XNA является надстройкой над Microsoft Visual Studio,
позволяющей значительно упростить создание игр для операционной
системы Windows, игровой приставки Xbox360 и в скором времени
медиаплеера Zune. Основная целевая аудитория XNA на данный момент –
разработчики, интересующиеся созданием игр и мультимедиа приложений
и не являющиеся профессиональными программистами.
32
OpenGL
Библиотека набора утилит OpenGL (GLUT, от GL Utility Toolkit) - это интерфейс
для программистов, создающих приложения OpenGL, не зависящие от системы
управления окнами. Благодаря разработчикам GLUT мы имеем возможность
использовать единый интерфейс для работы с окнами независимо от
платформы. Приложения OpenGL, использующие GLUT могут быть с легкостью
перенесены с платформы на платформу, без многочисленных переделок
исходного кода. GLUT значительно облегчает написание кода приложений и
дополняет библиотеку OpenGL.
33
Литература
1. Есенин, Сергей Анатольевич. DirectX и Delphi: разработка графических
и мультимедийных приложений / С. А. Есенин .— СПб.: БХВ-Петербург,
2006.
2. Поршнев, Сергей Владимирович. MATLAB 7. Основы работы и
программирования: учебник: доп. УМО вузов по университетскому
политехническому образованию в качестве учебного пособия для
студентов высших учебных заведений, обучающихся по направлению
654600 "Информатика и вычислительная техника" / С. В. Поршнев .—
М.: Бином, 2006.
3. Херн, Дональд. Компьютерная графика и стандарт OpenGL / Д. Херн, М.
П. Бейкер.— М.: Издательский дом "Вильямс", 2005.
4. Эйнджел, Эдвард. Интерактивная компьютерная графика. Вводный курс
на базе OpenGL / 2-е изд. — М. : Издательский дом "Вильямс", 2001.
34
Download