03.11.2017

История одного ядра от Юрия Козулина

«Все наши заказчики помогают в развитии продуктов и участвуют в формировании планов на будущее. Мы это прекрасно понимаем и ценим»

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

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


Юрий Козулин, кандидат технических наук, руководитель разработки C3D Modeler

- Юрий, я бы хотел начать интервью с традиционного вопроса: где ты родился, учился и вырос?

- Я родился в городе Да́угавпилс в семье военного инженера и врача. Будучи школьником, успел поучиться в Латвии, Литве и Германии (тогда ещё ГДР). Затем оказался в Рязани, когда наших военных начали выводить из ГДР.

- Какой язык ты учил в школе?

- В школе изучал немецкий язык, а в институте начал учить английский. В итоге от немецкого языка у меня остались в памяти только остаточные воспоминания из-за отсутствия практики.

- Тяжело было часто менять школы?

- В Прибалтике и Германии я себя чувствовал комфортно, но в рязанской школе я первые годы приживался с трудом. Иногда случались конфликты с одноклассниками. Например, весь класс сбежит с урока географии, а я останусь. Так продолжалось до тех пор, пока после 8 класса из тех, кто хотел учиться, не сформировали отдельный физико-математический класс.

- Наверное, учёба с физико-математическим уклоном оказала большое влияние на твоё поступление в технический вуз?

- Любовь к точным наукам мне привила учитель математики — Рязанцева Гретта Карловна. Она подтолкнула меня к учебе в заочной физико-математической школе Московского Физтеха (ЗФТШ МФТИ). Другим моим любимым предметом была физика, где я мог применять знания из математики. Я участвовал в нескольких областных олимпиадах по физике, где занимал 2 и 3 места. Ещё увлекался радиотехникой и несколько лет ходил в кружок в своем районе. Это привело к тому, что сначала я хотел поступать на факультет радиотехники и кибернетики (ФРТК) в Физтехе. Но туда я не прошёл по баллам, поэтому в 1995 году поступил на факультет аэрофизики и космических исследований (ФАКИ). Спустя 6 лет учебы я закончил институт, получив дипломы бакалавра и магистра, и успешно поступил в аспирантуру.

- Чем ты занимался в аспирантуре?

- Я учился и работал. Ещё участвовал в международном российско-американском проекте RAMOS (Russian-American Observation Satellite), где исследовал возможность использования стереореконструкции циклонов для прогноза их развития в рамках специальности 05.13.18 «Математическое моделирование, численные методы и комплексы программ». По завершении аспирантуры я защитил кандидатскую и стал к.т.н.

- Ты посещал США в рамках международного сотрудничества?

- К сожалению, нет. Меня собирались пригласить в США, однако наступившее похолодание в отношениях между двумя странами не оставило никаких шансов. Общие работы по проекту понемногу сошли на нет. Но я успел получить хороший опыт работы по специальности. Так, в рамках работы над проектом я сперва трудился в ОКБ «Топаз», который входил в научно-производственное объединение «Астрофизика». После его расформирования меня перевели во ФГУП «ЦНИИ «Комета».

- Чем ты ещё занимался в студенческие годы?

- Летом 1997 или 1998 года (точно не помню) я летал в г. Белоярский проверять состояние коррозионной защиты газопроводов в Ханты-Мансийском автономном округе.

- Как ты там оказался?

- На первых курсах института у меня была тема бакалаврского диплома, связанная с отработкой методики регулировки феррозондов, которые использовали в диагностическом комплексе для проверки газопроводов. Мне тогда сказали: «Разработал методику? Молодец. Теперь езжай и проверяй в поле!». Вот я и поехал. Город Белоярский находится недалеко от Северного полярного круга. Летом туда можно добраться только по воздуху или по рекам (Казым, Обь), а в холодное время года — по зимнику через болота. На следующий год меня уже не стали так далеко засылать, поэтому я занимался проверкой газопроводов в Тверской области.

- Понравилась сибирская командировка?

- Сибирь оставила хорошие впечатления, если не считать насекомых. Не забуду кровавые кольца на кистях, где вгрызалась мошка, проникая в зазоры между перчатками и рукавами! Ещё в тех краях я впервые попробовал свежемороженую рыбу. Помню, это был муксун. Очень вкусная рыба.


Город Белоярский Ханты-Мансийского автономного округа (вид сверху)
 

Юрий на фоне самодельного болотохода

- Куда ты устроился работать после аспирантуры?

- После института я целенаправленно искал работу программистом с уклоном в сторону математики или физики. АСКОН оказался ближе всего к дому. Здесь стоит отметить, что после защиты диссертации я женился и, честно говоря, не сильно хотел покидать родные края. Хотя были интересные варианты в Москве и Новосибирске.

- Теперь ты живёшь в Коломне?

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

- Не жалеешь о таком решении? Сколько времени у тебя уходит на дорогу?

- В пути на работу я провожу больше часа. По «столичным» меркам – это вполне нормально. Но после зимней езды, конечно, добавляется седых волос. Часто приходится видеть страшные аварии на трассе.

- Мне рассказывали, что в АСКОН в Коломне работает несколько человек из Рязани, и вы ездите за рулём по очереди. Зачем вы это делаете?

- Мы решили водить по очереди для экономии средств. Те, кто без личного транспорта, скидываются на бензин, а водители договариваются между собой при помощи взаимозачётов. Чтобы не возникало споров, мы ведём специальную таблицу.

- Давай, теперь поговорим о работе. Когда ты пришёл в АСКОН, то сразу попал в команду к математикам?

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

- Что ты делал, когда пришёл в группу математики?

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

- Что ты можешь выделить из нового функционала C3D Modeler, которым тебе приходится заниматься?

- Для меня уже всё давно перемешалось. Я успел поработать почти во всех областях разработки геометрического ядра и даже немного позанимался конвертацией (в плане приведения её в нормальный вид). Однако параметризации я не касался.

- Расскажи о каком-нибудь ярком эпизоде в своей работе.

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

- Что интересного в этом было с точки зрения математики? С чем пришлось столкнуться?

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

- Можешь выделить задачу, которой ты долго занимался, но так и не смог её решить?

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


Операция построения тонкостенной оболочки, доработанная Ю. Козулиным
 

Построение булевой операции (объединение цилиндра и тела заметания)

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

- Да, в прошлом году я занимался производительностью, хотя уделять этому вопросу 100% рабочего времени не получалось. Всегда находились срочные ошибки, которые нужно было исправлять. В этом есть основная сложность в работе над увеличением производительности – более высокий приоритет имеет исправление ошибок в ядре. Бывает, что это приводит к замедлению некоторых операций. Поэтому есть условная «борьба» между производительностью и функциональностью: повышение качества усложняет задачу для повышения производительности. Сегодня я продолжаю заниматься производительностью по части алгоритмических улучшений. Распараллеливания я стараюсь не касаться, за исключением тех случаев, когда использование нескольких потоков приводит к ошибкам в расчетах.

- С кем из команды C3D Labs тебе приходится больше всего взаимодействовать?

- Мне гораздо проще выделить тех, с кем я меньше всего взаимодействую – это коллеги, которые занимаются параметрическим ядром. Тот же C3D Converter гораздо сильнее интегрирован с C3D Modeler, чем C3D Solver.

- Можно ли физически отделить геометрию, параметризацию и конвертацию друг от друга?

- Конвертеры используют в своей работе геометрическую основу (кривые и поверхности), поэтому они неотделимы от геометрического ядра. В C3D Toolkit можно просто закрыть доступ к функциям C3D Converter, что мы и делаем на уровне лицензий. Но физически конвертеры никуда не исчезают. А вот решатель параметрических ограничений C3D Solver потенциально «отрезаем» от геометрического ядра, так как у него с ним не так много общих объектов. Больше скажу: когда я занимался вопросами производительности, то извлек в отдельный файл все алгоритмы расчёта поверхности NURBS, затем передал их коллегам для изолированного использования в шейдерах. Для работы данных алгоритмов нужны всего два объекта ядра – это вектор и точка.

- Ты много работаешь с ошибками, расскажи про ServiceDESK. Какое отношение ты имеешь к этой службе?

- В C3D Labs я являюсь координатором ServiceDESK, но в связи с активизацией работ по производительности в ядре я всё чаще стал делегировать исправление ошибок другим сотрудникам. На сегодняшний день исправление ошибок в C3D Modeler примерно в равных пропорциях распределяется между мной, Николаем Николаевичем Головановым и Сергеем Бирюковым. По части C3D Converter ошибки поступают к Александру Спивакову. Есть ещё отдельная тема, которой занимается Александр Алахвердянц из группы C3D Solver – это проблемы, возникающие в сборках операционных систем, отличных от Windows: Mac, Linux и Android. Кстати говоря, в последнее время мы наблюдаем некоторое насыщение ServiceDESK поступающими от пользователей ошибками (график роста запросов постепенно сглаживается). При этом растёт число незакрытых запросов, потому что остаются ошибки со сложным решением или ошибки, требующие длительного внедрения в систему.

- Есть ли в планах расширение коллектива и приём в штат C3D Labs отдельного человека, который бы занимался техподдержкой?

- Я считаю, что это неправильно – нанимать отдельного человека на исправление ошибок в ServiceDesk. Вероятнее всего, он не выйдет на рабочий режим в течение первого полугода работы, а это эквивалентно тому, что он будет не исправлять имеющиеся ошибки, а генерировать новые. Чтобы этого не произошло, новому сотруднику придется первые годы работать под наставничеством старших коллег c общим пулом ошибок. В связи с чем я считаю, что нам необходимо более полное участие всех сотрудников в ServiceDESK. Нам не нужен администратор техподдержки.

- Насколько разные запросы поступают в ServiceDESK? Бывают ли трудности в общении с заказчиками?

- Вопросы бывают разные: и простые, и сложные. Откровенно дилетантских запросов к нам почти не поступает. Иногда приходят простые запросы. Я это связываю с недостатками документации по C3D Toolkit. В этом плане нам ещё предстоит поработать, чтобы сделать документацию более подробной. Что же касается общения с заказчиками, то любые эмоции, позитивные или негативные, тут неуместны. Если такие эмоции возникают, то они должны быть отложены в сторону. Ответ на обращение выдерживается в строго профессиональном стиле. Ведь, по большому счету, все наши заказчики помогают в развитии продуктов и участвуют в формировании планов на будущее. Мы это прекрасно понимаем и ценим.

- Кто курирует работу с иностранными заказчиками в C3D Labs?

- Как правило, я всегда готов ответить на вопросы от иностранных заказчиков на английском языке. Обычно мне их пересылает по почте Олег Зыков. Преимущественно это обращения со стороны потенциальных пользователей C3D Modeler, запросы от текущих пользователей в ServiceDESK поступают не так часто. Кстати, не я один общаюсь с иностранцами. Например, вопросами по обёртке геометрического ядра под C Sharp (C#) занимается Анна Ладилова, поэтому партнеров из Швеции и Индии консультирует именно она.

- Ты дважды был в заграничных командировках C3D Labs. Первый раз это была Южная Корея. Как всё прошло?

- По итогам первой корейской командировки компания SolarTech лицензировала C3D Toolkit для разработки QuickCADCAM. Встреча прошла успешно. Но в ходе визита мы столкнулись с некоторыми трудностями, которые пришлось оперативно решать. Например, когда мы общались с программистом, представляющим заказчика, то возникли некоторые языковые сложности. Поэтому в качестве вспомогательного инструмента мы вывели на экран планшета онлайн-переводчик с английского языка на корейский и таким образом преодолевали языковые барьеры. Ещё для меня оказалось неожиданностью увидеть на рабочем компьютере заказчика Visual Studio с интерфейсом на корейском языке. Мне было действительно сложно найти нужные команды. Больше мы подобных промахов не совершали и всегда брали с собой ноутбук с предустановленными программами на английском языке.

- Что больше всего запомнилось во время визитов в Корею и США?

- Основной нитью через моё путешествие в Южную Корею прошло ощущение безопасности. В Сеуле очень спокойно, даже несмотря на то, что это – мегаполис. В США меня впечатлили хорошие дороги, спокойная езда и более высокий уровень культуры вождения. Уже по возвращению в Россию было очень трудно не заметить всеобщую внешнюю угрюмость. Оказалось, что люди за границей гораздо приветливее и позитивнее. Это касается обеих стран, в которых я побывал.


Ю. Козулин консультирует заказчика во время командировки в Южную Корею
 

Окрестности отеля The Scottsdale Plaza Resort в Аризоне, на базе которого проводится COFES

- На прошедшем в Аризоне САПРовском мероприятии COFES 2017 много говорилось про топологическую оптимизацию 3D-моделей. Как ты считаешь, если заказчики нам поставят задачу: реализовать такую функциональность в C3D Toolkit – это будет реально сделать?

- В C3D Labs мы не занимаемся физическими расчётами. У нас совершенно иная область деятельности. Но мы можем работать с геометрическими телами. Так что если нам кто-нибудь из партнёров даст оптимизированную 3D-модель на обработку, то мы уже будем думать, как дальше с ней работать. Это не обязательно будет твердое тело, может оказаться и полигональная модель. Так мы приходим к новому направлению, которое нам нужно развить – это работа с полигональными моделями напрямую. Не только их сечение плоскостями, но и булевы операции, а также любые другие функции, которые потребуются пользователю.

- В завершение интервью хотелось бы узнать о твоём хобби. Чем ты увлекаешься вне работы?

- Последние годы как-то нет особо свободного времени на серьезное хобби. Нравится делать плетеные поделки из веревок: браслеты, кашпо под цветы. Раньше увлекался карандашными набросками, занимался фотографией (еще с пленочными фотоаппаратами) в полном ее цикле: с проявкой и печатью. Из-за редкой практики уровень в рисовании упал, но жена с сыном в восторге и от такого уровня. Ещё люблю почитать фантастику. Но в последнее время стало всё труднее найти хорошие книги. В связи со стремлением авторов сделать циклы и заработать на них большие деньги, современная фантастика постепенно перестает быть интересной. Из-за этого я стал перечитывать старых авторов. В книжных магазинах если и совершаю покупки, то преимущественно это – сборники коротких рассказов, в которых иногда можно встретить хорошие истории.


Карандашные наброски, сделанные Юрием специально для сына
 

Плетение браслетов из веревок – основное хобби Ю. Козулина

- Скажи несколько напутственных слов специалистам, которые собираются присоединиться к команде C3D Labs.

- Если втянитесь, назад пути не будет =)


ЧТО ТАКОЕ C3D?

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

//c3dlabs.com/ru/products/c3d-kernel/


Google+