Николай Николаевич Голованов
Главный архитектор, C3D Labs, к.т.н.
Выпускник машиностроительного факультета МВТУ им. Баумана. Работал в Конструкторском бюро машиностроения (Коломна). С 1994 года занимается разработкой геометрического ядра. Продолжает разрабатывать математические алгоритмы и улучшать ядро по сей день в компании C3D Labs (входит в АСКОН).
1. Николай Николаевич, давайте вспомним, как все начиналось. Расскажите, пожалуйста, чем вы занимались в Конструкторском бюро машиностроения? Как узнали об АСКОН? На какую позицию пришли?
До прихода в АСКОН я занимался расчётами на прочность изделий, которые проектировал КБМ в г. Коломна. Об АСКОН я узнал от Александра Владимировича Голикова (в настоящее время — председатель совета директоров, группа компаний АСКОН). Он приглашал меня работать, а я сначала отказался. Но через какое-то время у КБМ возникли финансовые трудности. Я перешёл работать в АСКОН и увлёкся. В то время велась работа над пятой версией системы КОМПАС-График, которая отличалась от четвёртой тем, что разрабатывалась на С++ для новой в то время операционной системы Windows.
Рис. 1. Команда ядра в 2010 году
Мне было поручено заниматься математическим аппаратом, который должен был работать с двумерными и трёхмерными геометрическими объектами. Трёхмерные геометрические объекты позволили нам включить в очередное обновление пятой версии системы КОМПАС-График операции над телами. Постепенно расширялся набор трёхмерных геометрических объектов и функционал работы с ними. Спустя пять лет появилась система КОМПАС-3D.
2. Как было принято решение выделить геометрическое ядро из КОМПАС-3D?
Примерно в 2008-2009 годах мы брали на тестирование зарубежные геометрические ядра и проводили сравнение с тем, что у нас было на тот момент. По итогам исследований было принято решение — остаться на своей математике. Тогда же стартовал проект по разработке собственной архитектурно-строительной САПР, сейчас всем известной как Renga. Для работы над новой инженерной системой коллегам нужно было математическое ядро. Так был положен старт процессу выделения математического аппарата построения и обслуживания геометрических объектов в отдельный программный компонент, благо что архитектурно все к этому было готово. Тогда же, в 2011-2012 годах к нам обращались разработчики компаний Нанософт, Базис-Центр и Рубиус. Они брали ядро на тестирование, когда еще и документации толком не было. В 2012 году руководство компании окончательно решило создать дочернее предприятие и начать коммерциализировать геометрическое ядро, получившее имя C3D.
3. Николай Николаевич, чем вы сейчас занимаетесь в компании C3D Labs, какую роль/позицию занимаете? Над какими задачами работаете в настоящее время?
Сегодня я работаю над созданием новых методов геометрического ядра C3D, а также развитием ранее разработанных способов. В то же время обеспечиваю правильную работу и взаимодействие алгоритмов и выполняю функции архитектора геометрического ядра.
Рис. 2. Встреча экспертов ядра C3D и заказчиков на конференции C3Days 2023 в Санкт-Петербурге
Мой рабочий день проходит так же, как и у других математиков-программистов: обсуждения, консультации, размышления над задачей, поиск подхода, реализация решения. В настоящее время модернизирую операцию построения скруглений рёбер в разном окружении и с различными опциями, а также работаю над разработкой полного скругления двух наборов граней движением шарика и диска.
4. Аудитория заказчиков C3D Labs значительно выросла за последние 30 лет. Расскажите, пожалуйста, для новоприбывших любителей клуба ядра C3D, как начинался путь разработки продукта?
Путь разработки геометрического ядра C3D начался с осмысления того, что твёрдое тело будет основным трёхмерным геометрическим объектом. Оно будет точно описывать поверхность моделируемого объекта, отделяющую его внутренний объём от остальной части пространства. Описание всей поверхности моделируемого объекта будет состоять из набора стыкующихся друг с другом граней-поверхностей, у которой можно назначить лицевую и изнаночную стороны. Грани должны стыковаться по рёбрам — кривым пересечения граней. Далее были найдены решения, как выполнять операции над телами так, чтобы в результате операции сохранить принятое описание тел гранями и рёбрами. Потом на базе твёрдых тел появилась возможность создать всё остальное.
5. На ваш взгляд, как изменилось геометрическое ядро C3D за последние 30 лет с точки зрения технического функционала и его использования? Какой путь прошло ядро, как оно выросло?
За тридцать лет геометрическое ядро претерпело много изменений. Мы начинали с описания геометрии реальных и воображаемых объектов с помощью твёрдых тел, для которых можно было выполнять булевы операции, простые скругления рёбер, построение тонкостенного тела. Двумерные геометрические объекты стали использоваться в эскизах для генерации тел. Позже появилось множество операций обработки рёбер и граней, а также разновидностей булевых операций. На базе тел были созданы сборочные единицы, вставки тел и сборочных единиц. Для позиционирования тел в сборочных единицах были разработаны вариационные связи между трёхмерными геометрическими объектами.
Рис. 3. В гостях у индийских партнеров, компании Prototech
Аналогично был создан функционал для установки вариационных зависимостей между двумерными геометрическими объектами в эскизах. Так в ядре появились геометрические ограничения — сегодня этот компонент называется C3D Solver. Каждая конструкторская система при визуализации объектов использует триангуляцию, с помощью которой объекты аппроксимируют плоскими пластинами. Триангуляцию выполняет геометрическое ядро. Аппроксимация тел плоскими пластинами — это первый шаг к полигональному представлению геометрической модели. Сейчас мы развиваем полигональное представление геометрической модели. В прошлом году был выпущен новый продукт — C3D PolyShaper.
Для создания конструкторской документации был разработан модуль построения плоских проекций геометрической модели. Кроме того, был выпущен модуль C3D Collision Detection для определения столкновений элементов геометрической модели между собой. Был создан модуль вычисления площади поверхности, объёма, центра масс, инерционных характеристик и направлений главных осей инерции геометрической модели. Для обмена данными с другими системами был разработан модуль конвертации — C3D Converter, который также стал частью геометрического ядра. Конвертеры постоянно отслеживают обновления поддерживаемых форматов, а также расширяются за счет поддержки новых востребованных форматов.
Рис. 4. На конференции COFES в США с Джоном Хирштиком (Onshape), Леонидом Корельштейном (НТП Трубопровод) и Джоджем Алленом (Siemens PLM)
Активно развивается модуль прямого редактирования. Он позволяет перемещать, поворачивать, удалять, заменять и размножать группу граней, создавать эквидистантные грани для группы граней, удалять скругления, изменять радиус скруглений, деформировать указанные грани заданным образом. Прямое редактирование дает возможность работать с твёрдыми телами любой степени готовности. Разработан функционал моделирования поверхностей различной формы, в том числе поверхностей переменного сечения, позволяющий создавать линейчатые поверхности, поверхности кругового сечения, поверхности конического сечения, поверхности скругления, поверхности с сечением заданной формы. Весь перечисленный функционал постоянно совершенствуется и развивается.
Для увеличения производительности геометрическое ядро C3D использует многопоточность. Для визуализации геометрических объектов ядра мы вначале разработали графическое ядро C3D Vision для работы на десктопах, а затем и браузерное — C3D Web Vision для работы в режиме онлайн. Разработка геометрического ядра в полной мере востребовала особенности объектно-ориентированного подхода, который позволяет создавать кривые и поверхности, обладающие некоторым множеством общих методов, скрыв реализацию этих методов каждой конкретной кривой и поверхности и используемые для этого данные. Исходные коды геометрического ядра C3D компилируются разными компиляторами, и созданные ими выполняемые файлы работают в операционных системах Windows, Linux, MacOS, Android.
6. Какая функциональность геометрического ядра является наиболее сложной с точки зрения базового математического алгоритма и ее программной реализации?
С точки зрения математического алгоритма сложными являются булевы операции, операции построения оболочечного тела и их разновидности. С точки зрения программной реализации сложной оказалась функциональность, связанная со скруглением рёбер и граней из-за большого количества опций и разнообразия конфигураций обрабатываемых элементов. Не менее сложной оказалась функциональность прямого редактирования из-за количества выполняемых операций.
Рис. 5. Алгоритм построения булевой операции
7. Что является более трудоемким в вашей работе: разработать (изобрести) математический алгоритм для определенной функции геометрического ядра или реализовать его в виде программного кода, который успешно работает на реальных промышленных пользовательских сценариях?
Создать программный код по разработанному алгоритму легче, чем разработать алгоритм. Это можно объяснить тем, что очень сложно заранее сказать, сколько времени уйдёт на разработку того или иного математического алгоритма, и гораздо легче оценить, сколько времени потребуется на программную реализацию того или иного математического алгоритма.
Рис. 6. Математический алгоритм
8. Ожидаются ли какие-либо революции в мире геометрических ядер? Облачные ядра, ядра на GPU, AI в моделировании, воксельные и полигональные ядра — есть ли в этом списке что-то реальное, важное, актуальное?
Всё упомянутое в этом списке является актуальным. Полигональные ядра успешно применяются в компьютерных играх, моделировании биологических объектов, при гибридном моделировании. Воксельные модели востребованы в медицине. Разрабатываются «облачные ядра». Во многих САПР там, где возможно, используются параллельные вычисления на графических процессорах. Искусственный интеллект применяется в стоматологических и других САПР для оптимизации формы моделируемых объектов. Получается, что революция в мире геометрических ядер уже идёт. Жизнь показывает, что новое возникает на стыке технологий.
Рис. 7. Примеры скруглений
9. Какие главные успехи вы бы выделили: технологические и бизнес-прорывы в 30-летней истории C3D?
Главный успех в истории C3D состоит в том, что ядро востребовано, оно используется десятками компаний у нас в стране и за рубежом. Это стало возможным благодаря кропотливой работе по популяризации ядра и рабочим свойствам самого ядра.
10. Существует ли теоретически возможный идеал ядра или же развитие приложений будет бесконечно выдвигать новые серьёзные требования? Можете ли вы назвать несколько фундаментальных временных недостатков даже лучших ядер и, в частности, ядра C3D?
Если теоретически возможный идеал геометрического ядра и существует, то он остаётся недостижимым потому, что практика постоянно выдвигает всё новые и новые требования, которые часто не согласуются с идеалом. Фундаментальных, даже временных недостатков мы не допускаем. Особенностью геометрических ядер является то, что все они устроены по-разному, и из-за этого происходит частичная потеря точности при передаче данных от одного ядра другому.
11. Международным геометрическим ядрам в мире 40 лет. Ядру C3D в этом году исполняется 30 лет. Насколько этот факт влияет на развитие вашего ядра?
Объективно разработка ядра C3D стартовала позже других. Это даёт определённые плюсы: можно посмотреть, какая функциональность будет востребована и какой результат должен получиться в результате работы той или иной команды. Кроме того, мы сразу начали разработку на C++, и нам не пришлось переходить с Fortran, как коллегам. Безусловно, нам пришлось потратить ресурсы на адаптацию кода к современным многопоточным архитектурам, но этот процесс позади, и сегодня C3D — современное ядро, готовое к любым вызовам индустрии.
Рис. 8. Лекция Н.Н. Голованова в Восточно-китайском педагогическом университете в Шанхае
12. Оглядываясь назад, что вы можете сказать о роли геометрических ядер в российской и международной промышленности?
В первую очередь геометрические ядра используются в конструкторских системах моделирования, задача которых заключается в описании геометрической формы проектируемых объектов. Результатом работы конструкторской системы является геометрическая модель, которая позволяет увидеть ещё не существующий объект, вычислить его инерционные характеристики, рассчитать размерные цепи, определить собираемость, проверить работоспособность, выполнить расчет кинематических характеристик проектируемого объекта. Конструкторские системы моделирования позволяют редактировать геометрическую модель с целью её улучшения или построения аналогов. Зная геометрическую форму, можно рассчитать траекторию режущего инструмента для механической обработки объекта. При выбранной технологии изготовления объекта геометрическая модель позволяет спроектировать оснастку и выполнить подготовку производства, а также проверить саму возможность изготовления объекта данным способом и качество этого изготовления.
Рис. 9. На конференции COFES Russia в Санкт-Петербурге с Кеном Версприллом, изобретателем NURBS
Кроме конструкторских систем существуют другие системы автоматизированного проектирования, которые выполняют расчёты прочности, расчёты теплового состояния, газодинамические расчёты, расчёты электромагнитных полей и многое другое. Во всех этих системах нужно знать геометрическую форму проектируемого объекта, поэтому в той или иной степени геометрические ядра востребованы в этих системах проектирования. Переоценить роль геометрических ядер в российской и международной промышленности довольно сложно. Геометрические ядра автоматизируют труд конструкторов, архитекторов, технологов, помогают им в творчестве, повышают качество проектируемых объектов.
13. Как вы оцениваете уровень подготовки молодых специалистов, которые приходят работать в компанию C3D Labs? Какие преимущества вы можете отметить у современного поколения в образовании и чего им, может быть, не хватает для работы математиком-программистом?
Молодые специалисты, приходящие к нам работать, обладают достаточными знаниями математики, чтобы развивать геометрическое ядро. Особенно хорошо они знают современные языки программирования и применяют на практике все их возможности. Это, конечно, преимущество молодого поколения. Предыдущее поколение старается создать дружественную атмосферу в коллективе, помогает молодым освоить то, что уже создано в геометрическом ядре C3D. Если кому-то и не хватает опыта и знания огромной материальной части, то со временем это пройдёт.
Важно отметить, что с 2020 года C3D Labs сотрудничает с Коломенским институтом (филиалом) Московского политехнического университета. Наши математики-разработчики совмещают основное место работы и преподавательскую деятельность. Коллеги преподают на кафедре автоматизации производства и информационных технологий по специальности «информатика и вычислительная техника». Они читают лекции и принимают практические работы студентов. Эксперты дают понять молодым специалистам, с чем им придется работать, какие задачи стоят перед математиками-программистами, как живет и функционирует геометрическое ядро C3D и что стоит за его развитием.
Рис. 10. Математики-программисты и стажеры в коломенском офисе C3D Labs
Таким образом, АСКОН и C3D Labs решают одну из ключевых задач российской промышленности — задел на будущее и формирование кадрового резерва в сфере САПР и разработки геометрического ядра.
14. Расскажите, немного о вашей книге «Геометрическое моделирование» — для кого она написана, кто ее читатель и где ее можно найти? Планируете ли вы ее обновление?
Когда я пришёл в АСКОН, где стал заниматься разработкой математического аппарата системы КОМПАС-3D, я пытался найти литературу с описанием алгоритмов систем геометрического моделирования. Оказалось, что таких книг нет, а есть отдельные статьи с описанием сплайнов, алгоритмов поиска и тому подобное. Я решил формализовать идеи, которые использовал в работе. Из накопленного материала получилась книга «Геометрическое моделирование».
В издании изложены подходы, методы и алгоритмы создания численных моделей геометрии реальных и воображаемых объектов. Рассмотрены состав геометрической модели, принципы описания геометрической формы, методы установки взаимосвязей между элементами модели. Приведены способы построения кривых и поверхностей для создания твёрдых тел. Дана теория B-сплайнов и их применение в кривых и поверхностях с использованием неоднородных рациональных B-сплайнов (NURBS).
Рис. 11. Н.Н. Голованов подписывает новое издание книги «Геометрическое моделирование»
Книгу я писал для себя и мне подобных разработчиков программного обеспечения. Издание предназначено для специалистов по системам автоматизированного проектирования, а также будет полезно преподавателям и студентам высших учебных заведений.
Рис. 12. На конференции Графикон во Владивостоке, где впервые прошла презентация книги «Геометрическое моделирование»
Книга переведена на английский язык и доступна за рубежом. Она оказалась полезной для наших разработчиков и некоторых программистов в других странах. Книгу я правлю и дописываю. Примерно каждые пять лет выходит новая версия. В 2024 году вышло очередное издание. Книгу можно приобрести, обратившись в издательство ДМК Пресс.
15. Как вы считаете, в каком направлении будут развиваться геометрические ядра в ближайшие 10 лет?
Геометрические ядра в последние годы становятся гибридными — поддерживают граничное и полигональное представления, моделируют пористые структуры с регулярным или хаотичным заполнением, участвуют в геометрической оптимизации. Думаю, что в ближайшие 10 лет геометрические ядра продолжат развивать эти направления.
16. Что вы можете пожелать геометрическому ядру C3D на следующие 30 лет?
За всем, что связано с геометрическим ядром C3D, стоят люди — те, кто принимает решения о продукте, и те, кто внедряет принятые решения. Было много споров: оставаться ли нам двумерными или идти в трёхмерное пространство, тратить ли время и силы на разработку своего геометрического ядра или проще приобрести готовое… Важно, что в прошлом принимались правильные решения, которые дают очевидные результаты для индустрии САПР в настоящее время и порождают задел на будущее для инженерного ПО. Желаю геометрическому ядру C3D успешно развиваться, делая счастливыми его пользователей.
Рис. 13. Команда C3D Labs на ежегодной конференции для разработчиков C3Days 2024 в Москве
Реклама. ООО «С3Д Лабс» ИНН 7715938849. erid: 2SDnjcxM5gq