Лекция № 6,7
ТРЁХМЕРНАЯ ГРАФИКА
Будем считать, что необходимо смоделировать 3D-объект на 2D плоскости.
Упрощенно схему этого процесса можно представить следующей последовательностью действий:
Моделирование
Модель – абстрактное представление сущности реального мира, представление некоторых (необязательно всех) свойств объекта, либо конкретно существующего, либо абстрактного, его особенностей.
Задача моделирования – поиск вида (представления) модели, наилучшим образом отвечающего решаемой задаче.
Нам будут более всего интересны геометрические модели, которые естественны для графического представления.
Геометрическое моделирование – моделирование объектов различной природы с помощью геометрических типов данных
Моделируются:
• объекты реального мира,
• синтетические объекты (например, научная визуализация)
Компоненты геометрической модели:
• Пространственное расположение и форма – геометрия объекта и некоторые
атрибуты цвет, текстура.
• Топология (связность с другим объектом).
Выбор представления:
• максимизирование возможностей графической подсистемы
• алгоритмы обработки данных
• алгоритмы редактирования данных
Создание моделей
Автоматическое
• устройства ввода трехмерной информации (например, 3d сканеры)
• реконструкция из изображений (машинное зрение)
• результаты вычислений
Ручное
• системы для моделирования (3D studio MAX, Maya, т.д.)
Пример системы моделирования
Система координат.
Будем использовать декартову систему координат, как наиболее распространенную.
Система координат называется правой, если для совмещения с положительной полуосью Y положительную полуось X требуется повернуть на +90 при этом направление движения расположенного вдоль оси Z и поворачивающегося против часовой стрелки правого винта и положительной полуоси Z совпадают.
Аналитическая модель.
Аналитической моделью будем называть описание поверхности математическими формулами. В компьютерной графике можно использовать много разновидностей такого описания. Например, в виде функции двух аргументов z = f (x, у). Можно использовать уравнение F (х, у, z) = 0.
Зачастую используется параметрическая форма описания поверхности. Формулы для трехмерной декартовой системы координат (х, у, z):
х =Fx(s, f),
y = Fy(s,t)
z = Fz(s,t),
где s и t – параметры, которые изменяются в определенном диапазоне, а функции Fx, Fy и Fz будут определять форму поверхности.
Преимущества параметрического описания – легко описывать поверхности, которые отвечают неоднозначным функциям, замкнутые поверхности. Описание можно сделать таким образом, что формула не будет существенно изменяться при поворотах поверхности, масштабировании.
Пример. Рассмотрим аналитическое описание поверхности шара. Сначала как функцию двух аргументов:
Затем в виде уравнения:
х2 + у2 + z2 - R2 = 0.
А также в параметрической форме:
Для описания сложных поверхностей часто используют сплайны.
Сплайн – специальная функция, более всего пригодная для аппроксимации отдельных фрагментов поверхности. Несколько сплайнов образовывают модель сложной поверхности. Сплайн – тоже поверхность, но такая, для которой можно достаточно просто вычислять координаты ее точек. Обычно используют кубические сплайны, так как третья степень – наименьшая из степеней, позволяющих описывать любую форму, и при стыковке сплайнов можно обеспечить непрерывную первую производную – такая поверхность будет без изломов в местах стыка. Сплайны часто задают параметрически. Запишем формулу для компоненты x(s,t) кубического сплайна в виде многочлена третьей степени параметров s и t:
x(s,t) = а11 s3t3 + а12 s3t2 + a13 s3t + a14 s3 +
+ a21 s2t3 + a22 s2t2 + а23 s2t + a24 s2 +
+ a31 s t3 + a32 s t2 + а33 s t + a34 s +
+ a41 t3 + a42 t2 + a43 t + a44.
Cо способами определения коэффициентов aij, для сплайнов, которые имеют заданные свойства можно ознакомиться в математической литературе. Одна из разновидностей сплайнов – кривая Безье.
Характеризуя аналитическую модель в целом, можно сказать, что эта модель наиболее пригодна для многих операций анализа поверхностей. С позиций КГ можно указать такие положительные черты модели: легкая процедура расчета координат каждой точки поверхности, нормали; небольшой объем информации для описания достаточно сложных форм.
К недостаткам относятся следующие: сложные формулы описания с использованием функций, которые медленно вычисляются на компьютере, снижают скорость выполнения операций отображения; невозможность в большинстве случаев применения данной формы описания непосредственно для построения изображения поверхности. В таких случаях поверхность отображают как многогранник, используя формулы аналитического описания для расчета координат вершин граней в процессе отображения, что уменьшает скорость сравнительно с полигональной моделью описания.
Векторная полигональная модель.
Для описания пространственных объектов здесь используются такие элементы: вершины, отрезки прямых (векторы); полилинии, полигоны; полигональные поверхности (рис. 4.2).
Элемент "вершина" (vertex) – главный элемент описания, все другие являются производными. При использовании трехмерной декартовой системы координаты вершин определяются как (хi, уi, zi). Каждый объект однозначно определяется координатами собственных вершин.
Вершина может моделировать отдельный точечный объект, размер которого не имеет значения, а также может использоваться в качестве конечных точек для линейных объектов и полигонов. Двумя вершинами задается вектор. Несколько векторов составляют полилинию. Полилиния может моделировать отдельный линейный объект, толщина которого не учитывается, а также может представлять контур полигона. Полигон моделирует площадный объект. Один полигон может описывать плоскую грань объемного объекта. Несколько граней составляют объемный объект в виде полигональной поверхности – многогранник или незамкнутую поверхность (полигональная сетка).
Векторную полигональную модель можно считать наиболее распространенной в современных системах трехмерной компьютерной графики. Ее используют в системах автоматизированного проектирования, в компьютерных играх и тренажерах, геоинформационных системах и т. д.
Пример. Чтобы понять структуры данных, которые используются в векторной полигональной модели возьмем куб и рассмотрим, как можно организовать описание такого объекта в структурах данных.
Первый способ. Сохраняем все грани в отдельности.
Схематично это можно изобразить так:
В компьютерной программе такой способ описания объекта можно реализовать весьма разнообразно, но принципиально это мало что изменяет – так или иначе в памяти необходимо сохранять координаты вершин граней плюс некоторую информацию в качестве накладных затрат. Объем памяти, необходимый для описания куба можно рассчитать следующим образом:
где Рв – разрядность чисел, необходимая для представления координат.
Шесть граней здесь описываются 24 вершинами. Такое представление избыточно – каждая вершина записана трижды. Не учитывается то, что у граней есть общие вершины.
Второй способ. Для такого варианта координаты восьми вершин сохраняются без повторов. Вершины пронумерованы, а каждая грань дается в виде списка индексов вершин (указателей на вершины).
В этом случае затраты памяти составят:
где Рв – разрядность координат вершин, Риндекс – разрядность индексов.
Третий способ. Этот способ основывается на иерархии: вершины-ребра-грани (в литературе его иногда называют линейно-узловой моделью).
Затраты памяти:
где Рв – разрядность координат, Ринд вершин и Ринд.ребер – разрядность индексов вершин и ребер соответственно.
Сравнение трех способов описания полигональной модели.
Объем памяти.
Для сравнения объемов памяти этих трех вариантов необходимо определиться с разрядностью данных. Когда разрядность для координат больше, чем для индексов, то ощутимо преимущество второго и третьего вариантов. Наиболее экономичным можно считать второй вариант. Необходимо заметить, что такой вывод мы сделали для куба. Для других типов объектов соотношение вариантов может быть иным.
Скорость вывода полигонов. Если для полигонов необходимо рисовать линию контура и точки заполнения, то первый и второй варианты близки по быстродействию – и контуры, и заполнения рисуются одинаково. Отличия в том, что для второго варианта сначала надо выбирать индекс вершины, что замедляет процесс вывода. В обоих случаях для смежных граней повторно рисуется общая часть контура. Для третьего варианта можно предусмотреть более совершенный способ рисования контура – каждая линия будет рисоваться только один раз, если в массивах описания ребер предусмотреть бит, означающий, что это ребро уже нарисовано. Это обуславливает преимущества третьего варианта по быстродействию. Блокирование повторного рисования линий контуров смежных граней позволяет решить также проблему искажения стиля линий, если линии контуров не сплошные, а, например, пунктирные.
Топологический аспект. Представим, что имеется несколько смежных граней. Что будет, если изменить координаты одной вершины в структурах данных? Результат приведен на рис. 4.8.
Поскольку для второго и третьего вариантов каждая вершина сохраняется в одном экземпляре, то изменение ее координат автоматически приводит к изменению всех граней, в описании которых сохраняется индекс этой вершины. Это полезно, например, в геоинформационных системах при описании соседних земельных участков или других смежных объектов. Следует заметить, что подобного результата можно достичь и при структуре данных, соответствующей первому варианту. Можно предусмотреть поиск других вершин, координаты которых совпадают с координатами точки А. Иначе говоря, поддержка такой операции может быть обеспечена как структурами данных, так и алгоритмически. Однако когда нужно разъединить смежные грани, то для второго и третьего вариантов это сложнее, чем для первого – необходимо записать в массивы новую вершину, новые ребра и определить индексы в массивах граней.
Положительные черты векторной полигональной модели:
удобство масштабирования объектов. При увеличении или уменьшении объекты выглядят более качественно, чем при растровых моделях описания. Диапазон масштабирования определяется точностью аппроксимации и разрядностью чисел для представления координат вершин;
небольшой объем данных для описания простых поверхностей, которые адекватно аппроксимируются плоскими гранями;
необходимость вычислять только координаты вершин при преобразованиях систем координат или перемещении объектов;
аппаратная поддержка многих операций в современных графических видеосистемах, которая обуславливает достаточную скорость для анимации.
Недостатки полигональной модели:
сложные алгоритмы визуализации для создания реалистичных изображений; сложные алгоритмы выполнения топологических операций, таких, например, как разрезы;
аппроксимация плоскими гранями приводит к погрешности моделирования. При моделировании поверхностей, которые имеют сложную фрактальную форму, обычно невозможно увеличивать количество граней из-за ограничений по быстродействию и объему памяти компьютера.
Воксельное представление.
Смысл – дискретизация пространства на равномерной сетке.
Воксельная модель – это трехмерный растр. Подобно тому, как пиксели располагаются на плоскости 2В-изображения, так и вокселы образовывают трехмерные объекты в определенном объеме (рис. 4.9). Воксел – это элемент объема (voxel – volume element).
Каждый пиксель должен иметь свой цвет. Каждый воксел также имеет свой цвет, а, кроме того, прозрачность. Полная прозрачность воксела означает пустоту соответствующей точки объема. При моделировании объема каждый воксел представляет элемент объема определенного размера. Чем больше вокселов в определенном объеме и меньше размер вокселов, тем точнее моделируются трехмерные объекты – увеличивается разрешающая способность.
Для современной компьютерной графики вексельный метод считается одним из перспективных. Его используют в компьютерных системах для медицины (например, при сканировании томографом) Вокселы используются для графических устройств отображения, которые создают действительно объемные изображения.
Положительные черты воксельной модели:
позволяет достаточно просто описывать сложные объекты и сцены; простая процедура отображения объемных сцен;
простое выполнение топологических операций над отдельными объектами и сценой в целом. Например, просто выполняется показ разреза – для этого соответствующие вокселы можно сделать прозрачными.
Недостатки воксельной модели:
большое количество информации, необходимой для представления объемных данных. Например, объем 256x256x256 имеет небольшую разрешающую способность, но требует свыше 16 миллионов вокселов;
значительные затраты памяти ограничивают разрешающую способность, точность моделирования; большое количество вокселов обусловливает малую скорость создания изображений объемных сцен;
как и для любого растра, возникают проблемы при увеличении или уменьшении изображения. Например, при увеличении ухудшается разрешающая способность изображения.
Существуют способы, которые оптимизируют воксельное представление. Например, октарные деревья, которые позволяют хранить только части пространства, занятые объектом.