Перейти к содержимому

C3d ядро кто разработал

  • автор:

Геометрическое ядро САПР программ нового поколения ⁠ ⁠

Для начала немного истории, все программы автоматизированного проектирования в том или ином виде берут свое начало с конца прошлого тысячелетия, а именно:

Autocad — 1982 г.

Allplan — 1982 г.

ArchiCad — 1986 г.

Solidworks — 1993 г.

И многие иные, даже сложные комплексы для расчетов такие как ANSYS и ABAQUS созданы в конце прошлого столетия.

Из отечественных можно еще выделить Renga , но она создается на старом ядре C3D компании АСКОН, а они в свою очередь создатели Компаса, поэтому это одно и тоже решение в разных обёртках.

Все данные САПР программы объединены одним общим принципом, они все создавались на основе одного принципа обработки информации — последовательного, это было следствием реалий тех времён, не существовало аппаратных устройств многопоточной обработки информации. Но времена идут, всё меняется , но не меняются геометрические ядра. В среднем на создание полноценной САПР программы уходит от 5 до 7 лет и довольного большого числа сотрудников — разработчики, тестировщики, консультанты и т.д. и в текущих реалиях ни одна из компаний разработчиков не пойдет на полноценную перепись с нуля своих геометрических ядер под многопоточные CPU и GPU. Конечно, программы обновляются с каждым годом, но все данные нововведения по сути косметические без глубокой оптимизации.

В прошлом году я разместил пост в котором продемонстрировал возможности Unreal Engine 5 при отображении многомиллиардно полигональной геометрии. В течении последнего года я вел разработку геометрического ядра которое сможет использовать многопоточную обработку на CPU — процессов требующих двойной точности, а на GPU — процессов где хватает и одинарной точности. Новые видео карты Nvidia — 3070, 3080, 3090 уже способны находить решения с двойной точностью на тензорных ядрах (они используются при обработки трассировки лучей в играх) , но на данный момент у меня работа с данными ядрами на этапе экспериментов.

По сути получилось решение которое по производительности превышает любую программу выше в списке от 10 до 100 раз и более. И это касается любых действий, отображение графики, копирования, изменений, перемещений, подсчета материалов и т.д.:

В моем решение используется ровно такой же подход как в Unreal Engine 5 в технологии nanite. При удалении камеры пользователя происходит постепенная эрозия геометрии и упрощение геометрии вплоть до отображения одного пикселя, что позволяет отображать многократно больший объем информации по сравнению с программами «пенсионерами». Но у технологии Nanite есть один большой минус, необходимо предварительное кэширование шейдерных текстур на жёсткий диск , в САПР это невозможно , поэтому мне пришлось данную технологию переработать под САПР и особенно под армирование строительных конструкций и впереди еще много работы.

7.2K поста 76.6K подписчиков

Правила сообщества

ВНИМАНИЕ! В связи с новой волной пандемии и шумом вокруг вакцинации агрессивные антивакцинаторы банятся без предупреждения, а их особенно мракобесные комментарии — скрываются.

Основные условия публикации

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

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

— Научные статьи должны сопровождаться описанием исследования, доступным на популярном уровне. Слишком профессиональный материал может быть отклонён.

— Видеоматериалы должны иметь описание.

— Названия должны отражать суть исследования.

— Если пост содержит материал, оригинал которого написан или снят на иностранном языке, русская версия должна содержать все основные положения.

Не принимаются к публикации

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

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

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

Наказывается баном

— Оскорбления, выраженные лично пользователю или категории пользователей.

— Попытки использовать сообщество для рекламы.

— Многократные попытки публикации материалов, не удовлетворяющих правилам.

— Нарушение правил сайта в целом.

Окончательное решение по соответствию поста или комментария правилам принимается модерацией сообщества. Просьбы о разбане и жалобы на модерацию принимает администратор сообщества. Жалобы на администратора принимает @SupportComunity и общество пикабу.

Все это хорошо, здорово и прекрасно (без сарказма), но все же отображение модели — не единственный и даже не главный функционал САПР.

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

Более того, самое сложное, на самом деле — не 3d сцену рисовать, а в памяти компактно хранить всю сцену со всеми экземплярами объектов.

Да, блин, тупо разобрать ifc файл на 1 гиг грамотно и быстро — та еще задача.

Поздравляю, вы сделали ещё один 3D-движок. Это хорошо!

Про САПР: Autocad, Компас, ArchiCad, Solidworks, ANSYS и ABAQUS предназначены не для отображения миллионов и миллиардов полигонов (про остальные не знаю). У них совсем другие задачи, и сравнивать с ними — как то странно. ANSYS, насколько помню, может вообще в консольном режиме работать, без GUI.

P.S. В упомянутых вами САПР есть ещё и сплайны. А у вас сплайнов наверняка нет, только полигоны. Так ведь? 🙂

Поправьте, если ошибаюсь.

Основная разница в том, что в САПР для вычисления положения объекта используются уравнения, в то время как в игровых движках — координаты. Тобиш основная задача САПРа не в отображении модели, это вообще считай отдельный модуль программы, основная задача — правильно рассчитать координаты всех точек, из которых будет собрано изображение. А для отображения сойдёт и древний OpenGL, другой вопрос, что рабочие компы для САПРа зачастую выбираются как проц-затычка с видеоядром и производительность такого решения под большим вопросом.

Тут действует рыночная схема «предложение создаёт спрос, а спрос создаёт предложение»: первые САПРы, как и любое ПО того времени использовали строго: 1 ядро, 1 поток, минимум памяти. Был сформирован строгий алгоритм: рассчитать все вершины и ряд точек между ними, смасштабировать, вывести на экран. При этом появилась проблема: с развитием САПРов появилась возможность создавать зависимости опорных вершин друг от друга, что повышает точность и однозначность модели/объекта, так и не даёт правильно распараллелить вычисления. Ограничения по памяти не позволяли хранить результаты таких промежуточных расчётов для повторного использования.

Повторю свою мысль, проблема не в отображении моделей, тут алгоритмика в чистом виде. Проблема в создании этих моделей. Когда ты в 3D максе создаёшь сферу — она единожды рассчитывается, а далее существует как набор точек/полигонов. Когда ты в Компасе создаёшь сферу — она существует как координата точки и радиус и для каждого отображения/действия её вершины рассчитываются с 0 с самой разной точностью. Когда требуется сделать срез модели (для чертежа к примеру) — она полностью строится в памяти как пересечение плоскости и каждого использованного элемента в построении финальной модели с огромной точностью, а после рассчитывается что нужно отображать, а что нет.

Для ускорения отображения остаётся только применять основные «геймдевные лайфхаки», к примеру запоминать рассчитанную модель и масштабировать её с применением необходимых технологий или «забывать» ненужные детали перед передачей данных видеокарте. К примеру нет смысла предавать все точки куба — ты никогда не увидишь больше 3 его граней одновременно. Или нет смысла передавать на расчёт видеокарте объекты, которые в кадр 100% не попадут.

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

Знакомьтесь — геометрическое ядро C3D

Год назад со скромного постера на Конгрессе о Будущем Инженерного Программного Обеспечения (COFES) начался путь геометрического ядра C3D на рынок. О том, что интересного произошло за это время, мы и расскажем в данной статье. Но в начале нужно пояснить, что же такое — это ядро геометрического моделирования и кому оно нужно.

Авторы статьи — «костяк» команды геометрического ядра C3D

Николай Голованов, архитектор, руководитель разработки, к.т.н. В АСКОН 17 лет

Олег Зыков, директор по продукту C3D. В АСКОН 12 лет

Юрий Козулин, руководитель разработки C3D Modeler, к.т.н.
В АСКОН 7 лет

Александр Максименко, руководитель разработки C3D Solver. В АСКОН 13 лет

Кому нужно геометрическое ядро?

Геометрическое ядро — это программный компонент для разработчиков прикладных решений. Оно представляет собой программную реализацию математических методов построения численных моделей геометрии реальных и воображаемых объектов, а также математических методов управления этими моделями. Численные модели используются в системах, выполняющих проектирование (CAD), расчеты (CAE) и подготовку производства (CAM) моделируемых объектов.

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

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

Основные потребители геометрического ядра — это разработчики САПР, производители 3D­пакетов. Но не стоит забывать о том, что ядро может пригодиться и учебным заведениям! Оно поможет в обучении студентов по курсам: начертательная геометрия, машинная графика, геометрическое моделирование и вычислительная геометрия, будет полезно в образовании будущих математиков­программистов и разработчиков САПР. Использовать напрямую ядро (а не API CAD­систем) можно при выполнении научно­исследовательских работ, требующих построения трехмерных геометрических моделей. Кроме того, ядро геометрического моделирования может использоваться как при написании вузовского специализированного программного обеспечения, так и для создания коммерческого ПО в рамках малых инновационных предприятий, активно создаваемых при университетах.

Кстати, о предприятиях. Если в организации есть сложные, узкоспециализированные задачи, для решения которых на рынке нет программного обеспечения (или оно по каким­то причинам недоступно), то лицензирование ядра позволит такое ПО создать самостоятельно. Конечно, в штате предприятия должны быть программисты и аналитики, обладающие необходимым опытом и знаниями.

Как видите, задач для геометрических ядер много, а самих ядер — очень мало. Полноценные коммерческие ядра геометрического моделирования разработаны единичными командами в мире, а в России компания АСКОН — единственная, кому это удалось. И сейчас настало время поговорить о нашем C3D.

Что такое C3D?

Решение о написании собственного геометрического ядра было принято в компании АСКОН в 1995 году в рамках начала работ по созданию системы трехмерного моделирования КОМПАС­3D, коммерческий выпуск которой состоялся в 2000 году. До 2012 года ядро не было коммерческим продуктом и использовалось только в составе собственной САПР КОМПАС­3D. Все эти годы оно совершенствовалось, обеспечивая функциональное развитие КОМПАС­3D. Перечислим основные этапы:

  • 2000 год. Создание достаточного количества алгоритмов трехмерного твердотельного моделирования для использования в САПР;
  • 2001 год. Реализация решателя геометрических ограничений и конвертеров в основные обменные форматы данных;
  • 2002 год. Создание механизма построения ассоциативных видов по трехмерным моделям;
  • 2003 год. Появление основ поверхностного моделирования;
  • 2004 год. Описание математических алгоритмов создания элементов листового тела;
  • 2005 год. Реализация многотельного моделирования;
  • 2007 год. Поддержка каркасной модели;
  • 2008 год. Реализация кинематических сопряжений для моделирования механизмов;
  • 2009 год. Поддержка атрибутов геометрической модели;
  • 2010 год. Появление полноценного поверхностного моделирования;
  • 2011 год. Поддержка кроссплатформенности;
  • 2012 год. Реализация элементов прямого моделирования.

Команда разработки 17 лет развивала геометрическое ядро: совершенствовала его архитектуру, создавала новую функциональность, модернизировала ранее реализованные методы. Без уникального опыта, основанного на практическом применении КОМПАС­3D на десятках тысяч рабочих мест, невозможно было бы говорить о возможности выпуска C3D в свободное коммерческое плавание. Создать конкурентоспособное ядро без опыта практического применения просто невозможно.

В настоящий момент ядро C3D — единственное в мире, объединяющее в одном продукте три важнейших модуля САПР:

  • геометрический моделировщик C3D Modeler, предоставляющий достаточный набор возможностей для твердотельного и гибридного моделирования, эскизирования и 2D­черчения;
  • решатель геометрических ограничений C3D Solver, позволяющий накладывать вариационные зависимости на 2D­ и 3D­элементы геометрической модели;
  • конвертер данных C3D Converter, обеспечивающий чтение/запись геометрической модели в основные обменные форматы.

Все эти модули теперь доступны не только командам разработки внутри АСКОН, но и всем желающим.

Первопроходцы

В эти дни, весной 2013 года, первый продукт, подготовленный на ядре АСКОН вне собственных подразделений разработки, представлен широкой публике. Это ESPRIT Extra CAD — простой в использовании трехмерный моделировщик, встроенный непосредственно в популярную CAM­систему ESPRIT. Интерфейс системы можно увидеть на рис. 1. Разработка выполнялась совместно компаниями ЛО ЦНИТИ и Rubius.

Рис. 1. ESPRIT Extra CAD

Рис. 1. ESPRIT Extra CAD

В конце 2012 года лицензию на ядро приобрела компания Базис­центр, которая будет использовать наш компонент в конструкторских модулях своей мебельной САПР. Два этих события уже говорят о том, что компания АСКОН не зря решила предоставить сторонним компаниям доступ к своему геометрическому ядру. Рынок действительно нуждался в новом игроке!

Говоря о заказчиках C3D, не будем обходить вниманием и компанию АСКОН, которая в феврале выпустила КОМПАС­3D V14 (рис. 2) — 3D­САПР, построенную на новейшей, четырнадцатой, версии ядра C3D. Все текущие разработки АСКОН сегодня также базируются на нашем программном компоненте.

Рис. 2. КОМПАС-3D V14

Рис. 2. КОМПАС-3D V14

Что нового в C3D V14?

Новая версия для нас особенная — ведь это первый релиз продукта после объявления о старте лицензирования ядра внешним разработчикам. Ранее все релизы выходили только в составе КОМПАС­3D. Это уже оказало влияние на продукт: теперь в развитии ядра мы опираемся не только на мнение разработчиков КОМПАС­3D, но и на пожелания новых клиентов. Начиная с V14, ядро имеет свою систему защиты и возможность покомпонентного лицензирования. В остальном же развитие идет так же, как и раньше — совершенствуются алгоритмы, расширяется функциональность, повышаются скорость и надежность.

C3D Modeler

Функциональные возможности модуля:

  • моделирование тел;
  • моделирование поверхностей;
  • моделирование листовых тел;
  • триангуляция геометрической модели;
  • вычисление инерционных характеристик модели;
  • анализ столкновений элементов модели;
  • построение плоских проекций и разрезов модели.

В новой версии доработана операция скругления: появилась возможность остановки скругления (рис. 3в) и остановки с площадкой (рис. 3г).

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

Рис. 3. Доработана операция скругления: исходная ситуация (а), было возможно ранее (б) и (в), стала возможным остановка скругления (г)

Рис. 3. Доработана операция скругления: исходная ситуация (а), было возможно ранее (б) и (в), стала возможным остановка скругления (г)

Рис. 4. Оболочка: было (а), стало возможным (б, в)

Рис. 4. Оболочка: было (а), стало возможным (б, в)

Рис. 5. Эллиптическая обечайка и ее развертка

Рис. 5. Эллиптическая обечайка и ее развертка

Следует также отметить такую крупную новинку, как построение развертки линейчатого тела (на рис. 5 показан пример Эллиптической обечайки).

C3D Solver

Сегодня C3D Solver — это мощный решатель 2D­ограничений для 2D­черчения и эскизов в 3D, а также решатель 3D­ограничений для создания сборочных единиц и кинематического анализа.

В новой версии появилась возможность диагностики переопределенных систем ограничений. В КОМПАС­3D данная функция реализована в виде выделения оранжевым цветом «лишних» ограничений (рис. 6).

Рис. 6. Переопределенный эскиз в КОМПАС-3D

Рис. 6. Переопределенный эскиз в КОМПАС-3D

Рис. 7. Параметризация NURBS

Рис. 7. Параметризация NURBS

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

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

C3D Converter

В настоящее время модуль поддерживает следующие форматы:

  • STEP (чтение/запись);
  • Parasolid (чтение/запись);
  • ACIS (чтение/запись);
  • IGES (чтение/запись);
  • STL (запись);
  • VRML (запись).

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

Мы перечислили только основные новинки, в новом релизе их гораздо больше. Большая их часть уже нашла свое применение в недавно вышедшей системе трехмерного моделирования КОМПАС­3D V14. И мы надеемся, что эти и другие технологические находки еще найдут применение в новых системах, создаваемых нашими настоящими и будущими пользователями.

История одного ядра от Александра Алахвердянца

В этом году геометрическому ядру C3D исполняется 20 лет. Ровно столько лет назад основатели компании АСКОН пришли к единому мнению о необходимости создания собственной системы трехмерного моделирования КОМПАС-3D. В 1996 году была создана группа, которой было поручено написание программного обеспечения для работы с точной 3D-геометрией — инструмента, который бы не уступал по удобству использования и функциональности зарубежным аналогам. С этих дней начинается отсчёт истории «коломенского» геометрического ядра. На протяжении многих лет ядро постоянно развивалось и дорабатывалось — появлялись новые методы моделирования, разрабатывались алгоритмы вычислений, создавались дополнительные модули: параметрический решатель, конвертор данных, модуль визуализации. И за всеми этими изменениями всегда стояли конкретные люди — разработчики геометрического ядра, обретшего со временем собственное имя — C3D.

Сегодня всё больше людей интересуются геометрическим моделированием, многие из них активно следят за тем, кто и как разрабатывает российское коммерческое 3D-ядро. Поэтому мы решили подготовить серию «юбилейных» интервью с нашей командой разработки. В первом выпуске мы общались с Анной Ладиловой, поэтому, чтобы мужской части коллектива C3D Labs не было обидно, второе интервью мы решили взять у Александра Алахвердянца. Голос «за кадром» принадлежит менеджеру по продукту C3D, Аркадию Камневу.

— Саш, откуда ты родом?

— Я вырос в Кабардино-Балкарии, в городе Нальчике.

— Как ты оказался в Коломне?

— Я поступил в Московский государственный университет имени М.В. Ломоносова на Физический факультет. Моя базовая кафедра находилась в городе Дубне. Я занимался физикой элементарных частиц и после окончания университета остался в Подмосковье — пошёл учиться в аспирантуру, а заодно начал работать в Объединённом институте ядерных исследований. Уже оттуда, неожиданно для себя, я перебрался в Коломну работать программистом.

— Я слышал, что ты стажировался за границей по линии науки. Это правда?

— В Дубне я работал в составе научной группы по поиску кварк-глюонной плазмы в эксперименте STAR. Solenoidal Tracker At RHIC — это крупнейшая экспериментальная установка ускорительного комплекса RHIC (коллайдер релятивистских тяжелых ионов), который располагается в Брукхейвенской Национальной лаборатории в Лонг-Айленде, США. Участники эксперимента разбросаны по всему миру, всего около 40 институтов. Это крупнейший эксперимент по физике элементарных частиц в БНЛ, куда я дважды летал в служебные командировки по набору данных. Обе командировки длились по 3-4 месяца.

— Интересно, как организована работа в лаборатории?

— Сперва все готовятся к запуску коллайдера, потому что он потребляет очень много энергии и не может работать круглый год. Руководители Лаборатории договариваются с Департаментом энергетики, чтобы ведомство обеспечило работу электростанции, питающей коллайдер. Затем производится запуск, и коллайдер работает без остановки 4-5 месяцев. Круглые сутки собираются данные, нужно сидеть за компьютером и следить за множеством графиков для того, чтобы контролировать корректность записи экспериментальных данных. Важно, чтобы процессы протекали нормально: детекторы были исправны, давление газа в проекционной камере было на нужной отметке и т. д. Для этого приезжают ученые, сдают экзамены, получают различные допуски и заступают на свою смену, которая длится неделю. Работа заключается в том, что 4-6 человек сидят 8-ми часовую смену на рабочих местах, управляют записью экспериментальных данных и контролируют протекающие в детекторе процессы. По истечении этого срока формируется новая смена. За командировку приходилось отработать 10-12 смен, поэтому удавалось познакомиться с большим числом коллег. Непосредственно наука заключается в анализе полученных данных, который делается уже после в своём родном институте.

— Тебе понравилось работать над экспериментом STAR?

— Конечно! К сожалению, в России не проводятся эксперименты по моей специальности, поэтому для ознакомления с современной физикой элементарных частиц от университета нас возили на Большой адронный коллайдер в Швейцарию в Европейский центр ядерных исследований CERN (фр. Conseil Européen pour la Recherche Nucléaire).

— Писал ли ты какие-то научные работы?

— Я входил в список соавторов научной коллаборации эксперимента STAR. Все статьи, которые публиковались от коллабораций на протяжении 5-6 лет, что я участвовал в эксперименте, выходили с моим соавторством. Публикации можно встретить в таких изданиях, как Physical Review, Physical Letters и др. Также у меня было несколько личных публикаций.

— Что больше всего понравилось в США в профессиональном плане и чего больше всего не хватало в России?

— Главное отличие в том, что американцы изучают фундаментальную науку у себя дома, а нам для этого приходилось ездить далеко за границу. Все, кто участвовал в более или менее серьёзных научных проектах в Дубне, так или иначе работали на разные зарубежные страны — США, Швейцарию, Германию, Италию, Японию, Китай. То есть мы работали практически по всему миру. Хотя, конечно, в России тоже проводились эксперименты, но они были небольшие и очень специфичные.

— Обычно ученые, которые работают за рубежом, на Родину не возвращаются. Как так случилось, что ты снова оказался в России?

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

— Поговорим о работе в C3D Labs. В каком году ты присоединился к команде разработки C3D?

— В 2011 году я пришел на работу в математическое подразделение АСКОН.

— Изначально ты занимался геометрией или тебе сразу начали ставить задачи по параметризации в ядре?

— Раньше мы не имели каких-либо подразделений, и был только один отдел математики. Затем уже создали группу конверторов и солвера. Когда нам сообщили, что нас разделяют на группы, то будущий начальник, Саша Максименко, подошёл и спросил, хотел бы я работать вместе. Я сразу согласился.

— Чем разработка геометрического ядра отличается от разработки параметрического ядра?

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

— Провокационный вопрос. Чем параметрическое ядро круче геометрического?

— Тем, что решателей намного меньше, чем геометрических ядер. Точнее даже вот так: ядер мало, а параметрических решателей ещё меньше! Будем считать, что они сложнее, раз их меньше. Значит, этим и круче.

— Теперь ты живёшь в Коломне между Москвой и Рязанью. Тебе нравится этот город?

— Нравится, с точки зрения исторических достопримечательностей. У Коломны есть свои красоты и свой древний дух. А с точки зрения бытовых удобств, Коломну всё-таки сложно сравнивать с малыми городами Швейцарии и Америки.

— Чем занимаешься в свободное время?

— Я часто программирую дома, много читаю и занимаюсь самообучением. Я же всё-таки не программист по образованию, а физик. Поэтому есть области информатики, которых я не знаю, и мне приходится восполнять эти пробелы в образовании.

— Выходит, что численные методы вам не преподавали в институте?

— Конечно преподавали. Но одними численными методами программирование не исчерпывается. На первом курсе университета мы проходили программирование, и был даже практикум по C++, где нас научили писать простые функции. Этого было явно недостаточно. Потом уже, когда работал ученым, я довольно много программировал, но делал это на таком уровне, что не вдавался в понятия об архитектуре или, скажем, о сложных языковых концепциях. Главное было — это топорно написать работающий алгоритм и построить графики после обработки данных. Вот и всё.

— На каких языках ты программируешь? Как изучаешь новые языки?

— Программирую на C++ и Python. Изучаю по книгам, смотрю видео лекции, многое коллеги подсказывают. Без них никуда! В C3D Labs работают большие профессионалы своего дела. Особенно в первое время я очень многому у них научился, потому что ни в каких книгах нет того огромного опыта, который есть у коллег. Они мне очень много дали! Теперь ещё и собственный опыт, «сын ошибок трудных», помогает мне самосовершенствоваться.

— Хобби, спорт, увлечения?

— Спорту я всегда уделял очень много времени, и в школьные годы, и в университете. До 6 класса школы я занимался футболом и круглые сутки пропадал на улице с мячом. Родителям это не нравилось. Мама мне говорила: «Саша, ты должен стать человеком, а не футболистом», — и мне пришлось перейти на баскетбол. Родители посчитали, что двухметровым я всё равно не вырасту, а значит, можно не переживать за мою дальнейшую судьбу. В Дубне мы тоже занимались с коллегами мини-футболом в секции от института и даже участвовали с командой в городских соревнованиях. Но когда я переехал в Коломну, то забросил спорт. Сперва я никого не знал, с кем можно было бы заниматься вместе, а сейчас уже банально не хватает на это времени.

— Я знаю, что ты — фанат ЦСКА. А за какие европейские футбольные клубы ты болеешь?

— Очень люблю итальянские клубы! С детства болею за Ювентус и за сборную Италии по футболу. Мой самый счастливый день — это когда в 2006 году итальянцы стали чемпионами мира. Я тогда был в командировке в Швейцарии и жил в Женеве в итальянском квартале. Поэтому я до самого утра отмечал победу с итальянцами.

— В соцсетях ты часто постишь котиков. Это у тебя хобби такое?

— Да, без них как-то не программируется 🙂 Я и на этот раз подготовил фото, где моя кошка проводит ревизию кода.

— Давай снова поговорим о работе. Какими задачами чаще всего приходится заниматься в C3D Labs?

— С тех пор, как из команды выделили группу C3D Solver, я стал заниматься 2D-решателем, в частности функционалом для параметризации NURBS кривых. Мною были доработаны или созданы с нуля ограничения, вроде касаний или инцидентностей, добавлена возможность фиксации производных вплоть до 3-го порядка в любой точке сплайна, чтобы можно было гладко сопрягать кривые, например, по G2. Вообще сплайн — это довольно сложный объект. Работая с ним, очень легко ошибиться, поэтому была большая головоломка — как сделать так, чтобы всё это работало хорошо и было реализовано просто и понятно для окружающих. Отдельная тема — драггинг сплайнов. При разработке данной функции пришлось пересмотреть модель поведения сплайна, настроить и согласовать поведение большого числа объектов, из которых состоит сплайн и с которыми он взаимодействует. В настоящее время мы переместили фокус на 3D-решатель. Последняя моя работа — это создание паттернов.

— Насколько я понимаю, паттерны — это массивы компонентов. Как они могут быть использованы?

— Я и сам не знаю! Когда мы их создавали, я для себя выработал требование, чтобы API паттернов предоставлял разработчикам ПО как можно больше свободы, и каждый пользователь C3D Solver мог использовать их не только по прямому назначению (создание массивов однотипных компонент), но и как-то по-своему: создавать массивы из объектов разной природы, крутить-вертеть каждый элемент массива по отдельности, настраивая его индивидуальное поведение, или просто использовать паттерн, например, для создания средней точки на дуге. Ещё когда мы обсуждали паттерны с моим руководителем Сашей Максименко, я сказал ему, что не хочу ограничивать использование массивов. Пусть пользователи сами решают, для какой задачи им будет удобно их применить, а мы только предоставим для этого соответствующий инструментарий. Хочется, чтобы у нас это получилось.

— Да, кстати, как тебе работается под руководством Александра Максименко?

— Отлично! Я думаю, что мы друг друга довольно хорошо понимаем. Саша — профессионал очень высокого уровня, очень многому меня научивший. Вообще, люблю людей, у которых постоянно можно учиться чему-то новому. И Саша именно такой человек!

— Ребята мне сказали, что ты — поклонник продукции Apple. У тебя даже ПО Visual Studio 2015 на днях отказалось устанавливаться под Windows. Скажи, как ты согласился компилировать ядро под Android?

— Меня никто не заставлял. Можно сказать, что я сам на себя перетянул обязанность по сборке C3D под Linux и Android. Просто потому, что мне это нравится. Я даже, наверное, не столько поклонник Mac, сколько любитель Linux. Для интереса я сперва начал собирать ядро, затем написал систему автосборки на Python, чтобы не мучиться. Вот так на прикладной задаче я решил изучить Python. Получилось извлечь пользу не только для себя лично, но и для C3D Labs тоже. А учитывая, что у меня техпроцесс уже был налажен, то было не сложно написать скрипт, чтобы ядро собиралось и для Android.

— Не пробовал запускать тестовое приложение C3D на Android?

— Когда SolidEng (корейский заказчик C3D Labs) испытывали наши технологии, они обращались с вопросами о том, как лучше организовать взаимодействие, потому что под Android обычно программируют на Java. Так мне пришлось изучить азы Java, чтобы показать наглядно, как можно связать с этим языком программирования наше ядро, написанное на C++. Позже они попросили продемонстрировать, как прорисовывать графику, используя нашу триангуляционную сетку, и я написал простенькое приложение под Android, демонстрирующее выполнение булевых операций и разные трансформации с получившимся телом. Хоть приложение и элементарное, но пришлось попотеть: я ведь раньше никогда не программировал ни на Java, ни, тем более, ничего не писал под Android. Кроме того, работать надо было быстро, потому что у SolidEng истекал срок тестирования и близилось время принятия решения о лицензировании или не лицензировании нашего ядра. Но всё получилось! И теперь этот пример доступен всем заказчикам, которые решат написать приложение под Android с использованием C3D.

— При общении с корейцами не было проблем с коммуникацией?

— Всё было довольно понятно. Корейцы — предельно корректные люди, они всегда очень вежливо общаются. Когда у них шёл активный этап тестирования, то почти каждый день мы с ними переписывались на английском. Они просили меня что-нибудь объяснить, я отвечал, и они снова задавали мне вопросы. Уже после того, как SolidEng лицензировал ядро, последовал только один вопрос по графическому отображению геометрии. Наверное, они довольно хорошо изучили C3D за время тестирования и теперь полностью самостоятельно разрабатывают свой софт на C3D.

— Что тебе больше всего нравится в рабочем процессе?

— Как и все, наверное, кто занимается наукой и математикой, я очень ценю моменты прозрения. Вот ты решаешь какую-то трудную задачу, мучаешься, не спишь ночами, всё время думаешь о ней. Вдруг в голове что-то щёлкает, и ты неожиданно понимаешь, что нашёл решение. В такие моменты я ощущаю себя самым счастливым человеком в мире! Надо мною даже жена иногда смеётся. Говорит, что Саша отключился от мира, а потом поздравляет с возвращением на Землю.

— Откуда ты черпаешь вдохновение, новые идеи? «Ньютоновские яблоки» ведь не всё время с неба падают?

— Я не знаю, как относиться к вдохновению. Благодаря университету, хорошим преподавателям и научным руководителям я был обучен различным методам решения задач. Поэтому я всегда стараюсь, в первую очередь, решать задачу самостоятельно. Конечно, читаю и специализированные статьи. Если говорить об идеях, то есть вещь, которая меня не перестаёт удивлять: ты какое-то время решаешь задачу, а потом вдруг узнаёшь, что где-то ещё в мире совершенно другие люди пришли к примерно такому же решению. С одной стороны, это всегда повышает самооценку — умные люди додумались, и ты тоже смог. А с другой стороны, думаешь, что все эти знания бренны и ничтожны, раз уж так много людей приходят к ним независимо друг от друга.

— Ты очень много занимался наукой раньше. Откуда такая тяга к знаниям?

— Мама с детства говорила мне, что главное — это знания, поэтому нужно много учиться. Со временем я полюбил учёбу. Особую роль в привитии мне любви к знаниям сыграла моя любимая учительница по русскому языку и литературе Валентина Николаевна Самохвалова. Она научила меня одному золотому правилу: «Когда не знаешь, с чего начать — начинай с вопроса». Тогда она так учила нас писать сочинения, а сегодня — это мой главный принцип решения задач. Если я не знаю, что делать и с чего начинать, то я записываю в тетради вопрос и начинаю методично на него отвечать. Я считаю, что правильно поставленный вопрос или сформулированная проблема — это уже половина решения сложной задачи. Вот так преподаватель по русскому языку поучаствовала в моём становлении как математика.

— Какая твоя любимая литература? Читаешь художественные произведения?

— Сейчас я уже гораздо меньше читаю, а было время в школьные годы, когда я читал без остановки какими-то страшными запоями. Люблю русскую классическую литературу. Многие произведения любимых Достоевского и Гоголя я перечитывал по многу раз. Если говорить о произведениях, то я обожаю «Братьев Карамазовых», которые мне дались только с 3 раза, и «Доктор Живаго» Пастернака за удивительно красивый русский язык!

— Какие передачи смотришь?

— Я постоянно смотрю футбол. Ещё люблю посмотреть видео про науку с сайта postnauka.ru

— Есть выпускники вузов, которые ещё только приглядываются к различным профессиям. Чем их может привлечь разработка ядра C3D?

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

— Ядро C3D может конкурировать с зарубежными ядрами?

— Не «может», а «обязано». В рабочем процессе должны присутствовать здоровые амбиции. Мне всегда хочется делать что-то лучше всех в мире, ну или хотя бы на уровне лучших. Не вижу никакого смысла делать поделки.

— Почему разработчикам инженерного софтвера следует использовать C3D?

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

— Как параметризация может изменить облик современной трёхмерной системы моделирования?

— Она его уже изменила. Как и всё, что делается в области САПР, параметризация упростила выполнение ряда задач для проектировщиков и инженеров, избавила их от ненужной рутины, а также увеличила ряд возможностей. Мне хочется, чтобы в будущем функционал параметризации различных поверхностей и кривых в 3D стал столь же богат и разнообразен, как функционал параметризации кривых в 2D. Это может дать много новых возможностей инженерам.

— Какие тренды наметились в области САПР?

— Судя по публикациям, сейчас очень много пишут о прямом вариационном моделировании и гибридном моделировании. То есть речь идёт о более глубокой связи моделирования, основанного на истории построения 3D-модели, с моделированием без истории построения. Но пока, насколько я понимаю, «серебряной пули» нет, так как ещё не нашли такого решения, которое бы позволило идеально скрестить эти две методологии проектирования. Но это задача уровня САПР, и над её решением должны думать люди, которые занимаются CAD-системами. Уже от них к «ядерщикам» должны приходить задачи, которые требуется решить, чтобы в CAD-системе можно было осуществить задуманное. Ну, а наш собственные тренд — это как можно больше общаться с заказчиками и узнавать, что им конкретно нужно, чтобы облегчить творческий процесс моделирования и уменьшить долю труда, уходящую на написание кода.

Как математическая библиотека КОМПАС-3D превратилась в C3D Toolkit для разработчиков САПР → часть 2

В первой части статьи мы рассказали о геометрических ядрах в общем и объяснили, в чём их отличие от игровых графических движков. Далее представляем наше собственное 3D-ядро для работы с точной геометрией и тот программный продукт, который в итоге получился.

История российского геометрического ядра C3D

Началом работ над геометрическим моделированием в КОМПАС-3D официально считается 1995 год, именно тогда Николай Николаевич Голованов с группой коллег из коломенского офиса АСКОН заложили первые математические основы будущего ядра. Потребовалось четыре года, чтобы превратить математические алгоритмы в первый жизнеспособный продукт. С тех пор геометрическое ядро постоянно эволюционирует, обеспечивая функциональное развитие КОМПАС-3D и целого ряда других программных решений в России и за рубежом.

Scott Voltage Bike FR20

Велосипед Scott Voltage FR20, спроектированный в КОМПАС-3D с использованием геометрии C3D (автор модели: Алексей Богданов, г. Полтава)

В 2012 году математическое подразделение АСКОН было трансформировано в отдельную бизнес-единицу C3D Labs для разработки и продвижения на рынке геометрического ядра C3D. Такое решение принималось исходя из опыта мировых лидеров САПР-индустрии с опорой на то, что ядро является уже достаточно зрелым, чтобы продолжить свой жизненный путь в качестве самостоятельного продукта.

C3D Team

Команда C3D Labs, декабрь 2016 (Картинка кликабельна)

Сейчас прошло уже более 20 лет с момента начала разработки геометрического ядра C3D. Всё это время наши математики и программисты развивали его: улучшали архитектуру, создавали новую функциональность, модернизировали ранее реализованные методы. Почему мы акцентируем на этом внимание? Мы просто хотим сказать, что без уникального опыта, основанного на практическом применении на десятках и сотнях тысяч рабочих мест КОМПАС-3D, невозможно было бы создать конкурентоспособное 3D-ядро. Более того, разработать подобный продукт с нуля без постоянного использования и тестирования не по силам ни одной команде.

Деление геометрического ядра на компоненты

Если вы внимательно посмотрите на хронологию развития ядра C3D, то увидите, что с годами в него вошли не только функции моделирования, но также параметризация и конвертация данных. Разумеется, разработчики САПР это тоже заметили, поэтому от них стали всё чаще поступать запросы о лицензировании отдельных функциональных блоков ядра (например, только импорта/экспорта 3D-моделей или только 2D-решателя). Это привело к формированию целого набора инструментальных средств для создания инженерного программного обеспечения – C3D Toolkit:

C3D Toolkit

Сегодня C3D Toolkit объединяет в себе важнейшие модули САПР:


    осуществляет построение и редактирование геометрических моделей, расчёт триангуляции, построение плоских проекций, вычисление массово-центровочных характеристик и определение столкновений элементов модели;
    устанавливает зависимости между различными элементами геометрической модели при помощи размеров и логических ограничений и обеспечивает сохранность заданных связей при изменении размеров, параметров модели, перемещении отдельных элементов модели или внесении иных изменений в геометрию модели;
    управляет настройками визуальной сцены для статического и динамического режимов отрисовки геометрии, а также обеспечивает интерактивное взаимодействие пользователя с интерфейсом приложения;
    осуществляет обмен данными о геометрической модели с другими системами проектирования, поддерживает форматы: JT, IGES, STEP (AP203, AP214, AP242), Parasolid X_T/X_B, ACIS SAT, STL, VRML.

Рекомендации для разработчиков

Если вы решили создать собственное инженерное приложение, то, используя программные компоненты C3D Toolkit, вы можете получить доступ к их низкоуровневым объектам в исходном виде: точкам, матрицам, системам координат, кривым, поверхностям, телам, различным вспомогательным объектам и т.д. Если же вы захотите применить в разработке API-интерфейс КОМПАС-3D, тогда придется работать с некоторой «обёрткой» над его избранными высокоуровневыми методами, среди которых есть как методы C3D Modeler, так и надстроенные над ними методы самого КОМПАС-3D (в большей степени).

На следующем рисунке показано, как разрабатываемое для КОМПАС-3D приложение взаимодействует через API с различными компонентами C3D Toolkit:

Взаимодействие через API
Взаимодействие разрабатываемого приложения с компонентами C3D Toolkit через API КОМПАС-3D (синие блоки относятся к C3D Toolkit, белые — к КОМПАС-3D)

Следовательно, удобно и логично использовать C3D Toolkit именно тогда, когда вам нужно создать программный продукт без привязки к конкретной САПР. Это могут быть самостоятельные системы автоматизированного проектирования, системы инженерного анализа или системы подготовки управляющих программ для станков с ЧПУ, функционирование которых связано с построением и обработкой геометрических моделей. Если немного пофантазировать и пойти дальше, то можно внедрить компоненты C3D Toolkit в конечно-пользовательские приложения для 3D-сканирования и печати, генеративного дизайна с топологической оптимизацией или концептуального проектирования изделий в очках дополненной реальности с управлением мыслями жестами.

Вы сможете лучше разобраться с устройством C3D Toolkit, если будете использовать в работе: открытый доступ к технической документации, периодически обновляемый PDF-мануал, обучающие видеоролики на официальном канале C3D Labs в YouTube (пока их не так много, со временем мы планируем это исправить), а также тестовые приложения, которое мы предоставляем в исходных кодах:

C3D тест для Windows C3D тест для Android

Тестовое приложение для Windows и демо-приложение для Andorid (Картинки кликабельны)

По сути, каждое тестовое приложение — это небольшая система проектирования с реализованными функциями геометрического ядра C3D Modeler. В тестах отсутствует красивый пользовательский интерфейс и весь функционал завязан на командное меню, но это не мешает использовать его по принципу copy-paste, позволяя в кратчайшие сроки создавать рабочие версии проектов для разных операционных систем (Windows, Mac, Linux) с необходимым набором операций двухмерного и трехмерного моделирования.

Если исходные коды вас не очень интересуют, то ознакомиться с результатами совместного использования компонентов C3D Modeler, C3D Vision и C3D Converter можно, скачав бесплатное приложение C3D Viewer для просмотра 3D-моделей в распространенных форматах STEP, IGES, Parasolid X_T, X_B, ACIS SAT, STL, VRML, C3D.

Опыт использования C3D Toolkit

Как видно из истории, изначально геометрическое ядро разрабатывалось в АСКОН для нужд машиностроительной системы КОМПАС-3D. Казалось бы, это и есть «потолок» его использования. На практике же ничего не мешает применять компоненты C3D Toolkit в инженерном ПО с любой другой специализацией. Компания АСКОН это наглядно продемонстрировала на примере создания системы архитектурно-строительного проектирования Renga Architecture. Использование программного обеспечения C3D Labs позволило разработчикам совместного предприятия АСКОН и 1С улучшить функциональные возможности системы и сконцентрироваться над прикладными задачами приложения, не отвлекаясь на решение базовых задач геометрического моделирования:

Максим Нечипоренко, заместитель генерального директора Renga Software:

Одним из важнейших компонентов нашего ПО является математическое ядро. До того, как мы приняли решение о создании Renga, в недрах АСКОН был еще один исследовательский проект по созданию CAD нового поколения. Несмотря на то, что у нас было собственное ядро, на котором написан КОМПАС-3D, перед нами стояла задача исследовать рынок. Проводились масштабные исследования ядер, которые используются в других CAD и которые можно лицензировать. Мы искали что-то еще более эффективное, то, на чем можно будет разрабатывать что-то более современное. Провели исследование и пришли к выводу, что наше ядро довольно хорошее, даже стоящее. Интересным моментом оказалось то, что как только запустился проект C3D Labs, ядро стало лицензироваться другими разработчиками, в том числе внешними. У нас появились и шведские, и корейские заказчики. В итоге было принято решение, что Renga тоже будет на этом ядре.

(выдержка из интервью Альберта Сумина)

Кто ещё применяет C3D Toolkit? На сегодняшний день это, главным образом, разработчики САПР в России и за рубежом. Среди них есть представители машиностроительной, деревообрабатывающей и архитектурно-строительной отраслей, разработчики расчётного софта и приложений для станков с ЧПУ, крупные корпорации, а также представители прогрессивного класса, активно инвестирующие в облачные и мобильные технологии. По запросу последних мы даже перевели параметрический решатель C3D Solver на язык JavaScript:

C3D Solver for JavaScript

Браузерное приложение на основе C3D Solver для JavaScript (Картинка кликабельна)

Использование JavaScript позволяет осуществлять расчёты в веб-приложениях на стороне клиента. При этом есть интересный опыт разработки облачного сервиса для 3D-проектирования и дизайна помещений, в котором геометрические вычисления производятся на стороне сервера. Описание проекта представлено в статье на Хабрахабр известного специалиста в области разработки мебельных САПР — Романа Колесникова.

Все эти программы ориентированы на конечных пользователей. Но есть и другие примеры. Так, компания с мировым именем ЛЕДАС из Новосибирского Академгородка, сотрудники которой на протяжении многих лет создавали наукоёмкие технологии для Dassault Systemes, разработала встраиваемый компонент для сравнения геометрии 3D-моделей в различных форматах данных. LEDAS Geometry Comparison на базе C3D Modeler недавно был интегрирован в плагин для системы Inventor. Получилось как бы «ядро в ядре» или своеобразная матрёшка из технологий:

Демонстрационное приложение LEDAS Geometry Comparison (LGC)

А ещё, благодаря наличию у C3D Labs специальной программы поддержки образования, российские вузы получают C3D Toolkit на привлекательных условиях. Как правило, учебные заведения используют «ядерные» технологии в обучении будущих математиков-программистов и разработчиков САПР. Студенты выполняют научно-исследовательские работы и пишут различное вузовское ПО. Есть отдельные примеры выполнения коммерческих проектов на базе C3D Toolkit в рамках малых инновационных фирм, активно создаваемых при университетах.

Коммерческие организации и предприятия:

Описание компаний и разрабатываемых ими решений представлено на сайте.

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


Аркадий Камнев
Менеджер по маркетингу в C3D Labs

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *