10 - 2020

Обзор обновленного набора инструментов для разработки инженерных 3D-приложений C3D Toolkit

Артем Максименко, специалист по маркетингу C3D Labs
Артем Максименко, специалист по маркетингу C3D Labs

Прошедшим летом компания C3D Labs выпустила C3D Toolkit 2020 — новую версию набора инструментов для разработки инженерного программного обеспечения. В релизе были обновлены все пять компонентов: геометрическое ядро C3D Modeler, параметрический решатель C3D Solver, конвертеры данных C3D Converter, модуль визуализации C3D Vision и модуль преобразования полигональных сеток в твердотельные модели C3D B­Shaper. Тесно связанные между собой, они составляют целостное решение для создания настольных, мобильных и облачных 3D­приложений.
В версии 2020 нашли отражение потребности разных софтверных рынков, и сегодня C3D Toolkit предлагает мощный инструментарий как для разработки классических CAD/CAM/CAE­систем, так и для инновационных продуктов в сфере BIM, VR, 3D­сканирования, цифрового производства.
Ключевые приобретения новой версии связаны с поверхностным, твердотельным и листовым моделированием, прямым редактированием 2D­геометрии, 3D­визуализацией, интероперабельностью.

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

В геометрическом ядре C3D Modeler 2020 основной упор сделан на развитие функциональности сложного поверхностного моделирования, которую традиционно относят к «тяжелому» классу. Она открывает путь к решению САПР­задач в авиационной промышленности, двигателе­ и судостроении.

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

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

Рис. 1. Плавные кривые (а); клотоида (б)a

Рис. 1. Плавные кривые (а); клотоида (б)b

Рис. 1. Плавные кривые (а); клотоида (б)

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

Рис. 2. Эквидистантные поверхности

Рис. 2. Эквидистантные поверхности

Функция продления граней теперь работает для нескольких граней одновременно. Разработан метод, позволяющий выполнять слияние гладко стыкующихся граней в одну грань (рис. 3).

Рис. 3. Каждая грань построена на отдельной поверхности (а); грани объединены с помощью общей поверхности (б)a

Рис. 3. Каждая грань построена на отдельной поверхности (а); грани объединены с помощью общей поверхности (б)b

Рис. 3. Каждая грань построена на отдельной поверхности (а); грани объединены с помощью общей поверхности (б)

Что касается скруглений соседних поверхностей, то появился дополнительный способ их создания — с использованием опорной кривой. Радиус такого скругления переменный, он рассчитывается в процессе создания поверхности скругления (рис. 4).

Рис. 4. Исходное тело (а); скругление по опорной кривой (б)a

Рис. 4. Исходное тело (а); скругление по опорной кривой (б)b

Рис. 4. Исходное тело (а); скругление по опорной кривой (б)

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

Рис. 5. Поверхности конического сечения

Рис. 5. Поверхности конического сечения

Доработана операция кинематики: появилась опция По нормали к поверхности и возможность выбора не только эскиза или грани, но и выпуклого тела (Кинематика телом) — рис. 6.

Рис. 6. Кинематика телом (а); кинематика по нормали к поверхности (б)a

Рис. 6. Кинематика телом (а); кинематика по нормали к поверхности (б)b

Рис. 6. Кинематика телом (а); кинематика по нормали к поверхности (б)

Существенные изменения были внесены в операцию Поверхность по сети кривых. Теперь в качестве сетки можно задавать контуры. Для лучшего сопряжения соседних участков изменена внутренняя параметризация поверхности (рис. 7).

Рис. 7. Поверхность по сети кривыхa

Рис. 7. Поверхность по сети кривыхb

Рис. 7. Поверхность по сети кривых

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

Рис. 8. Поверхность по сечениям, купол

Рис. 8. Поверхность по сечениям, купол

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

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

В новой версии ядра C3D Modeler были внесены изменения в работу операции сечения оболочки. Теперь можно управлять продлением режущей поверхности для поверхностей вращения и выдавливания (рис. 9).

Рис. 9. Сечение оболочки продляемой поверхностью​

Рис. 9. Сечение оболочки продляемой поверхностью​

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

Рис. 10. Срединная оболочка

Рис. 10. Срединная оболочка

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

Моделирование листовых тел

C3D Modeler содержит уникальную для геометрических ядер функциональность листового моделирования.

В версии 2020 разработан совершенно новый метод штамповки листового тела другим произвольным телом. Для проведения операции в качестве целевого объекта выбирается листовое тело с имеющейся на нем гранью, и после указания грани с помощью произвольного тела выполняется штамповка (рис. 11).

Рис. 11. Штамповка листового тела другим телом

Рис. 11. Штамповка листового тела другим телом

Добавлена операция сгиба по криволинейным ребрам (рис. 12).

Рис. 12. Сгиб по криволинейным ребрам

Рис. 12. Сгиб по криволинейным ребрам

Преобразование полигональных сеток в B­Rep

Модуль C3D B­Shaper, впервые выпущенный в прошлом году, ожидаемо привлек внимание рынка. Он преобразует тяжелые полигональные модели в твердотельные с граничным представлением (B­Rep) для их оптимального использования (редактирования, отображения и т.д.) в различных 3D­приложениях. Потенциально B­Shaper встраивается в технологии реверс­инжиниринга, BIM, VR, топологической оптимизации.

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

Рис. 13. Примеры дефектов при сборке B-Rep

Рис. 13. Примеры дефектов при сборке B-Rep

В версии 2020 для решения этих и других возможных проблем, с учетом обратной связи от рынка, спроектирован и уже реализован новый упрощенный режим построения модели B­Rep: в случае, если из­за погрешностей входных данных и неточности распознавания не удается построить общее ребро между соседними гранями, будут построены граничные ребра. Применение упрощенного режима для всех преобразований недопустимо, однако в ряде случаев, например для задач визуализации, использование данного варианта построения является вполне приемлемым (рис. 14).

Рис. 14. Результат работы упрощенного режима построения B-RepРис. 14. Результат работы упрощенного режима построения B-Rep

Рис. 14. Результат работы упрощенного режима построения B-Rep

Иной подход, который сейчас разрабатывается, — это увязка параметров распознанных поверхностей между собой через наложение системы ограничений (равенство радиусов, соосность, касание и т.д.). Удовлетворение этой системы ограничений будет обеспечивать качественный результат построения модели B­Rep. Для осуществления данного подхода предполагается применение параметрического решателя C3D Solver в связке с B­Shaper (рис. 15).

Рис. 15. Примеры преобразования: исходная сетка — 24 000 полигонов, результат — 2300 граней (а); исходная сетка — 42 000 полигонов, результат — 2200 граней (б)a

Рис. 15. Примеры преобразования: исходная сетка — 24 000 полигонов, результат — 2300 граней (а); исходная сетка — 42 000 полигонов, результат — 2200 граней (б)b

Рис. 15. Примеры преобразования: исходная сетка — 24 000 полигонов, результат — 2300 граней (а); исходная сетка — 42 000 полигонов, результат — 2200 граней (б)

Прямое 2D­редактирование геометрии

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

Другие доработки C3D Solver

Вторая доработка является рефакторингом решателя и касается формулировки внутренней системы уравнений. Напоминаем, что упомянутая выше формулировка — это конвертер задачи, созданной в терминах API, в математическое описание. Теперь этап формулировки отложен на момент первого запроса на вычисление. Этим мы освободили функции вызовов от зависимости от внутренних тяжеловесных структур данных и распараллелили их. Отложенный этап формулировки предоставляет больше данных для генерации систем уравнений, благодаря чему, в частности, повысилась точность гладкой стыковки (рис. 16).

Рис. 16. Отложенная формулировка

Рис. 16. Отложенная формулировка

Оптимизирована работа больших интерполяционных сплайнов с огромным количеством точек: использовано свойство NURBS по локализации зон влияния. Благодаря этому появляется разреженность в графе ограничений, а скорость решения становится близка к линейной (рис. 17).

Рис. 17. Интерполяционный сплайн

Рис. 17. Интерполяционный сплайн

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

Интероперабельность

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

В модуле конвертации данных C3D Converter 2020 реализовано чтение атрибутов из формата JT за счет доступа к метаданным данных файлов и организована передача контрольных характеристик моделей (объем, площадь поверхности, плотность и масса) в форматах STEP и JT.

Сетки в C3D и JT устроены по­разному, и раньше C3D Converter мог быстро записывать только сетки без топологии. В результате глубокой переработки алгоритма преобразования сеток в новой версии конвертеров передача топологии сочетается с быстродействием экспорта в формат JT. В качестве приятного дополнения к результату рефакторинга кода также появилась возможность диагностики качества сеток (рис. 18).

Рис. 18. Экспорт в формат JT

Рис. 18. Экспорт в формат JT

Рис. 18. Экспорт в формат JT

Расширяется чтение PMI в импортируемых 3D­моделях: добавлено чтение внедренных в формат JT шрифтов, что позволяет корректно отображать все PMI­данные. Также решена задача передачи PMI через формат C3D путем маркировки геометрических объектов PMI специальными атрибутами и предоставления пользователям возможностей по подстановке шрифтов — в первую очередь для формата STEP (сам формат C3D работу со шрифтами не поддерживает) — рис. 19.

Рис. 19. Чтение внедренных в JT шрифтов

Рис. 19. Чтение внедренных в JT шрифтов

Большая работа проведена в области диагностики и лечения дефектов импорта. Среди основных направлений — лечение самопересечений в циклах. Реализовано чтение атрибутов из формата JT за счет доступа к метаданным данных файлов, организована передача контрольных характеристик моделей (объем, площадь поверхности, плотность и масса) в форматах STEP и JT.

3D­визуализация

Разработанный для инженерных 3D­приложений движок C3D Vision в первую очередь нацелен на точность отображения геометрических построений и высокую производительность при работе с большими моделями.

В версии 2020 модуля визуализации C3D Vision появился фильтр событий от физических устройств, основной задачей которого является конвертация представления GUI­событий в формат Vision. Разработчикам удалось добиться синхронизации обновления отрисовки сцены с отработкой события. Например, при сдвиге мыши и повороте всей сцены обновление кадра происходит после его подготовки, что обеспечивает плавность отрисовки при любых манипуляциях с объектами или со сценой. Кроме того, теперь пользователь при создании своих процессов имеет возможность назначить те источники событий, которые необходимы в каждом конкретном случае (рис. 20).

Рис. 20. Порядок взаимодействия реализаций GUI и C3D Vision

Рис. 20. Порядок взаимодействия реализаций GUI и C3D Vision

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

Рис. 21. Простые геометрические объекты в инструментах и указателях

Рис. 21. Простые геометрические объекты в инструментах и указателях

В C3D Vision 2020 появились новые геометрические представления: маркеры и значки, в частности геометрические иконки на базе изображений различных форматов, символьные и часто используемые значки. Разработан стандартный набор маркеров для обозначения ограничений (рис. 22).

Рис. 22. Способы отрисовки маркеров

Рис. 22. Способы отрисовки маркеров

Рис. 23. Отрисовка каркасом куба и цилиндра при общем режиме отрисовки «полутон» (а); 
отключение видимости передних граней (б)a

Рис. 23. Отрисовка каркасом куба и цилиндра при общем режиме отрисовки «полутон» (а); 
отключение видимости передних граней (б)b

Рис. 23. Отрисовка каркасом куба и цилиндра при общем режиме отрисовки «полутон» (а);
отключение видимости передних граней (б)

Проведены масштабные расширения возможностей для геометрических объектов (рис. 23):

  • ScreenPlaneOnly позволяет ориентировать положение геометрии в плоскости экрана;
  • NoScalable дает возможность задавать геометрию сегмента немасштабируемой;
  • DoubleSidedLighing обеспечивает назначение определенной геометрии двустороннего освещения независимо от общего освещения сцены;
  • RenderMode позволяет отобразить выбранную геометрию в определенном режиме (тон, полутон, каркас и т.д.);
  • SectionPlanes дает возможность назначить сечение геометрии плоскостью выбранных сегментов;
  • FaceCulling необходим для оптимизации отрисовки сложной геометрии, позволяет не рисовать полигоны выбранного сегмента.

Доработан инструмент выбора геометрических объектов с помощью рамки: добавлена возможность выделения как объединяющей, так и секущей рамками, а также их совокупностями — слева направо и справа налево. Появилась возможность масштабирования рамкой (рис. 24).

Рис. 24. Масштабирование рамкой (слева — до масштабирования, справа — после)

Рис. 24. Масштабирование рамкой (слева — до масштабирования, справа — после)

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

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

Впервые реализованы интерактивные инструменты типа манипуляторов. Базовый класс манипуляторов называется SceneWidget — он применяется как отдельно, так и в составе процессов редактирования объектов. Среди разработанных манипуляторов:

  • активный манипулятор Hot­point, виджет с определенным представлением и поведением;
  • манипуляторы направления, реализующие сдвиг по указанной оси;
  • манипуляторы поворота, обеспечивающие вращение вокруг осей.

Всего в C3D Toolkit 2020 насчитываются десятки новых разработанных методов, сотни улучшений и доработок имеющихся команд. Хотите узнать о них подробнее? Смотрите запись онлайн­презентации на нашем youtube­канале youtube.com/c3dlabs.