isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

3 октября 2025

C3D PolyShaper: современные возможности и перспективы развития

Александр Лонин, руководитель группы полигонального моделирования C3D Labs

Александр Лонин


В статье рассказывается о функциональности и перспективах развития модуля C3D PolyShaper. Рассматриваются методы создания и обработки полигональных объектов, новые алгоритмы сшивки и улучшения в триангуляции, а также диагностика и исправление дефектов сеток. Автор делится планами по реверс-инжинирингу органических форм, работе с неявными поверхностями и учету неманифолдности в булевых операциях.

В этом году мы консолидировали все наработки по полигональному моделированию, результатом чего стал новый модуль в составе C3D Toolkit — C3D PolyShaper. Этот модуль официально зарегистрирован в реестре отечественного программного обеспечения. Он представляет собой набор классов и функций для работы с полигональными объектами и топологией. Рассмотрим текущую функциональность модуля, направления разработки и перспективы дальнейшего развития.

Полигональный объект с топологией может быть получен несколькими способами: путем конвертации из ранее существовавшего объекта MbMesh, считыванием данных из файлов форматов JT, STL и OBJ, созданием на основе параметрической оболочки или построением вручную. При чтении данных из файла необходимо восстановить топологическую информацию — другими словами, выполнить сшивку модели. Алгоритм сшивки был усовершенствован и теперь способен обрабатывать случаи с совпадающими треугольниками, что особенно актуально при работе с моделями строительных конструкций.

C3D PolyShaper

Рис. 1. Сшивка с совпадающими треугольниками

Рассмотрим пример (рис. 1): два параметрических куба, совпадающих по одной грани, после линеаризации и сохранения в формате STL превращаются в набор треугольников, часть из которых полностью совпадает. Обновленный алгоритм сшивки корректно обрабатывает такие ситуации, распознает совпадения и формирует два отдельных полигональных объекта с корректной топологией.

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

C3D PolyShaper

Рис. 2. Создание из параметрической оболочки

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


C3D PolyShaper

а)

C3D PolyShaper

б)


C3D PolyShaper

в)

C3D PolyShaper

г)


C3D PolyShaper

д)

C3D PolyShaper

е)


Рис. 3. Профилактика дефектов сетки

Характерный пример демонстрирует возможности этого алгоритма на искусственно созданной оболочке. Несмотря на то что геометрически она корректна (рис. 3, а), поверхность содержит зоны с заметными расхождениями изолиний (рис. 3, б). На верхнем и боковом ребрах можно наблюдать различие как в числе, так и в распределении изолиний между сопрягаемыми поверхностями (рис. 3, в, г). Результаты работы двух алгоритмов наглядно сравнимы: прежний метод приводит к возникновению складок и углублений в местах сшивки, в то время как новый позволяет избежать этих дефектов за счет более точного учета геометрических особенностей (рис. 3, д, е).

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

C3D PolyShaper

Рис. 4. Построение нормалей

Предусмотрены и другие алгоритмы обработки. Например, возможно вычисление нормалей (рис. 4), определение кривизны (рис. 5), а также предварительная сегментация по геометрическим признакам — с выделением плоских, цилиндрических и других характерных участков, что особенно актуально при решении задач реверс-инжиниринга.

C3D PolyShaper

Рис. 5. Расчет кривизны

C3D PolyShaper

Рис. 6. Обрезка плоскостью

C3D PolyShaper

Рис. 7. Вписывание поверхностей

Дополнительно реализована возможность обрезки полигональных объектов произвольной плоскостью (рис. 6). Еще одна функция — вписывание различных типов поверхностей, среди которых — сплайновые NURBS-поверхности, аналитические примитивы (например, конус), а также поверхности вращения и выдавливания. При наличии подходящей геометрии возможно автоматическое построение замкнутых NURBS-поверхностей (рис. 7). Пользователь указывает направление параметризации (по координатам U/V), что позволяет варьировать форму вписываемых поверхностей (рис. 8).

C3D PolyShaper

Рис. 8. Контроль направления UV для NURBS-поверхности

Для улучшения качества геометрии реализованы алгоритмы сглаживания (рис. 9, а-в). Различные методы дают разные результаты: один из них сохраняет форму объекта, другой более активно устраняет локальные неровности. Выбор метода зависит от задачи.

C3D PolyShaper

а)

C3D PolyShaper

б)

C3D PolyShaper

в)


Рис. 9. Сглаживание сеток

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

C3D PolyShaper

Рис. 10. Сглаживание сеток

C3D PolyShaper

Рис. 11. Триангуляция контура

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

C3D PolyShaper

а)

C3D PolyShaper

б)


Рис. 12. Триангуляция контура

C3D PolyShaper

Рис. 13. Обрезка полилинией

Рассмотрим пример: исходные данные представлены в виде сканированных данных и грубой красной полилинии (рис. 13). Пользователь может сохранить либо внешнюю, либо внутреннюю часть контура. Предположим, сохраняется внутренняя часть — далее ее можно использовать, например, для нарезки сечений с помощью набора параллельных плоскостей (рис. 14). Это необходимо для построения лофт-поверхности в задачах реверс-инжиниринга.

C3D PolyShaper

Рис. 14. Сечение плоскостью

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

C3D PolyShaper

Рис. 15. Ремешинг

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

C3D PolyShaper

Рис. 16. Анализ драпируемости

Большое внимание было уделено анализу драпируемости. Были реализованы новые возможности, включая учет приоритетных областей (например, зеленая зона на изображении справа на рис. 16). Анализ показал, что при таком подходе можно добиться лучшего результата драпировки, особенно в нижней части модели.

C3D PolyShaper

Рис. 17. Анализ драпируемости развертки

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

C3D PolyShaper

Рис. 18. Детектирование складок

C3D PolyShaper

Рис. 19. Детектирование зазоров

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

C3D PolyShaper

а)

C3D PolyShaper

б)


Рис. 20. Ускорение построения контура пересечения сеток

Значительная работа проведена по улучшению булевых операций на сетках. В первую очередь они были существенно ускорены (рис. 20). Например, при работе с двумя идентичными триангуляциями, сдвинутыми друг относительно друга, формируется сложная линия пересечения. Современный алгоритм справляется с вычитанием двух таких сеток (по 2 миллиона треугольников каждая) менее чем за 10 секунд. Более точный учет топологии позволил корректно обрабатывать случаи, ранее приводившие к сбоям (рис. 21).

C3D PolyShaper

Рис. 21. Топологическая оптимизация булевых операций

Реализована поддержка булевых операций для незамкнутых оболочек. Пример: если исходные объекты имеют частично обрезанные поверхности, результат операции остается идентичным исходному варианту с полной геометрией при условии совпадения области пересечения (рис. 22–23).

C3D PolyShaper

Рис. 22. Булевы операции с незамкнутыми сетками

C3D PolyShaper

Рис. 23. Булевы операции с незамкнутыми сетками

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

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

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


Все права защищены. © 2004-2025 Группа компаний «ЛЕДАС»

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