В настоящее время я пытаюсь реализовать крах половинного края, чтобы выполнить инкрементное ремеширование. Я имею дело с многообразием сетки. Рассмотрим следующую простую сетку:Half-Edge Collapse
Цель состоит в том, чтобы свернуть в б.
В этом случае, однако, это приводит к не-коллектору сетки
, который я хочу, чтобы предотвратить. Мой вопрос:
Как это сделать заблаговременно, т. Е. Выполнить проверку перед свертыванием, безопасна ли операция коллапса?
Я пробовал критерии (условие связи) из Hoppe, но оба выполняются так, как кажется. Кроме того, единственное пересечение однокольца a и b является c, таким образом, только одна точка, поскольку она является граничным ребром.
И вообще, какие еще проверки необходимо выполнить, чтобы избежать незаконного срыва?
Прямо сейчас, у меня есть следующие критерии:
- если а и Ь граничные вершины, то ребро АВ должно быть граничным
- а, б и третья вершина треугольника, прилегающих к edge ab должен быть допустимым треугольником (условие связи)
- Если треугольники, прилегающие к краю ab, являются граничными треугольниками, не сжимайте, если a находится на граничном краю
- , если пересечение a-1-ring и b- 1-кольцо не равно двум (или одному для граничных ребер), не разрушится
Спасибо за ответ, прошло некоторое время с тех пор, как я разместил этот вопрос.Пример должен был быть просто 2d, причем все вершины, кроме 'c', являются граничными вершинами. Просто быстро пройдя условие: 'однокольцо (a) = {b, c, d}, однокольцо (b) = {a, c, e}, однокольцо (ab) = {c}' , что означало бы «однокольцо (а) пересекалось однокольцо (b) = {c} = однокольцо (ab)», поэтому условие было бы выполнено, даже если bcd сложен, правильно? – peacer212
Да, в этом случае условие связи должно быть выполнено, даже если есть геометрическая складка. Дело в том, что условие предназначено только для сохранения топологии без изменения геометрических артефактов. Чтобы предотвратить сгибание треугольника, я думаю, вам нужно либо подтолкнуть затронутые вершины вокруг, например. пересчитайте vert c как некоторую взвешенную сумму своего однокольца или действительно задержите сбрасывание тех ребер, которые повлекут за собой большую деформацию – danielyan86129
(это также работает с каркасом краев, или сетью с прореживанием, используя геометрические ошибки, чтобы дать каждому краевому сокращению приоритет). Я также работаю над чем-то похожим, но геометрическое искажение не вызывает беспокойства, так как я только обрушиваю край длины 0. Надеюсь, что это обсуждение поможет. – danielyan86129