Modeler, Solver, Converter и новый Vision от C3D Labs. Обновление линейки программных продуктов для разработчиков инженерного ПО
Ежегодно компания C3D Labs представляет вниманию широкой аудитории обновленную версию своего флагманского продукта — геометрического ядра C3D, которое в этом году отмечает «круглую» дату. Продукт интеллектуального творчества российских математиков достиг зрелого возраста в 20 лет и за годы своего существования успел вырасти из геометрической основы популярной отечественной системы трехмерного моделирования КОМПАС3D в полноценное коммерческое решение, которым пользуются два десятка организаций, предприятий и вузов по всему миру. Вместе с геометрическим ядром группа АСКОН параллельно развивала и другие математические компоненты, которые со временем созрели для выделения в самостоятельные модули (рис. 1).
Рис. 1. Ядро C3D для разработчиков инженерного ПО
Коллектив C3D Labs считает, что пришла пора представить свету «кровных братьев» геометрического ядра C3D и отпустить их в свободное плавание по просторам САПР. Итак, параметрическое ядро C3D Solver и модуль конверторов C3D Converter, а также их младшая сестра — визуализация C3D Vision. Младшая, но не менее важная! С этого момента на рынке 3Dрешений становится доступным целое семейство программных компонентов C3D для разработки CAD, CAM и CAEсистем. Причем все они могут быть лицензированы и использованы как по отдельности, так и в составе максимально полной комплектации ядра — C3D Toolkit. Разработчики программного обеспечения сами выбирают, какая комбинация из различных модулей C3D им больше всего подходит. А для тех организаций, которые являются членами Open Design Alliance (ODA) и работают с DWGфайлами либо желают использовать готовый просмотрщик CADданных в разрабатываемых ими приложениях, предусмотрены дополнительные модули, решающие поставленные задачи, — C3D Modeler for Teigha и C3D Viewer. Но обо всем по порядку.
C3D Modeler 2016
В течение всего прошлого года команда C3D Labs принимала от пользователей ядра обращения в службу ServiceDESK, в которых они высказывали свои пожелания по доработке и улучшению геометрических функций C3D. Параллельно шли запросы на тестирование C3D Modeler, часто также сопровождаемые интересными вопросами по функционалу. Исходя из этого при учете собственных планов C3D Labs по развитию ядра был сформирован перечень приоритетных задач для реализации в новой версии C3D.
Рис. 2. Руководство пользователя C3D
Рис. 3. Учебник Николая Голованова по геометрическому моделированию
Учитывая сложность некоторых функций 2D и 3Dмоделирования и разветвленную структуру API C3D, первостепенной задачей являлось создание детального руководства пользователя C3D (рис. 2). Документ занимает отдельную нишу между технической документацией на API и теоретической частью, представленной в книге по геометрическому моделированию (рис. 3). В руководстве пользователя дано подробное описание операций и объектов ядра с большим количеством иллюстративного материала, благодаря чему разработчики могут изучить особенности выполнения различных операций в C3D Modeler 2016, не вдаваясь глубоко в математические аспекты его работы. Для более удобной отладки и тестирования приложений был расширен список поставляемых с дистрибутивом 3Dмоделей, причем большая их часть копирует примеры из руководства, что позволяет разрабатывать ПО на C3D еще быстрее!
Рис. 4. Обечайка до сегментации
Рис. 5. Обечайка после сегментации с одинаковым количеством сегментов
Рис. 6. Обечайка после сегментации с разным количеством сегментов
Рис. 7. Плоская штамповка
Рис. 8. Сферическая штамповка
Разумеется, мы не забыли о новых функциях геометрического ядра C3D. Построение обечайки теперь может быть выполнено путем сегментирования участков. Такая обечайка более технологична, и для ее изготовления на предприятии может применяться гораздо более простое оборудование. Сегментируются участки, натянутые на дугу и вторую дугу, отрезок или точку (рис. 4). Количество сегментов задается одновременно для всех участков (рис. 5) или для каждого участка в отдельности (рис. 6). Вместе с тем была улучшена операция штамповки, которая раньше была доступна только в плоскодонном исполнении (рис. 7), а теперь позволяет работать еще и со сферической штамповкой (рис. 8).
Сегодня ряд российских и зарубежных компаний создают на базе C3D автоматизированные системы подготовки управляющих программ для станков с ЧПУ, поэтому C3D Labs стремится максимально адаптировать геометрическое ядро для использования в CAMсистемах. Обновленный C3D Modeler способен находить токарные оси в незамкнутых телах и строить токарные сечения, а также рисовать силуэтные линии при вращении поверхности вокруг оси (рис. 9). Существенной доработке подверглись операции сечения тел плоскими кривыми (рис. 10) и поверхностями (рис. 11) с сохранением всех частей тела.
Рис. 9. Силуэтные линии при вращении поверхности вокруг оси
Рис. 10. Резка тела плоской кривой
Рис. 11. Резка тела поверхностью
Рис. 12. Заметание тела по направляющей
Рис. 13. Вращение контура вокруг оси на заданный угол
Рис. 14. Выдавливание контура с параметрами 250 и 150
В C3D Modeler 2016 реализован новый тип построения операций выдавливания, вращения и заметания для тел — по направляющей (рис. 12). При построении выдавливания и вращения для контуров по параметрам (рис. 13) появилась возможность задавать их отрицательные значения и получать тела, полностью лежащие в одном направлении. При этом отрицательный параметр интерпретируется как положительный, но в обратном направлении (рис. 1416). Стоит также отметить, что плоские контуры теперь могут быть выдавлены вплоть до поверхностей, лежащих в одном направлении (рис. 17).
Рис. 15. Выдавливание контура с параметрами 250 и –150
Рис. 16. Выдавливание контура с параметрами 250 и –400
Рис. 17. Выдавливание плоского контура до поверхностей в одном направлении
Разработан алгоритм построения тел и поверхностей по сечениям с направляющими контурами (рис. 18). Теперь у пользователей геометрического ядра C3D появилась возможность строить тела и поверхности по сечениям, задавая, помимо осевой линии, один или несколько контуров в качестве направляющих кривых. Сечениями могут выступать не только плоские контуры, но и контуры на поверхностях. Набор исходных данных всегда можно дополнить последовательностями соответствующих точек, расположенных на сечениях.
Благодаря реализованному алгоритму, существенно упростился процесс создания тел и поверхностей по сечениям требуемой формы. Например, рассмотрим построение корпуса корабля (рис. 19). В предыдущей версии ядра C3D для получения подобной модели необходимо было построить около 80 поверхностей по сечениям, для каждой из которых создавался отдельный эскиз. Впоследствии данные поверхности зеркально отражались. В новой версии C3D Modeler 2016 можно построить аналогичную модель буквально за одну операцию по сечениям, задавая в качестве параметров операции контуры, полностью определяющие форму корпуса корабля (рис. 20).
Рис. 18. Примеры тел и поверхностей по сечениям
Рис. 19. Трехмачтовый галиот «Секрет»
Рис. 20. Корпус судна до и после улучшения функции построения тела по сечениям
Рис. 21. Ускорение команды Измерение в 46 раз на примере модели балерины (650 с/14 с)
Рис. 22. Пример NURBS-кривой, трансформированной с рассчитанным габаритом
Особого внимания заслуживает работа математиков C3D Labs по повышению производительности геометрических вычислений в ядре. Эта проблема является краеугольной для всех разработчиков инженерного программного обеспечения. От того насколько быстро будет работать будущая CAD, CAM или CAEсистема, напрямую зависит уровень удовлетворенности пользователя от взаимодействия с системой (наряду с такими немаловажными факторами, как доступность интерфейса и набор функциональности САПР). И в этом плане нам тоже есть чем гордиться! Образно выражаясь, если раньше мы ходили пешком по некоторым направлениям 3Dреальности, то теперь мы проложили скоростную магистраль и запустили по ней поезда.
Рис. 23. В 2,1 раза более быстрое чтение модели зернометателя (403 с/193 с) и в 2,6 раза — его сечение фронтальной плоскостью (250 с/95 с)
Рис. 24. Перестроение изогнутой трубной доски с массивом типа «выдавливание + фаска» теперь выполняется в 2,3 раза быстрее (540 с/234 с)
Рис. 25. Перестроение плоской стенки бака с массивом из отверстий со скруглениями выполняется в 4,2 раза быстрее (245 с/58 с)
Рис. 26. Перестроение платы с ускорением почти в 2 раза (159 с /83 с)
Рис. 27. Перестроение сетчатой панели с ускорением в 3,6 раза (159 с/44 с)
Рис. 28. Ускорение построения: кривой пересечения — в 2,64 раза (3,7 с/1,4 с), линии разъема — в 2,1 раза (19 с/9 с), эквидистанты — в 2 раза
Рекордные достижения C3D Modeler 2016:
- ускорены вычисления максимального расстояния между поверхностями с криволинейными границами за счет оптимизации поиска расстояния между кривыми, представленными в виде сложных сплайнов (рис. 21);
- оптимизированы расчеты габаритов NURBSкривых после их трансформаций (рис. 22). Например, при имитации сдвига чертежа с масштабированием, содержащим 100 тыс. кривых, выполнение операции ускорилось в 276 раз (6,073 с/0,022 с);
- ускорено разделение тела на части за счет доработки механизмов выяснения состояния многочастотности (рис. 23);
- усовершенствованы методы перестроения массивов, содержащих выдавливания и скругления. Реализовано отсечение лишних запусков функции поиска ближайших точек, оптимизирован поиск ребер и уменьшено число действий при поиске самопересечений (рис. 24 и 25);
- доработано перестроение листового тела благодаря изменению алгоритмов поиска слипшихся торцевых граней и использованию дерева габаритов. Обработка компланарных граней происходит уже после их слияния, а не до него, как было в C3D V16 (рис. 26 и 27);
- оптимизировано формирование линий разъема и отрисовка эквидистанты для 3Dмоделей с большим количеством ребер, а также построение кривой пересечения при большом количестве пересекаемых граней (рис. 28);
- работа с триангуляцией в C3D Modeler 2016 также подверглась серьезному изменению. Здесь стоит отметь сразу несколько важных улучшений:
Рис. 29. Преобразование триангуляции в тело (B-Rep)
Рис. 30. Резка преобразованной в тело полигональной 3D-модели (STL, 300 тыс. треугольников)
Рис. 31. Триангуляция простых граней
(в 3,4 раза быстрей для ~600 тыс. граней)
- стало доступно преобразование полигональной модели в тело граничного представления (BRep) с возможностью слияния граней (рис. 29 и 30),
- улучшено построение поверхностей по пласту точек в режиме триангуляции (в среднем происходит в 7,5 раз быстрее),
- ускорено именование оболочек, состоящих из большого количества граней,
- добавлена триангуляция треугольных и плоских четырехугольных граней (рис. 31),
- проведена работа по аппроксимации сферы правильным выпуклым многогранником — икосаэдром, состоящим из 20 граней, 30 ребер и 12 вершин (рис. 32),
- устранены сгущения для пересечения цилиндров по эллипсу при одинаковом шаге (рис. 33),
- доработана сшивка граней (рис. 34).
Рис. 32. Аппроксимация сферы икосаэдром
Рис. 33. Пересечение цилиндров по косинусоидам
Рис. 34. Перестроение сшивки в 7,1 раза быстрее,
чем прежде (3 мин 27 с/29 с)
Возвращаясь к теме о «скоростных путях» C3D Labs, стоит отметить, что магистраль C3D Modeler 2016 имеет разветвленную структуру, а это значит, что пользователи ядра могут распределять тяжелый груз геометрических вычислений на несколько потоков и запускать их одновременно в заданном направлении. Правда, пока многопоточность доступна только в тестовом режиме и далеко не для всех функций, но если эксперимент окажется удачным, то в следующих версиях C3D многопроцессорные вычисления могут быть взяты за основу при выполнении ряда геометрических операций. Уже сейчас при построении проекций нескольких тел на 4ядерном процессоре ускорение достигает двукратной величины, а сами проекции можно строить в нескольких направлениях одновременно. И это только начало!
C3D Solver 2016
Как уже упоминалось, C3D Labs переходит к общемировой практике раздельного лицензирования технологических компонентов, поэтому начиная с 2016 года обновленный C3D Solver становится полностью самостоятельным программным продуктом. Это означает, что ИТкомпании, которые уже реализовали в собственном ПО работу с 2D/3Dгеометрией, могут в кратчайшие сроки дополнить функционал своих программ возможностью задания размерных и логических ограничений. При этом параметрическое ядро C3D не требует обязательного использования геометрии C3D и способно работать с любым программным обеспечением.
Вполне естественно, что обновления коснулись не только формы C3D Solver 2016, но и его содержания. Одним из наиболее важных усовершенствований является доработка интерфейса программирования параметрического ядра. Аналогичная работа когдато проводилась для 2Dрешателя, а теперь она коснулась и трехмерной параметризации. В результате был достигнут оптимальный баланс: унифицированный API достаточно полно отражает предметную область, но в то же время использует простые типы данных, которые удобно внедрять в программы, написанные на языках программирования, отличных от C/C++. Создать обертку (англ. wrapper) под C# или java для такого API гораздо проще, чем для объектноориентированных классов со сложной схемой наследования. Таким образом, новый API призван обеспечить разработчикам инженерного ПО комфортные условия для программирования приложений и использования функций параметризации C3D.
Рис. 35. Линейный паттерн
Рис. 36. Угловой паттерн
Для организации удобной работы с массивами тел, состоящими из повторяющихся элементов, были разработаны линейные и угловые паттерны (рис. 35 и 36). При этом выравнивание элементов можно задавать выборочно, а расстояние между ними не обязательно должно быть одинаковым. В реальной жизни такие модели с повторяющимися элементами встречаются довольно часто, как и зеркальная симметрия. Примеры линейных паттернов: стропильная система крыши, радиатор автомобиля, стеллаж с полками (рис. 37). Примеры угловых паттернов: фланец с крепежными болтами, спицы колеса, дуги зонтика и т.д.
Рис. 37. Проектирование стеллажа с помощью линейных паттернов и варьируемого шага
Рис. 38. Повышение производительности сопряжений
в C3D Solver 2016
Работа с окружностями в предыдущих версиях C3D была ограничена их фиксированными радиусами. В C3D Solver 2016 это досадное упущение было устранено, и теперь появилась возможность вычислять окружности не только по положению в пространстве, но и по варьируемому радиусу. Это позволяет моделировать трехмерные контуры со скруглениями, востребованные для конструкций, основанных на скелетах: трубопроводов, ферм и др. Одна доработка повлекла за собой другую, и сегодня мы можем похвастаться новыми комбинациями логических ограничений, реализованных в параметрическом ядре C3D: касание прямой и окружности, совпадение точки и окружности, фиксация радиуса.
Для организации более качественного взаимодействия с разработчиками программного обеспечения в рамках технической поддержки в C3D Solver 2016 появилось журналирование 3Dгеометрических ограничений. Данная функция позволяет вести историю всех вызовов нового APIинтерфейса и впоследствии может быть использована для решения проблем на стороне клиентского приложения, а также для пополнения базы тестов параметрического ядра C3D. Продолжаются работы по включению уникальных сведений об используемых в 3Dмодели сопряжениях в родной формат ядра C3D. Предполагается, что формат C3D сможет хранить геометрические связи в виде системы геометрических ограничений сборки. В будущем планируется дальнейшее развитие C3Dмодели в заданном направлении, так как это позволит получать от пользователей параметрического ядра данные, конвертированные в нативный формат C3D, и анализировать их.
Занимаясь повышением производительности параметрического ядра, команда C3D Labs провела большую работу по ускорению алгоритмов обработки больших систем ограничений, представляющих собой сборки из 50 тыс. объектов и более. Оптимизация проводилась на специально разработанных нагрузочных тестах. Замеры показывают, что время выполнения тестов сократилось примерно в 22,5 раза по сравнению с прошлым годом (рис. 38). Однако на относительно небольших моделях, состоящих из приблизительно ста объектов, результат ускорения оказался незначительным. Следовательно, C3D Solver 2016 приобрел дополнительный запас по сложности обрабатываемых моделей, и это наверняка оценят разработчики САПР, оперирующих «тяжелыми» данными.
C3D Converter 2016
Для большинства производителей CAD, CAM и CAEсистем по достижении определенного этапа жизненного цикла их программного обеспечения всё более актуальным становится вопрос организации взаимосвязи с другими программными решениями, представленными на рынке инженерного софтвера. Широкое распространение получило использование файлов обменных форматов для передачи данных. Однако работа в этом направлении требует глубокого изучения спецификаций на различные форматы 3Dданных с последующим проектированием и реализацией собственных вычислительных алгоритмов, которые ориентированы на специфику того или иного формата. Далеко не все компании обладают достаточным заделом, ресурсами и готовностью вести разработку подобного масштаба. Тем не менее команда C3D Labs с этой задачей справилась, и сегодня мы представляем C3D Converter 2016, в котором воплощен наш многолетний опыт работы с передачей данных. Модуль обмена призван помочь разработчикам в обеспечении качественного импорта и экспорта 3Dданных, представленных в граничном или полигональном виде: STEP, IGES, Parasolid X_T (X_B), ACIS (SAT), STL, VRML.
Рис. 39. Модель велосипеда в формате C3D, открытая в разных приложениях (автор — А. Свечников)
На протяжении всего 2015 года C3D Converter совершенствовался по ряду направлений, в результате чего его функциональность заметно возросла: реализована работа с ранее неподдерживаемыми версиями форматов Parasolid (до 25.0) и ACIS (до 22.0), появилось управление единицами измерения при экспорте в Parasolid, добавлена возможность импорта элементарных атрибутов для форматов X_T, X_B и передача их в обе стороны для формата SAT, а также реализована передача структуры сборки через формат VRML. Доступные пользователю новые реализации стандартных интерфейсов ощутимо прояснили алгоритм трансляции 3Dмоделей со сложной структурой: от формирования при экспорте до разбора при импорте данных.
Пожалуй, главным новшеством в C3D Converter 2016 является унификация интерфейса прикладного программирования и разработка полноценной документации на его основе. Изменения в API были направлены на приведение к однотипному виду сигнатуры в интерфейсных методах для компонентов и документов, и вдобавок они позволили упростить управление временем жизни объектов C3D. Изменения затронули и способ передачи текстовых данных. Преимущественно это касается сборки с поддержкой Unicode. Использование в интерфейсах строк из стандартной библиотеки C++ для передачи текстовых данных позволяет разработчику управлять преобразованием текста при формировании его 8битного представления, которое является стандартным для всех используемых форматов.
C3D Vision 2016
В любой системе автоматизированного проектирования можно выделить несколько основных составляющих: визуальное представление данных, геометрическое ядро и предметную область. При этом 3Dвизуализация является одной из наиболее дорогостоящих и сложных частей программы. Ее реализация обеспечивает высокий уровень комфорта при работе пользователей с системой за счет наглядности отображаемой информации, но предъявляет жесткие требования к скорости обработки данных и уровню производительности ПО при получении результатов.
Используя API нового технологического компонента C3D Vision 2016, разработчики инженерного программного обеспечения могут заметно улучшить визуализацию в своем ПО за счет повышения качества отрисовки 3Dмоделей и скорости работы с большими сборками. Применение C3D Vision в ИТразработке открывает новые возможности для управления трехмерными сценами (рис. 40), позволяет задействовать готовое дерево построения 3Dмоделей (рис. 41), анимацию, интерактивные средства манипуляции со сценой, действующие в режиме «пользователь — компьютер», а также виртуальные устройства, являющиеся неотъемлемой частью современного интерфейса инженерного ПО.
Рис. 40. Управление отображением в C3D Vision (3D-принтер VolgoBot)
Рис. 41. Стандартное дерево построения модуля визуализации C3D
Рис. 42. Изменение точности отрисовки 3D-модели
для статичной графики
Рис. 43. Скрытие ребер при вращении 3D-модели
Рис. 44. Сглаживание полигонов (антиалиасинг)
Рис. 45. Удаление незначительных элементов динамической сцены
Важным требованием к инструменту визуализации данных является построение изображений высокого качества с сохранением большого количества тел, для чего необходимо использовать параллельные методы построения полигональной модели, обработки и сжатия получаемых изображений. Специально для этих целей в C3D Vision 2016 добавлены точные настройки рендеринга 3Dмоделей, а все графические вычисления по умолчанию выполняются в режиме реального времени.
Для достижения максимальных показателей производительности в C3D Vision реализовано управление точностью расчета триангуляционной сетки при работе со статичной графикой (рис. 42) и целый ряд настроек для динамической сцены:
- скрытие ребер при вращении 3Dмодели (рис. 43);
- сглаживание полигонов (антиалиасинг) — рис. 44;
- удаление незначительных элементов сцены (рис. 45);
- удаление элементов, находящихся за пределами сцены;
- вертикальная синхронизация, благодаря которой частота обновления сцены синхронизируется с частотой обновления кадров на экране монитора;
- аппаратная акселерация графических расчетов (за счет максимально полного использования возможностей видеокарты);
- применение различных шейдеров, таких как селектирование объектов, зеркальность, отрисовка теней и др. (рис. 46).
Рис. 46. Применение шейдера селектирования объектов
В ближайшее время в модуле визуализации C3D появится обширный набор буксировщиков и манипуляторов плюс дополнительная настройка отображения скрытых от наблюдателя элементов сцены: внутренностей непрозрачных изделий, элементов 3Dмоделей второго и последующих планов. Это позволит ускорить работу с большими файлами CADсистем, но уже сейчас скорость загрузки 3Dмоделей и работа с ними достигают впечатляющих результатов!
Все пользователи программных продуктов C3D Labs с действующей технической поддержкой с этого дня получают доступ к C3D Vision 2016, который можно загрузить со специального FTPсервера и использовать в процессе разработки приложений.
C3D Toolkit 2016
Ни для кого не секрет, что C3D Labs является частью крупной софтверной группы АСКОН, разрабатывающей популярную систему трехмерного моделирования КОМПАС3D. Каждый день, общаясь с коллегами «по цеху», разработчики C3D приобретают ценные знания об особенностях создания САПР, анализируют полученную информацию и воплощают в жизнь актуальные наработки, а это позволяет утверждать, что технологии C3D сегодня способны удовлетворить запросы любого, даже самого требовательного разработчика PLMсистемы!
Идя навстречу пожеланиям заказчиков, мы постоянно расширяем список доступных инструментов для создания программного обеспечения на ядре C3D. Так, совсем недавно этот перечень пополнился средой разработки MS Visual Studio 2015. Особо стоит отметить, что по запросу компании SolidEng, корейского клиента C3D Labs, была добавлена сборка ядра C3D под операционную систему Android (рис. 47). Дополнительно имеется возможность компиляции C3D под другие платформы, например iOS от Apple и Tizen от Samsung, в соответствии с потребностями реальных разработчиков программного обеспечения.
Рис. 47. Тестовое приложение C3D для ОС Android
Программные решения C3D Labs сегодня позволяют ИТкомпаниям и производственным организациям использовать в проектах уже готовые, проверенные временем и десятками тысяч активных пользователей системы автоматизированного проектирования, функции программирования, и при этом быть абсолютно уверенными в их алгоритмической реализации. Геометрическое и параметрическое моделирование, обмен данными, визуализация — для всего этого спектра задач на рынке программного обеспечения теперь имеется единый комплекс решений — C3D Toolkit 2016. Попробуйте и вы!
Более подробно ознакомиться с технологиями C3D можно на сайте www.c3dlabs.com