Повторное создание сетки поверхности, сохраняя при этом точное положение граничных вершин и подсчет в Python (предпочтитPython

Программы на Python
Anonymous
Повторное создание сетки поверхности, сохраняя при этом точное положение граничных вершин и подсчет в Python (предпочтит

Сообщение Anonymous »

У меня есть сетка триангулированной поверхности на Python (PyVista Polydata) и набор заранее определенных граничных точек — четыре упорядоченных массива, определяющих передний край, задний край, корень и кончик. Я хочу перестроить сетку поверхности так, чтобы
  • Выходная сетка имела те же входные граничные точки, что и ее граничные вершины, поэтому сетка с измененной поверхностью должна иметь то же положение, количество и порядок предварительно определенных граничных точек.
  • Внутренние вершины перераспределяются равномерно по поверхности (алгоритм должен автоматически определять количество внутренних вершин на основе граничных точек). count)
  • После вставки к граничным вершинам никогда не применяются операции очистки или сварки.
  • Индексы вершин от 0 до N-1 в выходных данных всегда являются граничными точками в порядке ввода — это должно быть согласовано для нескольких сеток одного и того же крыла в разных состояниях деформации.
Базовая сетка с целью вершины, то есть входные данные для сценария/алгоритма/функции изменения сетки.
Мой текущий подход использует разделение ребер для вставки граничных точек в сетку с последующим сглаживанием по Лапласу с замораживанием граничных вершин. Проблема в том, что decimate_pro и clean() после сглаживания схлопываются близлежащие граничные вершины, уменьшая количество границ.
Я пробовал:
  • Вставка граничных точек путем разделения ребер. Он работает, но метод clean() после сглаживания объединяет вершины с близкими границами.
  • Добавляет новые вершины и перестраивает грани, но метод clean() по-прежнему объединяет их.
  • Полностью пропускает метод clean(), но оставляет сетку, не являющуюся многообразием, которую последующие инструменты отвергают
Вопрос: Существует ли стандартный алгоритм или библиотека (libigl, Trimesh, привязки CGAL Python и т. д.), который поддерживает ограниченное повторное создание сетки/обертывание поверхностей, где граничные вершины рассматриваются как жесткие ограничения (фиксированные в положении и количестве), в то время как внутренняя часть свободно перерисовывается до целевой плотности?
Минимальный воспроизводимый пример и ожидаемый результат: входная сетка с 850 граничными вершинами → выходная сетка ровно с 850 граничными вершинами в одинаковых положениях, всего около 50 000 вершин, многообразие, без самопересечений.

Вернуться в «Python»