19.10.2026 • C3D Modeler

Геометрическое ядро C3D Modeler: обзор новинок

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

Каркасное моделирование

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

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

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

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

Геометрическое ядро C3D Modeler: обзор новинок, фото 1
Рис. 1. Эквидистанта по набору граней

Операция проецирования каркаса также получила возможность принимать на вход каркас и корректно обрабатывать ситуации наличия локальных толерантностей в геометрической модели, на которую выполняется проецирование (рис. 2). Дополнительно добавлена опция выполнения построения в случаях, когда направление проецирования ортогонально относительно нормали к грани.

Геометрическое ядро C3D Modeler: обзор новинок, фото 2
Рис. 2. Проецирование каркаса

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

Геометрическое ядро C3D Modeler: обзор новинок, фото 3
Рис. 3. Усечение оболочки каркасом

Поверхностное моделирование

В области поверхностного моделирования основные усилия были сосредоточены на операции построения скруглений наборов несвязанных граней (рис. 4). Эта операция обладает широким набором возможностей:

  • несколько способов задания радиуса скругления,
  • выбор формы сечения: дуга окружности или коническая кривая,
  • различные опции задания сопряжения к наборам опорных граней,
  • использование при построении поверхности алгоритма прокатки шарика или движения диска вдоль направляющей кривой,
  • несколько способов обработки боковых ребер построенных граней скругления,
  • возможность оставить опорные грани как есть, подрезать скруглением либо подрезать и сшить со скруглением.
Геометрическое ядро C3D Modeler: обзор новинок, фото 4
Рис. 4. Скругление граней

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

Одним из последних улучшений стали новые способы задания радиуса поверхности скругления. Первый способ заключается в построении поверхности скругления по заданным граничным кривым (рис. 5), расположенным на опорных гранях. Этот метод поддерживается как для метода прокатки шарика, так и для метода движения диска.

Геометрическое ядро C3D Modeler: обзор новинок, фото 5
Рис. 5. Способы задания радиуса: по граничным кривым

Второй способ позволяет строить скругление с обеспечением касания к третьей группе несвязанных граней (рис. 6). При этом грани третьей группы не обязательно должны стыковаться касательно. Данный вариант также реализован для обоих указанных методов построения поверхности.

Геометрическое ядро C3D Modeler: обзор новинок, фото 6
Рис. 6. Способы задания радиуса: касание третьей грани

Третий способ предусматривает задание обобщенной функциональной зависимости изменения радиуса вдоль направляющей кривой (рис. 7). Для этого пользователь задает одномерную скалярную функцию. В качестве такой функции может использоваться, например, линейная или кубическая.

Геометрическое ядро C3D Modeler: обзор новинок, фото 7
Рис. 7. Способы задания радиуса: функциональный закон

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

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

Геометрическое ядро C3D Modeler: обзор новинок, фото 8
Рис. 8. Специальные опции в скруглениях

Твердотельное моделирование

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

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

Значительный прогресс достигнут в операциях построения скруглений ребер с постоянным и переменным радиусом (рис. 9). Команда разработки ядра устранила целый класс проблем, связанных с гладкостью стыковки полученных скруглений как с опорными гранями, так и с соседними гранями скруглений.

Геометрическое ядро C3D Modeler: обзор новинок, фото 9
Рис. 9. Скругление ребер

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

Системные работы и оптимизация

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

К числу оптимизационных работ относится устранение избыточного копирования поверхностей при построении кривых пересечения. Кроме того, были оптимизированы процессы хранения NURBS-кривых и NURBS-поверхностей. В результате на ряде моделей удалось добиться сокращения размера до 40 %, что является существенным улучшением. Работы в этом направлении продолжаются и будут активно развиваться в течение текущего года.

Были выполнены доработки, связанные со слиянием атрибутов при объединении и сшивке граней. Отдельного упоминания заслуживает изменение именования примитива объекта MbMesh. По этому вопросу опубликована отдельная статья в блоге C3D Labs.

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

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

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

Планы развития ядра

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

Мы будем и дальше оптимизировать использование общих данных в операциях ядра, чтобы уменьшить размеры моделей как в оперативной памяти, так и на диске.

Еще одним важным направлением станет унификация работы ядра в различных средах. Одновременно будут совершенствоваться базовые операции ядра. В частности, запланирован ряд задач, связанных с продлением NURBS-поверхностей с различными опциями.

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

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

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

Андрей Туманин, руководитель отдела разработки C3D Modeler, к.т.н., C3D Labs
Андрей Туманин
руководитель отдела разработки C3D Modeler, к.т.н.,
C3D Labs
Поделиться материалом
Вверх