Графический процесс. Геометрическое моделирование Алексей Викторович Игнатенко 31 марта 2006 1 На лекции Типовая схема графической обработки: графический процесс Геометрическое моделирование Системы координат Разновидности моделей и операции над моделями в различных представлениях 31 марта 2006 2 Графический процесс 31 марта 2006 3 Графический процесс Освещение 3D геометрические модели Синтез изображений (Экранизация) Изображение 3D анимация Материалы 31 марта 2006 4 Графический процесс: Геометрическое моделирование Ручное моделирование 3D сканирование 3D геометрические модели Синтез изображений (Экранизация) Фотографии (CV) Библиотеки моделей 31 марта 2006 5 Графический процесс: 3D сканеры $25000 $100 000 31 марта 2006 6 Графический процесс: Трехмерная анимация Ручное моделирование Вычисление движений 3D анимация Синтез изображений (Экранизация) Сканирование движения (motion capture) 31 марта 2006 7 Графический процесс: Материалы Ручное моделирование Отсканированные изображения (фотографии) Текстуры Материалы Сгенерированные изображения 31 марта 2006 Синтез изображений (Экранизация) Модель отражения/ преломления 8 Графический процесс: Освещение Ручное моделирование Освещение Синтез изображений (Экранизация) Фотографии 31 марта 2006 9 Графический процесс: Синтез изображений (экранизация) Освещение 3D геометрические модели Преобразования, отсечение, перспектива Генерация изображения Изображение 3D анимация Материалы 31 марта 2006 10 Графический процесс: Хранение и вывод изображений Аппаратный буфер кадра Синтез изображений (Экранизация) Файл (видео и т.п) 31 марта 2006 11 Геометрическое моделирование 31 марта 2006 12 Понятие о моделировании Модель – это абстрактное представление сущности реального мира Компьютерное моделирование Математическое моделирование физических, химических процессов и др. Данные о физических объектах не могут быть целиком введены в компьютер Необходимо априори ограничить объем хранимой информации об объекте Задача моделирования найти вид модели, наилучшим образом отвечающий решаемой задаче 31 марта 2006 13 Геометрическое моделирование В компьютерной графике используется геометрическое моделирование моделирование объектов различной природы с помощью геометрических типов данных Выбор модели максимально использовать возможности графической системы учесть задачи обработки и редактирования модели 31 марта 2006 14 Представления объектов Представление объекта = модель объекта Один и тот же объект может иметь несколько представлений (моделей) Представления могут быть получены как из исходного объекта, так и путем преобразования другого представления объекта объект 1 объект 2 Модель 1 Модель 2 Модель 3 Модель 4 «Представления объекта 1» «Представления объекта 2» 31 марта 2006 15 Классификация Рассматриваем сплошные тела Характеристики модели: структура данных; алгоритм построения; количество памяти, необходимое для хранения модели; типичные свойства представления (алгоритмы); область применения моделей в данном представлении. Критерии классификации представлений Объем/Поверхность Какие свойства трехмерного объекта описывает модель? Дискретное/Непрерывное Содержится ли в модели информация о дополнении дискретных данных до непрерывных? Явное/Параметрическое Способ получения трехмерных координат точек, принадлежащих модели 31 марта 2006 16 Системы координат 31 марта 2006 17 Воксельное представление Структура Равномерная сетка, каждый элемент которой показывает, если в нем часть объекта Ячейка называется воксель (voxel = volume element) Каждый воксель принимает значение 0 или 1 Может также задавать плотность (0-1) Способ получения Дискретизация трехмерных данных на равномерной сетке 31 марта 2006 18 Воксельное представление: свойства Описывает объем Дискретное представление: приближение реального объекта! Плохо описываются части объекта, не параллельные сторонам воксельного куба Явное представление Размер данных пропорционален кубу разрешения сетки 1 байт на точку: 2000 x 2000 x 2000 = 7,45 Гб ! 31 марта 2006 19 Воксельное представление: типичные алгоритмы Пространственные алгоритмы вычисление объема объекта нахождение центра масс ... булевы операции ( пересечение, объединение) Плохо работают алгоритмы, требующие понятия поверхности! 31 марта 2006 20 Воксельное представление: Октодерево Разбиение пространства на восемь октант, которое представляется деревом. Упорядоченно! Располагается вокруг начала его локальной системы координат Октанты первого уровня совпадают с октантами системы координат. Ветвь дерева: Код Код = «черный» Код = "белый« Пространство пустое, лист Код = "серый" Пространство заполнено, лист область пространства частично пуста и частично заполнена. 8 ссылок указывают на подразбиение данной области. Восемь указателей на восемь потомков, пронумерованных от 0 до 7 31 марта 2006 21 Октодерево: свойства Применяется для оптимизации воксельного представления Свойства: Способ получения 31 марта 2006 Позволяет хранить информацию только о блоках, относящихся к объекту Число элементов пропорционально площади поверхности объекта, т.е. квадрату разрешения Для разреженных моделей позволяет уменьшить размер в тысячи раз! Из воксельного представления или напрямую, через дискретизацию 22 Линейная запись октодерева 1 Октанты дерева пронумерованы от 0 до 7 Конструирование адреса каждой ветви дерева, кроме корня. Адрес ветви уровня i – последовательности i чисел от 0 до 7 – путь от корня к этой ветви Символ X: если в последовательности чисел меньше, чем максимальное разрешение Линейная запись дерева есть просто сортированный массив адресов ветвей с кодом "черный" Пример: {03,1X,51,53} 31 марта 2006 23 Линейная запись октодерева 2 Обход дерева в фиксированном порядке, например, слева направо, сверху вниз (в глубину). Трехсимвольный алгоритм: «B»: черная ветвь «W»: белая ветвь «(» : внутренняя ветвь Пример: ((WWWBWWWWBWW W(WBWBWWWWWW 31 марта 2006 24 Октодерево: типичные алгоритмы Удобно для синтеза: Переменный уровень детализации Вывод back-to-front Усложняются операции, требующие информации о смежных ячейках 31 марта 2006 25 Точечное представление Набор неструктурированных точек Количество памяти, необходимое для хранения модели пропорционально количеству точек (дискретов, sample) Дискретное, явное представление 31 марта 2006 26 Точечное предсталение: структура Массив точек с атрибутами 31 марта 2006 Атрибуты: положение, цвет, нормаль, размер Описывает только принадлежащие объекту части пространства Явное хранение координат => возможное увеличение размера (для «плотных» моделей) 27 Точечное представление: свойства, типичные алгоритмы Эффективно аппроксимирует форму объекта По объему памяти обычно более эффективно чем воксельное, но менее эффективно, чем октодерево (или аналогичная структура) Нет связанности, инциндентности => для выполнения преобразований обычно строятся дополнительные структуры данных (октодерево) 31 марта 2006 28 Конструктивная геометрия Структура Набор базовых примитивов Операции по их комбинированию Способ получения сфера, куб, цилиндр... Ручное моделирование Свойства Описывает объем и поверхность (!) Непрерывное представление представление Явное представление 31 марта 2006 29 Конструктивная геометрия: операции с телами Операции Перенос/поворот/масштабирование Теоретико-множественные: 31 марта 2006 Объединение Разность Пересечение 30 Конструктивная геометрия: операции с телами 2 diff(union(trans1(Block1), trans2(Block2)), trans3(Cylinder)) 31 марта 2006 31 Конструктивная геометрия: структура данных Дерево из операций и базовых объектов Корень – результирующий объект Листья – базовые примитивы Число потомков равно числу операндов операции Из-за повторного использования превращается в направленный ациклический граф. 31 марта 2006 32 Конструктивная геометрия: типичные алгоритмы Пространственные алгоритмы вычисление объема объекта нахождение центра масс ... Есть понятие поверхности! 31 марта 2006 33 Каркасное представление 31 марта 2006 i X Y Z 1 1 1 1 2 1 -1 1 3 -1 -1 1 4 -1 1 1 5 1 1 -1 6 1 -1 -1 7 -1 -1 -1 8 -1 1 -1 1 (1,2) 2 (2,3) 3 (3,4) 4 (5,6) 5 (5,6) 6 (6,7) 7 (7,8) 8 (8,5) 9 (1,5) 10 (2,6) 11 (3,7) 12 (4,8) 34 Каркасное представление: неоднозначная интерпретация Нужна дополнительная информация! 31 марта 2006 35 Грани и ребра 31 марта 2006 Грани (Faces) 1 {A,B,D} 2 {B,C,D} 3 {A,C,D} 4 {A,B,C} Ребра (Edges) a (A,D) b (A,B) ….. 36 Поверхность Две поверхности 31 марта 2006 Одна поверхность 37 Граничное представление Кусочная аппроксимация поверхности объекта Рассматриваем представления первого порядка (линейная интерполяция) - грани Структура данных: вершины + грани 31 марта 2006 38 Разновидности граничных представлений Различаются по способам хранения информации о гранях и ребрах Явное представление Индексированное по вершинам Индексированное по ребрам Крылатое представление 31 марта 2006 39 Граничное представление: Явное представление Каждая грань – полигон, состоящий из последовательности координат вершин Объект состоит из набора граней Недостатки взаимоотношения граней заданы неявно координаты каждой вершины появляются столько раз, сколько граней имеют эту вершину. Алгоритмы поиска инцидентных ребер требуют полного перебора 31 марта 2006 40 Граничное представление: Индексированное по вершинам Выделение координат вершин в отдельную структуру С гранями ассоциируются не координаты вершин, а индексы в массиве координат вершин Недостатки Вершины Координаты Грани Вершины v1 x1 y1 z1 f1 v1 v2 v3 v4 v2 x2 y2 z2 f2 v6 v2 v1 v5 v3 x3 y3 z3 f3 v7 v3 v2 v6 v4 x4 y4 z4 f4 v8 v4 v3 v7 v5 x5 y5 z5 f5 v5 v1 v4 v8 v6 x6 y6 z6 f6 v8 v7 v6 v5 v7 x7 y7 z7 v8 x8 y8 z8 Аналогично явному представлению 31 марта 2006 41 Граничное представление: Индексированное по ребрам Грани определяются через ребра Ребра задаются вершинами Вершины задаются положением в пространстве 31 марта 2006 Реб Верш Верш Коорд Грн Ребра e1 v1 v2 v1 x1 y1 z1 f1 e1 e2 e3 e4 e2 v2 v3 v2 x2 y2 z2 f2 e9 e6 e1 e5 e3 v3 v4 v3 x3 y3 z3 f3 e10 e7 e2 e6 e4 v4 v1 v4 x4 y4 z4 f4 e11 e8 e7 e3 e5 v1 v5 v5 x5 y5 z5 f5 e12 e5 e4 e8 e6 v2 v6 v6 x6 y6 z6 f6 e12 e11 e10 e9 e7 v3 v7 v7 x7 y7 z7 e8 v4 v8 v8 x8 y8 z8 e9 v5 v6 e10 v6 v7 e11 v7 v8 e12 v8 v5 42 Граничное представление: Крылатое представление Добавляется информация о взаимном расположении граней 31 марта 2006 43 Граничное представление: типичные алгоритмы Проверка правильности задания Вычисление габаритного объема Вычисление нормали в точке Вычисление кривизны поверхности Нахождение точки пересечения с лучом или кривой Определение положения точки относительно поверхности 31 марта 2006 44 Граничные представления высших порядков Контрольные точки + способ интерполяции 2-го порядка и выше (полиномы Эрмита, например) 31 марта 2006 45 Литература по теме Алексей Игнатенко. Геометрическое моделирование сплошных тел. Onlineжурнал «Графика и Мультимедиа» http://cgm.graphicon.ru/obzoryi/geometricheskoe_m odelirovanie_sploshnyih_tel.html Алексей Игнатенко. Однородные координаты. Online-журнал «Графика и Мультимедиа» http://cgm.graphicon.ru/praktika/odnorodnyie_koordinatyi.html 31 марта 2006 46 Итоги Графический процесс Геометрическое моделирование Представления трехмерных данных Воксельное (+октарное дерево) Точечное представление Конструктивная геометрия Каркасное представление Граничное представление (явное, индексированное по вершинам, ребрам, крылатое) Граничные представление высших порядков 31 марта 2006 47