Геометрические модели трехмерных объектов

Геометрические модели описывают предметы и явления, обладающие геометрическими свойствами. Необходимость в описании пространственных объектов возникает при решении многих задач компьютерной графики.

В общем случае реально существующий объект не может, конечно, в точности соответствовать своему описанию. Для этого бы потребовалось бесконечное число троек координат (x, y, z) – по одной для каждой точки поверхности объекта.

В настоящее время при моделировании объектов используют несколько основных типов геометрических моделей [10, 14, 20].

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

При использовании каркасной модели для описания объектов, ограниченных поверхностями более чем первого порядка, такие поверхности интерполируют плоскими гранями.

Каркасное представление объекта часто используется не при моделировании, а при отображении моделей как метод визуализации.

Преимуществами каркасной модели являются низкие требования к вычислительным ресурсам, недостатком – невозможность построения высоко реалистичных изображений, так как совокупность отрезков не является адекватным описанием объекта – отрезки сами по себе не определяют поверхностей (рис. 7.1).

 
  Геометрические модели трехмерных объектов - student2.ru

Рис. 7.1. Одна и та же каркасная модель (а) может описывать и куб (б), и открытую сверху коробку (в).

Развитием каркасной модели является кусочно-аналитическая граневая модель, которая задается перечислением всех отдельных граней. Объект задается множеством ограничивающих его граней и нормалью, направленной из объекта; каждая грань задается циклом ограничивающих ее ребер; каждое ребро – двойкой ограничивающих его точек (вершин); каждая точка – тройкой координат в трехмерном пространстве. Т.е. граневая модель представляет трехмерный объект в виде замкнутой поверхности.

Совокупность граней, представленных плоскими многоугольниками и ограниченных прямолинейными ребрами, образует полигональную сетку. Грани могут иметь любую форму, но в подавляющем большинстве случаев используются выпуклые многоугольники с минимальным количеством вершин (треугольники и четырехугольники), т.к. их обсчет выполняется проще.

Основным недостатком полигональной сетки является приблизительность представления формы объекта при описании искривленных поверхностей. Для улучшения кусочно-линейной аппроксимации таких объектов увеличивают число граней, что приводит к дополнительным затратам памяти и увеличению объема вычислений.

В рамках граневой модели грани могут представлять собой и искривленные поверхности, ограниченные криволинейными ребрами. Наиболее часто в качестве граней используются параметрические бикубические куски, ограниченные параметрическими кубическими кривыми.

При использовании бикубических кусков для представления объекта с заданной точностью требуется значительно меньшее число граней, чем при аппроксимации полигональной сеткой. Однако, вычисления при работе с бикубическими поверхностями значительно сложнее, чем при работе с плоскими гранями.

В отличие от граневой модели, объемно-параметрическая модель рассматривает объект как сплошное тело. Объект описывается как совокупность некоторых базовых объемных элементов формы (объемных примитивов). Каждый примитив в модели задается двумя группами параметров:

· размерные параметры – определяют геометрические размеры примитива;

· параметры положения – устанавливают положение и ориентацию примитива относительно мировой системы координат.

В качестве примитивов используются простые геометрические тела: цилиндр, конус, усеченный конус, параллелепипед, шар, тор.

В качестве параметров положения обычно используют координаты центральной точки примитива и координаты единичного вектора, направленного вдоль высоты примитива.

Кроме этих параметров задаются операции над примитивами, в качестве которых используются три основные операции теории множеств – объединение, пересечение и вычитание. Объединением двух примитивов является объект, включающий все точки исходных примитивов. Пересечением двух примитивов является объект, все точки которого принадлежат одновременно и первому, и второму примитиву. Результатом вычитания двух примитивов является объект, состоящий из тех точек первого примитива, которые не принадлежат второму примитиву [20].

Недостатком объемно-параметрической модели является отсутствие явных границ отсеков граней в случае взаимопроникновения примитивов.

В рамках кинематической модели объект может быть задан совокупностью объемных элементов, каждый из которых представляет собой объем, «вырезаемый» в пространстве при движении по определенной траектории замкнутого плоского контура. Траектория движения контура может быть как прямой, так и искривленной.

Вид элемента определяется формой контура и траекторией его движения. Например, цилиндр в рамках кинематической модели может быть описан как движение круга вдоль отрезка, представляющего собой высоту цилиндра.

Для моделирования элементов сложной формы можно использовать изменение размеров контура или его положения относительно траектории во время движения.

Достоинством модели является практическое отсутствие ограничений на сложность формируемого объекта. К недостаткам относится сложность задания элементов.

Полигональные сетки

Полигональные сетки представляют собой совокупность вершин, ребер и многоугольников.

Сетку можно представить несколькими различными способами [14].

При явном задании многоугольников каждый многоугольник представляется в виде списка координат его вершин:

P = ((x1, y1, z1), (x2, y2, z2), …(xn, yn, zn)).

Вершины многоугольника запоминаются в том порядке, в котором они встречаются при обходе вокруг многоугольника. Все последовательные вершины многоугольника, а также первая и последняя вершины, соединяются ребрами.

Этот способ записи является эффективным для каждого отдельного многоугольника. Для полигональной сетки этот метод приводит к большим потерям памяти из-за дублирования информации о координатах общих вершин многоугольников, а также не дает явного описания общих ребер и вершин. Для поиска всех многоугольников, имеющих общую вершину, требуется сравнение троек координат одного многоугольника с тройками координат всех остальных многоугольников. Если же из-за ошибок округления одна и та же вершина в разных многоугольниках имеет разные координаты, то результат поиска может быть нулевой.

При визуализации полигональной сетки общие ребра рисуются дважды – по одному разу для каждого многоугольника.

При задании многоугольников с помощью указателей в список вершин каждый узел полигональной сетки запоминается лишь один раз в списке вершин. Каждый многоугольник определяется списком указателей в список вершин.

Этот метод требует меньшего объема памяти, но общие ребра многоугольников по-прежнему рисуются дважды.

При явном задании ребер многоугольников полигональная сетка задается в виде иерархической модели. Координаты каждого узла полигональной сетки запоминаются в списке вершин.

Создается список ребер, где каждое ребро указывает на две вершины в списке вершин. Каждый многоугольник задается как совокупность указателей на элементы списка ребер.

Полигональная сетка изображается вычерчиванием всех ребер (а не всех многоугольников).

Заданную таким способом полигональную сетку наиболее просто проверять на непротиворечивость представления, т.е. на выполнение некоторых условий: что все многоугольники замкнуты, что все ребра используются по крайней мере один раз, но не более некоторого максимального числа раз, что на каждую вершину есть ссылка по крайней мере от двух ребер и т.п. Проверка непротиворечивости представления наиболее важна для полигональных сеток, созданных в интерактивном режиме (например, при оцифровке объектов), когда ошибки практически неизбежны.

Наши рекомендации