05.11.2024 • C3D Modeler

Тенденции в развитии геометрического ядра C3D Modeler

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

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

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

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

Расширение команды разработки геометрического ядра C3D Modeler, согласно статистическим данным, составило более чем 50 % по отношению к 2022 году. По отношению к 2020 году рост еще более впечатляющий: число специалистов увеличилось более чем в два раза. Также команда разработки претерпела ряд структурных изменений. Были явно выделены два новых направления — полигональное моделирование и прямое моделирование. Соответственно, появились две новые команды с закрепленными зонами ответственности, что, в свою очередь, позволило оставшимся специалистам сконцентрироваться непосредственно на базовом функционале ядра.

Тенденции в развитии геометрического ядра C3D Modeler, фото 1
Рис. 1

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

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

Рассмотрим пример. Имеются две поверхности, и требуется сшить в единую оболочку грани, которые созданы на основе этих двух поверхностей. Задача кажется довольно простой, когда у поверхностей есть пересечения. Если пересечений нет, ее можно решить, если продлить эти поверхности и найти пересечение. Но в большинстве случаев, когда поверхности близки к касанию, пересечения в общепринятом понимании может не быть вовсе. Тогда, чтобы сконструировать ребро, нужно ассоциировать некую толерантность с этим ребром. Это устраняет конфликт между топологией и геометрией, что, в результате, дает возможность создать топологически корректную модель.

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 2
Рис. 2

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

Одним из выходов из этой ситуации является использование в операциях другого, нового, объекта, который обладает данными как о геометрии кривых, так и о толерантностях. Таким объектом в составе геометрического ядра C3D Modeler является трехмерный проволочный каркас MbWireFrame.

Тенденции в развитии геометрического ядра C3D Modeler, фото 3
Рис. 3

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 4
Рис. 4

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

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 5
Рис. 5

Особое значение имеет развитие ядра в направлении сложного поверхностного моделирования, которое можно проследить на примере операции кинематики с динамически изменяемым сечением. Это новая операция в составе ядра, которая появилась относительно недавно. Ее главная особенность заключается в том, что возможность формировать и изменять сечения передана на сторону пользователя. Это позволяет создавать достаточно гибкие и интересные сценарии для формирования сложных форм в рамках одной операции. Так, например, один из пользователей C3D Modeler использовал другой компонент C3D Toolkit — C3D Solver — для того, чтобы управлять параметрами образующей. При этом на образующую могут быть наложены совершенно разные ограничения — на линейный размер, на радиальный размер, на сопряжение касательности, перпендикулярности, но самым важным ограничением является возможность связи образующей с внешними объектами — кривыми или поверхностями.

Тенденции в развитии геометрического ядра C3D Modeler, фото 6
Рис. 6

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 7
Рис. 7

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 8
Рис. 8

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 9
Рис. 9

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

Тенденции в развитии геометрического ядра C3D Modeler, фото 10
Рис. 10

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

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

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

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

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