6
СИСТЕМЫ АВТОМАТИЗИРОВАННОГО
ПРОЕКТИРОВАНИЯ
УДК 004.92
МЕТОД ГЕОМЕТРИЧЕСКОГО УПРОЩЕНИЯ 3D ПОЛИГОНАЛЬНЫХ ОБЪЕКТОВ В.Т. Тозик, А.В. Меженин
В статье рассматривается метод геометрического упрощения 3Б полигональных моделей объектов с целью сокращения объема данных, что приводит к повышению скорости процессов передачи и визуализации. Предлагаемый метод упрощения трехмерных полигональных объектов использует операции свертывания ребер. Дополнительно выполняется проверка, направленная на устранение эффекта вырожденной полигональной сетки. Для оценки качества упрощения полигональной сети предлагается использовать размерность Хаусдорфа.
Ключевые слова: многомасштабное представление, упрощение сеток.
Введение
Одной из основных проблем передачи и отображения трехмерных данных является передача больших объемов данных, необходимых для описания сложных трехмерных моделей в условиях ограничения пропускной способности каналов передачи данных, таких как Интернет, космическая связь и т.д. [1]. Упрощение сложных 3D объектов является важным направлением исследований в компьютерной графике. Уменьшение уровней детализации Level of Detail (LOD) упрощает не только задачу передачи данных, но и задачу визуализации, особенно для небольших дисплеев мобильных устройств и специальной аппаратуры.
Большинство итерационных алгоритмов упрощения полигональных моделей можно разделить на три категории: прореживание вершин, свертывание ребер, прореживание граней [2, 3] (рис. 1).
Алгоритм кластеризации вершин относится к категории прореживания вершин и состоит в объединении вершин, находящихся в одном кластере пространства, в одну. Его достоинство - высокая скорость, а недостаток в некоторых случаях - нарушение топологии получаемых моделей. Более точно топологию модели передает алгоритм прореживания вершин, выполняемый в несколько проходов. На каждом этапе происходит удаление вершин, расположенных на расстоянии меньше заданного от усредненной плоскости соседних вершин. Одна из проблем, возникающая при реализации алгоритма - исчезновение граней, принадлежащих удаляемым вершинам. При этом могут образоваться разрывы, которые необходимо заполнить, выполняя операции триангуляции, что требует дополнительного времени.
Алгоритмы, основанные на свертывании ребер, можно рассматривать как частный случай удаления вершин, однако они не требуют выполнения дополнительных операций триангуляции. Поэтому их реализация дает хорошие результаты с точки зрения качества и быстродействия. Свертывание ребра представляет собой слияние двух вершин, образующих ребро, в одну. При этом в общем случае происходит удаление двух треугольных ячеек. Последовательность свертывания ребер определяется мерой ошибки, которая отражает локальное геометрическое отклонение ячеек. Способы вычисления этой ошибки определяют различие между алгоритмами этого класса.
Известны следующие меры ошибки, используемые для выбора стратегии при свертывании ребра:
- определение среднего расстояния между новыми треугольниками и типовыми точками на исходной модели;
- нахождение величины допуска как выпуклой комбинации сфер, расположенных в каждой вершине упрощения. Выбор граней основывается на самой малой длине, а новая вершина позиционируется таким образом, что новая поверхность будет гарантированно лежать в пределах этого допуска;
- поддержка связи между точками исходной модели и соответствующими окрестностями на упрощенной модели.
Метод кластеризации ограничивающего объема и операции свертывания ребер
Предлагаемый авторами подход к задаче упрощения трехмерных полигональных объектов и организации прогрессивной сетки основан на кластеризации ограничивающего объема и операциях свертывания ребер. Очевидно, что в первую очередь необходимо обрабатывать только те вершины, которые не влияют существенно на форму объекта. Вершины, в которых поверхность объекта существенно меняется, будем называть опорными. Такие вершины выделяются на стадии предварительной обработки и постоянно присутствуют при синтезе объекта. Выделение опорных вершин производится следующим образом.
Шаг 1. Строится ограничивающий объем, представляющий собой параллелепипед, стороны которого параллельны осям координат. Координаты вершин параллелепипеда находятся как значения минимальных и максимальных координат вершин объекта по осям:
=min(x„x2,...,*„), *max = max(*1,*2,...,*„),
Ушш=™П(У1,У2,-,Уп), У max = У1, У2 ,..., Уп ) ,
=min(z1,z2,...,z„), zmax =max(z1,z2,...,z„)
Шаг 2. Координаты ограничивающих объемов находятся из предыдущих значений следующим образом:
X +Х V - + V Z ■ + Z
^ _ mm_max _ У min У max ^ _ mm_max
Ci ~ 2Tx ' k ~ 2 ~ky ' Ci ~ 2 ~kz '
где kx, к , kz - количество разбиений по осям X, Y, Z.
Шаг 3. Определяется принадлежность вершин к каждой области разбиения путем проверки условий
х < х < х V < V < V z ■ < z ■ < z
mm г max ' У mm У г У max ' min i max
Шаг 4. Определяется квадрат расстояния от вершин области до центров областей разбиения:
d2=( х -х.)2+(у -y.)2+(z -z.)2.
1 V ci+1 г ' У i ' V ci+1 г '
Шаг 5. Находятся минимальные и максимальные квадраты расстояний. Вершины, расположенные на минимальном и максимальном расстояниях, удаляться не будут.
Дальнейшее упрощение основано на свертывании ребер. В качестве критериев используются угол между нормалями граней и изменение площади свертываемой грани. На каждом шаге производятся следующие действия.
- Вычисляется показатель ошибки для каждой операции свертывания ребра и выполняется упорядочивание по приоритетам.
- Выбирается ребро ёг (ц,, г) м> \> с минимальной величиной ошибки и заметается на
V. Во время этой операции треугольники, имеющие общие ребра с ег, становятся сингулярными и удаляются. Оставшиеся грани, инцидентные вершине v0, модифицируются таким образом, что все, что было связано с ^, заменяется на V .
- Пересчитывается величина ошибки свертки ребра ег (V, V) ^ V. Добавляется стоимость ошибки схлопывания ё = (V,,, у,) в ту часть очереди, которая связана с вершиной V, и модифицируется очередь по приоритетам. В результате формируется прогрессивная структура сети.
Когда происходит свертывание произвольного ребра ег ( у0 , г') I—> V, две грани,
примыкающие к ребру, становятся выродившимися. Свертывание ребра приводит к отображению треугольника / = (\'п I',, V-,) в треугольник V = I',, V-,). Ребра {у,,,!^} и {\'п, \'2 ¡треугольника / = (Ч'0, , \'2) вырождаются (рис. 2).
В результате смещения оставшихся граней происходит изменение геометрической формы поверхности. Величина этого изменения может характеризоваться, с одной стороны, углом поворота грани I = (V,,, у,, \\), с другой стороны, площадью треугольника ?'= , V, V,). Чем больше та или другая величина, тем больше изменение формы
П
2
Рис. 2. Свертывание ребер
поверхности. Таким образом, для грани t = (v0,v1,v2) величина ошибки может характеризоваться произведением этих величин:
где А = ^||ахЬ||, а = vo - vi, b = vi - v, 9 - угол между векторами нормалей двух треугольников. Суммарная величина ошибки er(v0, v) I—> v может быть определена как сумма ошибок сверток всех граней, примыкающих к v0: Cost(er) = ^ О, .
ie(v0,v) ь->v
Граничные грани требуют специальной обработки для сохранения формы модели. Ребра, расположенные вдоль границы, делим на две категории: ребра, которые имеют одну вершину на границе e=(v,vl) и ребра, имеющие две вершины на границе e =(v1:,v2). Ребро ех ={v0,vj} поворачивается на угол (р при свертывании ё = (v1:,v2). Соответственно, если свертывается е = (v2, v,), то ребро e2={v2,v3} повернется на угол ф0, при этом получается ф0 < ф. В результате схлопывания ребра е = {v0, v} треугольник t = (v0,vl3v2) может перекрыть грань (рис. 2).
Свертывание ребра ё = (vs, vt) i—> vt с конечной вершиной, находящейся на границе, не требует специальной обработки. Однако, если начальная вершина находится на границе, то свертывание ребра исказит границу, и это необходимо учитывать.
Ребро е = {v0, Vj) может быть свернуто в вершины Vj или v2, но лучший результат будет при сворачивании в Vj. Для достижения этого необходимо измерить угол ф и Ф0 между ребрами е1 и е1' и е2 и е2' соответственно.
Результаты апробации алгоритма
На рис. 3 представлены результаты апробации предлагаемого метода. Исходная полигональная модель содержит 3679 граней, т.е. 100% (a), а результаты упрощения -2856 граней, т.е. 80% (б), и 2441 грань, т.е. 60% (в). На рис. 3 видно сохранение топологии, отсутствие разрывов и вырожденных граней.
Для оценки качества работы алгоритма и сравнения с другими известными алгоритмами предлагается вычислять ошибку аппроксимации между двумя полигональными моделями, которая базируется на вычислении расстояния аппроксимации (approximate distance) и может быть определена следующим образом. Дана точка p и поверхность S. Определим расстояние e(p, S), и расстояние между двумя поверхностями Sx, S2
как e(p,S) = mind(p,р}) ,E(Sl,S2) = maxe(p,S2), где dQ- евклидово расстояние между
p'eS i
двумя точками в Е3. Необходимо отметить, что это расстояние несимметрично. Существуют поверхности такие, что E(S1,S2) Ф Ii(S2,Л',). Хаусдорфово расстояние (двустороннее) может быть получено как максимум E(Sj, S2) и E(S2, S ). Среднее (mean) Em расстояние между двумя поверхностями можно определить как интеграл по поверхности, определенный областью S1:
Em (S1, S 2)=|^ \e( P> S 2)dS .
S,
На рис. 4 приведены графики средней ошибки (расстояния аппроксимации) при уменьшении количества граней тестовой полигональной модели для разных алгоритмов упрощения [2, 3]. Разработанный алгоритм показал лучшие результаты.
Рис. 3. Результат работы алгоритма
E
m
-•- QSlim д- Polycrunch г Разр. алгоритм
1 00000
Число полигонов
Рис. 4. Графики средней ошибки
Заключение
В работе предложен алгоритм, обладающий следующими характеристиками. Алгоритм алгоритмически сохраняет визуально важные особенности полигональной модели лучшим образом по сравнению с известными алгоритмами упрощения. Предложенный способ накопления ошибки не требует сохранения истории геометрических изменений, что позволяет эффективно упрощать большие полигональные модели, не требуя больших объемов памяти.
Алгоритм в вычислительном отношении показывает лучшие результаты по сравнению с известными алгоритмами, основанными на свертывании ребер. Алгоритм автоматически предотвращает появление искажений типа сверток.
б
а
в
Литература
1.Парамонов П.П., Видин Б.В., Меженин А.В., Тозик В.Т. Методы представления сложных полигональных моделей в графических системах, работающих в режиме реального времени / // Изв. вузов. Приборостроение. - 2006. - Т. 49. - № 6. - С. 17-19.
2. Hoppe H. Progressive Meshes // Computer Graphics. - Vol. 30. -SIGGRAPH 96.
3.Garland M. Heckbert P. Multiresolution Modeling for Fast Rendering // Proceedings of Graphics Interface '94. - 1994.
Тозик Вячеслав Трофимович
Меженин Александр Владимирович
Санкт-Петербургский государственный университет информационных технологий, механики и оптики, кандидат технических наук, доцент, заведующий кафедрой, [email protected] Санкт-Петербургский государственный университет информационных технологий, механики и оптики, кандидат технических наук, доцент, [email protected]