Известно, что C3D, геометрическое ядро от АСКОНа, лежит в основе КОМПАСа-3D, но, может быть, широкой публике нелишне напомнить, что полноценное геометрическое ядро (а таких в мире можно пересчитать по пальцам) является неотъемлемой фундаментальной компонентой чуть ли не любой нетривиальной САПР-системы. Адаптируя реплику, приписываемую Архимеду, можно сказать, что 3D-ядро – это точка, опираясь на которую, можно, если не перевернуть мир, то хотя бы построить по-настоящему сложное инженерное ПО. На сегодня, C3D стало основой нескольких программных продуктов и их набор расширяется.
Команда C3D Labs уже получила результаты, конкурентоспособные на мировом рынке, и с нарастающей интенсивностью, результативностью, увлеченностью и, что особенно приятно, — смело, без комплексов, развивает свой успех. Хочется, чтобы читатели, по-настоящему компетентные в ядро-строении и ядро-применении, поддержали разработчиков 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. Но обо всём по порядку.
Рис.1. Ядро C3D для разработчиков инженерного ПО
C3D Modeler 2016
В течение всего прошлого года команда C3D Labs принимала от пользователей ядра обращения в службу ServiceDESK, в которых они высказывали свои пожелания по доработке и улучшению геометрических функций C3D. Параллельно шли запросы на тестирование C3D Modeler, часто также сопровождающиеся интересными вопросами по функционалу. Исходя из этого, при учёте собственных планов C3D Labs по развитию ядра был сформирован перечень приоритетных задач для реализации в новой версии C3D.Учитывая сложность некоторых функций 2D и 3D моделирования и разветвлённую структуру API C3D, первостепенной задачей являлось создание детального руководства пользователя C3D (рис. 2). Документ занимает отдельную нишу между технической документацией на API и теоретической частью, представленной в книге по геометрическому моделированию (рис. 3). В руководстве пользователя дано подробное описание операций и объектов ядра с большим количеством иллюстративного материала, благодаря чему разработчики могут изучить особенности выполнения различных операций в C3D Modeler 2016, не вдаваясь глубоко в математические аспекты его работы. Для более удобной отладки и тестирования приложений был расширен список поставляемых с дистрибутивом 3D-моделей, причём большая их часть копирует примеры из руководства, что позволяет разрабатывать ПО на C3D ещё быстрее!
Рис.2. Руководство пользователя C3D
Рис.3. Учебник Николая Голованова по геометрическому моделированию
Рис.4. Обечайка до сегментации
Рис.5. Обечайка после сегментации с одинаковым количеством сегментов
Рис.6. Обечайка после сегментации с разным количеством сегментов
Рис.7. Плоская штамповка
Рис.8. Сферическая штамповка
Сегодня ряд российских и зарубежных компаний создают на базе C3D автоматизированные системы подготовки управляющих программ для станков с ЧПУ, поэтому C3D Labs стремится максимально адаптировать геометрическое ядро для использования в CAM-системах. Обновленный C3D Modeler способен находить токарные оси в незамкнутых телах и строить токарные сечения, а также рисовать силуэтные линии при вращении поверхности вокруг оси (рис. 9). Существенной доработке подверглись операции сечения тел плоскими кривыми (рис. 10) и поверхностями (рис. 11) с сохранением всех частей тела.
Рис.9. Силуэтные линии при вращении поверхности вокруг оси
Рис.10. Резка тела плоской кривой
Рис.11. Резка тела поверхностью
Рис.12. Заметание тела по направляющей
Рис.13. Вращение контура вокруг оси на заданный угол
Рис.14. Выдавливание контура с параметрами 250 и 150
Рис.15. Выдавливание контура с параметрами 250 и -150
Рис.16. Выдавливание контура с параметрами 250 и -400
Рис.17. Выдавливание плоского контура до поверхностей в одном направлении
Рис.18. Примеры тел и поверхностей по сечениям
Рис.19. Трёхмачтовый галиот «Секрет»
Рис.20. Корпус судна до и после улучшения функции построения тела по сечениям
Рекордные достижения C3D Modeler 2016
- Ускорены вычисления максимального расстояния между поверхностями с криволинейными границами за счёт оптимизации поиска расстояния между кривыми, представленными в виде сложных сплайнов (рис. 21):
Рис.21. Ускорение команды «Измерение» в 46 раз на примере модели балерины (650 сек / 14 сек)
- Оптимизированы расчёты габаритов NURBS-кривых после их трансформаций (рис. 22). Например, при имитации сдвига чертежа с масштабированием, содержащим 100 тысяч кривых, выполнение операции ускорилось в 276 раз (6,073 сек / 0,022 сек);
Рис.22. Пример NURBS-кривой, трансформированной с рассчитанным габаритом
- Ускорено разделение тела на части за счёт доработки механизмов выяснения состояния многочастности (рис. 23):
Рис.23. В 2,1 раза более быстрое чтение модели зернометателя (403 сек / 193 сек) и в 2,6 раза –
его сечение фронтальной плоскостью (250 сек / 95 сек) - Усовершенствованы методы перестроения массивов, содержащих выдавливания и скругления. Реализовано отсечение лишних запусков функции поиска ближайших точек, оптимизирован поиск рёбер и уменьшено число действий при поиске самопересечений (рис. 24-25):
Рис.24. Перестроение изогнутой трубной доски с массивом типа «выдавливание + фаска»
теперь выполняется в 2,3 раза быстрее (540 сек / 234 сек)Рис.25. Перестроение плоской стенки бака с массивом из отверстий со скруглениями
выполняется в 4,2 раза быстрее (245 сек / 58 сек) - Доработано перестроение листового тела благодаря изменению алгоритмов поиска слипшихся торцевых граней и использованию дерева габаритов. Обработка компланарных граней происходит уже после их слияния, а не до него, как было в C3D V16 (рис. 26-27):
Рис.26. Перестроение платы с ускорением почти в 2 раза (159 сек / 83 сек)
Рис.27. Перестроение сетчатой панели с ускорением в 3,6 раза (159 сек / 44 сек)
- Оптимизировано формирование линий разъёма и отрисовка эквидистанты для 3D-моделей с большим количеством рёбер, а также построение кривой пересечения при большом количестве пересекаемых граней (рис. 28):
Рис.28. Ускорение построения: кривой пересечения в 2,64 раза (3,7 сек / 1,4 сек),
линии разъёма в 2,1 раза (19 сек / 9 сек), эквидистанты в 2 раза - Работа с триангуляцией в C3D Modeler 2016 также подверглась серьёзному изменению. Здесь стоит отметь сразу несколько важных улучшений:
- Стало доступно преобразование полигональной модели в тело граничного представления (B-Rep) с возможностью слияния граней (рис. 29).
Рис.29. Преобразование триангуляции в тело (B-Rep)
Рис.30. Резка преобразованной в тело полигональной 3D-модели (STL, 300 тыс. треугольников)
- Улучшено построение поверхностей по пласту точек в режиме триангуляции (в среднем происходит в 7,5 раз быстрее).
- Ускорено именование оболочек, состоящих из большого количества граней.
- Добавлена триангуляция треугольных и плоских четырёхугольных граней (рис. 31).
Рис.31. Триангуляция простых граней (в 3,4 раза быстрей для ~600 тыс. граней)
- Проведена работа по аппроксимации сферы правильным выпуклым многогранником – икосаэдром, состоящим из 20 граней, 30 рёбер и 12 вершин (рис. 32)
Рис.32. Аппроксимация сферы икосаэдром
- Устранены сгущения для пересечения цилиндров по эллипсу при одинаковом шаге (рис. 33).
Рис.33. Пересечение цилиндров по косинусоидам
- Доработана сшивка граней (рис. 34).
Рис.34. Перестроение сшивки в 7,1 раза быстрее, чем прежде (3 мин. 27 сек / 29 сек)
- Стало доступно преобразование полигональной модели в тело граничного представления (B-Rep) с возможностью слияния граней (рис. 29).
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). При этом выравнивание элементов можно задавать выборочно, а расстояние между ними не обязательно должно быть одинаковым. В реальной жизни такие модели с повторяющимися элементами встречаются довольно часто, как и зеркальная симметрия. Примеры линейных паттернов: стропильная система крыши, радиатор автомобиля, стеллаж с полками (рис. 37). Примеры угловых паттернов: фланец с крепежными болтами, спицы колеса, дуги зонтика и т.д.
Рис.35. Линейный паттерн
Рис.36. Угловой паттерн
Рис.37. Проектирование стеллажа с помощью линейных паттернов и варьируемого шага
Для организации более качественного взаимодействия с разработчиками программного обеспечения в рамках технической поддержки в C3D Solver 2016 появилось журналирование 3D-геометрических ограничений. Данная функция позволяет вести историю всех вызовов нового API-интерфейса и впоследствии может быть использована для решения проблем на стороне клиентского приложения, а также для пополнения базы тестов параметрического ядра C3D. Продолжаются работы по включению уникальных сведений об используемых в 3D-модели сопряжениях в родной формат ядра C3D. Предполагается, что формат .c3d сможет хранить геометрические связи в виде системы геометрических ограничений сборки. В будущем планируется дальнейшее развитие C3D-модели в заданном направлении, так как это позволит получать от пользователей параметрического ядра данные, конвертированные в нативный формат C3D, и анализировать их.
Занимаясь повышением производительности параметрического ядра, команда C3D Labs провела большую работу по ускорению алгоритмов обработки больших систем ограничений, представляющих собой сборки из 50 000 объектов и более. Оптимизация проводилась на специально разработанных нагрузочных тестах. Замеры показывают, что время выполнения тестов сократилось примерно в 2-2,5 раза по сравнению с прошлым годом (рис. 38). Однако на относительно небольших моделях, состоящих из приблизительно 100 объектов, результат ускорения оказался незначительным. Следовательно, C3D Solver 2016 приобрёл дополнительный запас по сложности обрабатываемых моделей, и это наверняка оценят разработчики САПР, оперирующих «тяжёлыми» данными.
Рис.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.На протяжении всего 2015 года C3D Converter совершенствовался по ряду направлений, в результате чего его функциональность заметно возросла: реализована работа с ранее неподдерживаемыми версиями форматов Parasolid (до 25.0) и ACIS (до 22.0), появилось управление единицами измерения при экспорте в Parasolid, добавлена возможность импорта элементарных атрибутов для форматов X_T, X_B и передача их в обе стороны для формата SAT, а также реализована передача структуры сборки через формат VRML. Доступные пользователю новые реализации стандартных интерфейсов ощутимо прояснили алгоритм трансляции 3D-моделей со сложной структурой: от формирования при экспорте до разбора при импорте данных.
Рис.39. Модель велосипеда в формате .c3d, открытая в разных приложениях (автор – А. Свечников)
C3D Vision 2016
В любой системе автоматизированного проектирования можно выделить несколько основных составляющих - визуальное представление данных, геометрическое ядро и предметную область. При этом 3D-визуализация является одной из наиболее дорогостоящих и сложных частей программы. Её реализация обеспечивает высокий уровень комфорта при работе пользователей с системой за счет наглядности отображаемой информации, но предъявляет жёсткие требования к скорости обработки данных и уровню производительности ПО при получении результатов.Используя API нового технологического компонента C3D Vision 2016, разработчики инженерного программного обеспечения могут заметно улучшить визуализацию в своём ПО за счёт повышения качества отрисовки 3D-моделей и повышения скорости работы с большими сборками. Применение C3D Vision в ИТ-разработке открывает новые возможности для управления трёхмерными сценами (рис. 40), позволяет задействовать готовое дерево построения 3D-моделей (рис. 41), анимацию, интерактивные средства манипуляции со сценой, действующие в режиме «пользователь-компьютер», а также виртуальные устройства, являющиеся неотъемлемой частью современного интерфейса инженерного ПО.
Рис.40. Управление отображением в C3D Vision (3D-принтер VolgoBot)
Рис.41. Стандартное дерево построения модуля визуализации C3D
Рис.42. Изменение точности отрисовки 3D-модели для статичной графики
- скрытие рёбер при вращении 3D-модели (рис. 43);
- сглаживание полигонов (антиалиасинг) (рис. 44);
- удаление незначительных элементов сцены (рис. 45);
- удаление элементов, находящихся за пределами сцены;
- вертикальная синхронизация, благодаря которой частота обновления сцены синхронизируется с частотой обновления кадров на экране монитора;
- аппаратная акселерация графических расчетов (за счет максимально полного использования возможностей видеокарты);
- применение различных шейдеров, таких как селектирование объектов, зеркальность, отрисовка теней и других (рис. 46).
Рис.43. Скрытие рёбер при вращении 3D-модели
Рис.44. Сглаживание полигонов (антиалиасинг)
Рис.45. Удаление незначительных элементов динамической сцены
Рис.46. Применение шейдера селектирования объектов
Все пользователи программных продуктов 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 можно на сайте www.c3dlabs.com