Обработка геометрии — это область исследований, которая использует концепции из прикладной математики , компьютерных наук и инженерии для разработки эффективных алгоритмов для получения, реконструкции , анализа , манипулирования, моделирования и передачи сложных 3D-моделей. Как следует из названия, многие концепции, структуры данных и алгоритмы напрямую аналогичны обработке сигналов и обработке изображений . Например, там, где сглаживание изображения может сворачивать сигнал интенсивности с ядром размытия, сформированным с использованием оператора Лапласа , геометрическое сглаживание может быть достигнуто путем свертывания геометрии поверхности с ядром размытия, сформированным с использованием оператора Лапласа-Бельтрами .
Применение алгоритмов обработки геометрии уже охватывает широкий спектр областей: от мультимедиа , развлечений и классического автоматизированного проектирования до биомедицинских вычислений, обратного проектирования и научных вычислений . [1]
Обработка геометрии является распространенной темой исследований на SIGGRAPH , ведущей академической конференции по компьютерной графике , и главной темой ежегодного симпозиума по обработке геометрии .
Обработка геометрии включает в себя работу с формой , обычно в 2D или 3D, хотя форма может существовать в пространстве произвольных измерений. Обработка формы включает в себя три этапа, которые известны как ее жизненный цикл. При своем «рождении» форма может быть создана одним из трех методов: модель , математическое представление или сканирование . После рождения формы ее можно анализировать и редактировать многократно в цикле. Обычно это включает в себя получение различных измерений, таких как расстояния между точками формы, гладкость формы или ее эйлерова характеристика . Редактирование может включать в себя шумоподавление, деформацию или выполнение жестких преобразований . На заключительном этапе «жизни» формы она потребляется. Это может означать, что она потребляется зрителем как визуализированный актив в игре или фильме, например. Конец жизни формы также может быть определен решением о форме, например, удовлетворяет ли она некоторым критериям. Или его можно изготовить в реальном мире, используя такие методы, как 3D-печать или лазерная резка.
Как и любая другая форма, формы, используемые в обработке геометрии, имеют свойства, относящиеся к их геометрии и топологии . Геометрия формы касается положения точек формы в пространстве , касательных , нормалей и кривизны . Она также включает измерение, в котором находится форма (например, или ). Топология формы — это набор свойств, которые не изменяются даже после применения к форме плавных преобразований. Она касается таких измерений, как количество отверстий и границ , а также ориентируемость формы. Одним из примеров неориентируемой формы является лента Мёбиуса .
В компьютерах все должно быть дискретизировано. Формы в обработке геометрии обычно представляются в виде треугольных сеток , которые можно рассматривать как граф . Каждый узел в графе является вершиной (обычно в ), которая имеет позицию. Это кодирует геометрию формы. Направленные ребра соединяют эти вершины в треугольники, которые по правилу правой руки затем имеют направление, называемое нормалью. Каждый треугольник образует грань сетки. Они являются комбинаторными по своей природе и кодируют топологию формы. В дополнение к треугольникам, более общий класс полигональных сеток также может использоваться для представления формы. Более продвинутые представления, такие как прогрессивные сетки, кодируют грубое представление вместе с последовательностью преобразований, которые производят точное или высокоразрешенное представление формы после применения. Эти сетки полезны в различных приложениях, включая геоморфы, прогрессивную передачу, сжатие сетки и выборочное уточнение. [2]
Одним из особенно важных свойств трехмерной фигуры является ее эйлерова характеристика , которая может быть альтернативно определена в терминах ее рода . Формула для этого в непрерывном смысле имеет вид , где — число связанных компонентов, — число отверстий (как в дырках от бублика, см. тор ), а — число связанных компонентов границы поверхности. Конкретным примером этого является сетка пары брюк . Существует один связанный компонент, 0 отверстий и 3 связанных компонента границы (талия и два отверстия для ног). Таким образом, в этом случае эйлерова характеристика равна -1. Чтобы перенести это в дискретный мир, эйлерова характеристика сетки вычисляется в терминах ее вершин, ребер и граней. .
В зависимости от того, как инициализируется или «рождается» форма, она может существовать только как туманность из выбранных точек, которые представляют ее поверхность в пространстве. Чтобы преобразовать точки поверхности в сетку, можно использовать стратегию реконструкции Пуассона [3] . Этот метод утверждает, что индикаторная функция , функция, которая определяет, какие точки в пространстве принадлежат поверхности формы, на самом деле может быть вычислена из выбранных точек. Ключевая концепция заключается в том, что градиент индикаторной функции равен 0 везде, за исключением выбранных точек, где он равен внутренней нормали поверхности. Более формально, предположим, что набор выбранных точек с поверхности обозначен как , каждая точка в пространстве как , а соответствующая нормаль в этой точке как . Тогда градиент индикаторной функции определяется как:
Задача реконструкции тогда становится вариационной задачей. Чтобы найти индикаторную функцию поверхности, мы должны найти функцию такую, что минимизируется, где — векторное поле, определяемое образцами. В качестве вариационной задачи можно рассматривать минимизатор как решение уравнения Пуассона . [3] После получения хорошего приближения для и значения , при котором точки с лежат на поверхности, подлежащей реконструкции, алгоритм марширующих кубов может быть использован для построения треугольной сетки из функции , которую затем можно применять в последующих приложениях компьютерной графики.
Одна из распространенных проблем, с которой сталкиваются при обработке геометрии, — как объединить несколько видов одного объекта, снятых с разных углов или позиций. Эта проблема известна как регистрация . При регистрации мы хотим найти оптимальное жесткое преобразование , которое выровняет поверхность с поверхностью . Более формально, если — это проекция точки x с поверхности на поверхность , мы хотим найти оптимальную матрицу вращения и вектор трансляции , которые минимизируют следующую целевую функцию:
Хотя вращения в целом нелинейны, малые вращения можно линеаризовать как кососимметричные матрицы. Более того, функция расстояния нелинейна, но поддается линейным приближениям, если изменение мало. Поэтому итеративное решение, такое как итеративное решение ближайшей точки (ICP), используется для решения малых преобразований итеративно, вместо решения потенциально большого преобразования за один раз. В ICP выбираются n случайных точек выборки из и проецируются на . Для того чтобы выборка точек была равномерно случайной по всей поверхности сетки треугольников, случайная выборка разбивается на два этапа: равномерная выборка точек внутри треугольника; и неравномерная выборка треугольников, так что связанная вероятность каждого треугольника пропорциональна его площади поверхности. [4] После этого оптимальное преобразование вычисляется на основе разницы между каждым и его проекцией. В следующей итерации проекции вычисляются на основе результата применения предыдущего преобразования к образцам. Процесс повторяется до сходимости.
При определении или сканировании форм может присутствовать сопутствующий шум, либо к сигналу, действующему на поверхность, либо к фактической геометрии поверхности. Уменьшение шума на первом известно как шумоподавление данных , тогда как уменьшение шума на втором известно как поверхностное сглаживание . Задача геометрического сглаживания аналогична шумоподавлению сигнала и, следовательно, использует схожие подходы.
Соответствующий лагранжиан, подлежащий минимизации, выводится путем записи соответствия исходному сигналу и гладкости результирующего сигнала, который аппроксимируется величиной градиента с весом :
.
Принимая вариацию , испускает необходимое условие
.
Дискретизируя это на кусочно-постоянные элементы с нашим сигналом на вершинах, получаем
где наш выбор выбран для котангенса Лапласа , а член — для отображения образа Лапласа из областей в точки. Поскольку вариация свободна, это приводит к самосопряженной линейной задаче, которую нужно решить с параметром : При работе с треугольными сетками одним из способов определения значений матрицы Лапласа является анализ геометрии связанных треугольников на сетке.
Где и — углы, противоположные краю [5] Матрица масс M как оператор вычисляет локальный интеграл значения функции и часто задается для сетки с m треугольниками следующим образом:
Иногда нам нужно выровнять трехмерную поверхность на плоскость. Этот процесс известен как параметризация . Цель состоит в том, чтобы найти координаты u и v , на которые мы можем отобразить поверхность так, чтобы искажения были минимизированы. Таким образом, параметризацию можно рассматривать как задачу оптимизации. Одним из основных применений параметризации сетки является отображение текстуры .
Один из способов измерения искажения, накопленного в процессе отображения, заключается в измерении того, насколько длина ребер на 2D-отображении отличается от их длин на исходной 3D-поверхности. В более формальных терминах целевая функция может быть записана как:
Где — набор ребер сетки, а — набор вершин. Однако оптимизация этой целевой функции приведет к решению, которое сопоставляет все вершины одной вершине в uv -координатах. Заимствуя идею из теории графов, мы применяем отображение Тутте и ограничиваем граничные вершины сетки единичной окружностью или другим выпуклым многоугольником . Это предотвращает схлопывание вершин в одну вершину при применении отображения. Затем неграничные вершины располагаются в барицентрической интерполяции своих соседей. Однако отображение Тутте по-прежнему страдает от серьезных искажений, поскольку оно пытается сделать длины ребер равными, и, следовательно, не учитывает правильно размеры треугольников на фактической поверхностной сетке.
Другой способ измерения искажения — рассмотреть изменения функций координат u и v . Колебания и искажения, очевидные в методах массовых пружин, обусловлены большими изменениями функций координат u и v . При таком подходе целевая функция становится энергией Дирихле по u и v:
Есть еще несколько вещей, которые следует учесть. Мы хотели бы минимизировать искажение угла, чтобы сохранить ортогональность . Это означает, что мы хотели бы . Кроме того, мы хотели бы, чтобы отображение имело пропорционально схожие по размеру области с оригиналом. Это приводит к установке якобиана функций координат u и v на 1.
Объединив эти требования, мы можем увеличить энергию Дирихле так, чтобы наша целевая функция стала: [6] [7]
Чтобы избежать проблемы отображения всех вершин в одну точку, мы также требуем, чтобы решение задачи оптимизации имело ненулевую норму и было ортогонально тривиальному решению.
Деформация связана с преобразованием некоторой остаточной формы в новую форму. Обычно эти преобразования являются непрерывными и не изменяют топологию формы. Современные методы деформации формы на основе сетки удовлетворяют ограничениям пользователя на деформацию в маркерах (выбранных вершинах или областях на сетке) и распространяют эти деформации маркеров на остальную часть формы плавно и без удаления или искажения деталей. Некоторые распространенные формы интерактивных деформаций — это точечные, скелетные и каркасные деформации. [8] При точечной деформации пользователь может применять преобразования к небольшому набору точек, называемых маркерами, на форме. Деформация на основе скелета определяет скелет для формы, что позволяет пользователю перемещать кости и вращать суставы. Деформация на основе каркаса требует, чтобы каркас был нарисован вокруг всей или части формы, так что когда пользователь манипулирует точками на каркасе, объем, который он охватывает, соответствующим образом изменяется.
Ручки обеспечивают разреженный набор ограничений для деформации: когда пользователь перемещает одну точку, другие должны оставаться на месте.
Поверхность покоя, погруженная в , может быть описана с помощью отображения , где — двумерная параметрическая область. То же самое можно сделать с другим отображением для преобразованной поверхности . В идеале преобразованная форма добавляет как можно меньше искажений к исходной. Один из способов моделирования этого искажения — в терминах смещений с энергией на основе Лапласа. [9] Применение оператора Лапласа к этим отображениям позволяет нам измерить, как изменяется положение точки относительно ее окрестности, что сохраняет ручки гладкими. Таким образом, энергию, которую мы хотели бы минимизировать, можно записать как:
.
Хотя этот метод инвариантен к трансляции, он не может учитывать вращения. Схема деформации As-Rigid-As-Possible [10] применяет жесткое преобразование к каждой ручке i, где — матрица вращения, а — вектор перемещения. К сожалению, нет способа узнать вращения заранее, поэтому вместо этого мы выбираем «лучшее» вращение, которое минимизирует смещения. Однако для достижения локальной инвариантности вращения требуется функция, которая выводит наилучшее вращение для каждой точки на поверхности. Результирующая энергия, таким образом, должна оптимизироваться по обоим и :
Обратите внимание, что вектор перемещения отсутствует в конечной целевой функции, поскольку перемещения имеют постоянный градиент.
Хотя это кажется тривиальным, во многих случаях определение внутренней части из внешней части треугольной сетки является непростой задачей. В общем, при наличии поверхности мы ставим эту задачу как определение функции, которая вернет , если точка находится внутри , и в противном случае.
В простейшем случае форма замкнута. В этом случае, чтобы определить, находится ли точка внутри или снаружи поверхности, мы можем пробросить луч в любом направлении из точки запроса и подсчитать количество раз, которое он проходит через поверхность. Если был снаружи, то луч должен либо не проходить через (в этом случае ), либо каждый раз, когда он входит, он должен проходить через дважды, поскольку S ограничено, поэтому любой входящий в него луч должен выйти. Так что если находится снаружи, четно. Аналогично, если находится внутри, та же логика применима к предыдущему случаю, но луч должен пересечь один дополнительный раз в первый раз, когда он выходит . Итак:
Теперь, часто мы не можем гарантировать, что закрыто. Возьмем пример пары брюк из верхней части этой статьи. Эта сетка явно имеет семантическую внутреннюю и внешнюю части, несмотря на наличие отверстий на талии и штанинах.
Наивная попытка решить эту проблему — испускать много лучей в случайных направлениях и классифицировать как находящиеся внутри, если и только если большинство лучей пересеклись нечетное число раз. Чтобы количественно это определить, предположим, что мы испускаем лучи, . Мы связываем число, которое является средним значением от каждого луча. Следовательно:
В пределе стрельбы многими, многими лучами этот метод обрабатывает открытые сетки, однако для того, чтобы стать точным, требуется слишком много лучей, чтобы этот метод был идеальным с точки зрения вычислений. Вместо этого, более надежный подход — это обобщенное число обмоток. [11] Вдохновленный двумерным числом обмоток , этот подход использует телесный угол в каждого треугольника в сетке, чтобы определить, находится ли он внутри или снаружи. Значение обобщенного числа обмоток в пропорционально сумме вклада телесного угла от каждого треугольника в сетке:
Для замкнутой сетки эквивалентно характеристической функции для объема, представленного . Поэтому мы говорим:
Поскольку это гармоническая функция , она изящно деградирует, то есть сегментация внутри-снаружи не сильно изменится, если мы проделаем отверстия в закрытой сетке. По этой причине обобщенное число обмоток надежно обрабатывает открытые сетки. Граница между внутренней и внешней частью плавно проходит через отверстия в сетке. Фактически, в пределе обобщенное число обмоток эквивалентно методу ray-casting, поскольку число лучей стремится к бесконечности.