15.11.2023

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

Евгений Кондратюк представляет обзор возможностей геометрического ядра C3D в области прямого моделирования, или прямого редактирования.

Геометрическое ядро C3D обладает функционалом, который позволяет работать с моделями без истории построения. Например, теми, которые были получены из импорта, или теми, у которых нет истории по каким-либо другим причинам. Такой функционал предусмотрен для работы непосредственно с гранями тела — либо с отдельными, либо с группами. В ядре C3D имеются такие опции, как удаление граней, очистка скруглений, отделение части тела, выступающих фичерсов, замена гладко стыкующихся граней одной гранью, замена одной грани сплайн-поверхностью для последующих модификаций и других действий, удаление вершин на открытых оболочках. Отдельный блок отвечает за модификацию граней — параллельное перемещение, перемещение грани по нормали, вращение грани относительно некоторой заданной оси и изменение радиуса скругления. Рассмотрим иллюстрации, демонстрирующие содержание данного функционала.

Первая функция — удаление граней с сохранением целостности тела.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 1
Рис. 1

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

На следующем рисунке представлен еще один пример работы данного функционала.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 2
Рис. 2

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

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

Прямое моделирование: изменение топологии и адаптация скруглений, фото 3
Рис. 3

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

Далее следует пример комплексного применения очистки скруглений и удаления граней из профиля.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 4
Рис. 4

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

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

Прямое моделирование: изменение топологии и адаптация скруглений, фото 5
Рис. 5

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

Прямое моделирование: изменение топологии и адаптация скруглений, фото 6
Рис. 6

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

Остановимся еще на одном примере перемещения поверхности по нормали.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 7
Рис. 7

Справа отражено, как адаптируются скругления. Слева — результат наших усилий по изменению топологии модели при модификациях прямого редактирования. Так, нам удалось переместить грань за пределы прилегающих скруглений.

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

Прямое моделирование: изменение топологии и адаптация скруглений, фото 8
Рис. 8

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

Следующая функция — это перемещение поверхности грани параллельно себе.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 9
Рис. 9

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

Отдельного внимания стоит новый функционал геометрического ядра C3D. Опция вращения поверхности грани относительно какой-либо оси изначально была разработана в качестве аналога операции «уклон» для одной грани, но работает и на группах граней.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 10
Рис. 10

Она подходит для некоторых цилиндрических деталей — пазы и петли можно вращать вокруг центра. Здесь также работает адаптация скруглений.

Кроме того, возможно изменение радиуса скругления.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 11
Рис. 11

На рисунке справа изменение радиуса продемонстрировано на цепочке состыкованных скруглений. Слева — на скруглении с переменным радиусом — это центральное скругление. Примеры подтверждают, что можно реализовать даже такие нестандартные сценарии.

Обратимся к проблеме замены гладко стыкующихся граней одной гранью.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 12
Рис. 12

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

Вариант предыдущего функционала — замена одной грани сплайн-поверхностью.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 13
Рис. 13

На примере мы видим, что верхняя грань была заменена на NURBS-поверхность и далее модифицирована произвольным образом для демонстрации.

Не менее важная функция — это удаление вершин.

Прямое моделирование: изменение топологии и адаптация скруглений, фото 14
Рис. 14

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

Подытожим, какие усовершенствования были внесены в данную версию геометрического ядра C3D:

  • разработан функционал поворота граней;
  • для операции «уклон» сделана адаптация скруглений методами прямого редактирования;
  • стала доступна адаптация скруглений по кривой, скруглений переменного радиуса, скруглений по закону;
  • добавлена возможность менять топологию в отдельных сценариях;
  • сделаны общие улучшения в алгоритмах адаптации скруглений, в том числе около швов и полюсов.

В дальнейшем мы планируем продолжить работу над изменением топологии во всех операциях с гранями, то есть в перемещении по нормали, перемещении в произвольном направлении, в поворотах. Мы намерены добавить новую опцию — замену грани произвольно заданной поверхностью. Кроме того, планируем расширить возможности адаптации сложных скруглений переменного радиуса, таких как — скругления по закону, скругления эллипсом. Еще одна задача — удаление и адаптация скруглений, слитых из нескольких частей. Также прямо сейчас ведется работа по унификации API в связи с тем, что функционал растет и имеющийся API уже не может охватить весь набор возможностей. API будет унифицирован в соответствии со стандартами компании C3D Labs, и в качестве подзадачи в него будет включено управление точностью построений и операций.

Евгений Кондратюк. Математик-программист. C3D Labs
Автор:
Евгений Кондратюк
Математик-программист
C3D Labs
Поделиться материалом
Вверх