В этом выпуске «Истории одного ядра» речь пойдет не столько о ядре, сколько о веб-визуализации — и о человеке, благодаря которому это направление стало одним из ключевых для C3D Labs. Представляем интервью с Сергеем Климкиным, руководителем команды разработки C3D Web Vision.
За эти годы я многому научился, это серьезный опыт. Успел поработать и c 2D, и с 3D, и с графикой, и с вебом. Это постоянное развитие.
Рис. 1
У меня с детства технический склад ума, в школе нравилась математика, геометрия, физика, черчение. Нравилось разбирать-собирать машины. В 10-м классе увлекся информатикой. Кем мечтал стать? Наверное, инженером.
Выбирал между коломенским и рязанским политехом, выбор пал на коломенский. Учился на направлении машиностроения.
Годы учебы были очень насыщенными. Самый сложный курс — первый, там много непрофильных предметов, потом уже втягиваешься в учебный процесс.
Было много интересных задач, особенно по программированию. Например, для курсовой на первых курсах надо было написать алгоритм распознавания силуэтов объектов.
Еще мы с другом писали простенький графический движок — на Delphi, с использованием OpenGL, потом стали изучать DirectX и С++. С этого началось знакомство с графикой.
Занимался 3D-моделированием в 3ds Max. Если в школьные годы разбирал машины, то в студенчестве начал моделировать их в 3D — тут и пригодились знания об их устройстве.
Когда стал заниматься 3D-моделированием, появилась мысль попробовать экспортировать модели в игры. Почитал статьи в интернете, и получилось достичь нужного результата, но на этом не остановился. После того как научился моделированию в 3D и экспорту в игровые движки, решил, что можно написать программку для визуализации самому. Начал с изучения скриптов 3ds Max и OpenGL API, сделал плагин для экспорта из графического редактора в свое приложение. Загружал файлы в программе, написанной на Delphi, рисовал при помощи OpenGL. Поначалу визуализация работала медленно, поэтому стал изучать, как это ускорить, освоил VBO, шейдеры. Затем уже все переписали на C++ и DirectX9.
Потом это превратилось в небольшой гоночный движок, и эта работа даже была засчитана в качестве курсовой по системному и объектно-ориентированному программированию.
Что касается веба, на первом курсе я познакомился с одногруппниками, которые до института учились в техникуме и уже имели опыт работы с вебом. Они меня познакомили с инструментами для разработки сайтов. В интернете я нашел курсы по работе с этими инструментами. Сначала освоил разметку, потом создание динамических страниц при помощи PHP, следом — MySQL для хранения данных. К третьему курсу, когда у нас началось обучение Web, я уже написал пару сайтов, за которые мне поставили автоматом оценки по предмету и дали первое место на институтском конкурсе.
Рис. 2
Да, конечно, нас обучали работе в КОМПАС-3D, но я не знал, что его создают в Коломне. Был приятно удивлен, когда на четвертом курсе нас с однокурсником направили на практику в АСКОН. АСКОН тогда внедрял систему управления проектами Redmine, и нашим заданием было написать плагин для веба на Ruby (еще один язык программирования в копилку).
Да, очень хотелось поработать на C++. Мне дали список вопросов для подготовки к собеседованию, я подготовился, успешно прошел собеседование, и со мной заключили договор.
Сначала исправлял ошибки, знакомился с КОМПАС. Работал с 2D. Изучал материалы для повышения квалификации.
Затем начал работать в команде Эдуарда Максименко. Примечательно, что с Эдуардом мы жили в одном подъезде, но не были знакомы — и познакомились уже в офисе. Под его руководством мы многое сделали для КОМПАС в графическом интерфейсе 16-й версии: менеджер документа, редакторы с подсветкой формул, 3D-виджеты. Если по программированию у меня уже были знания, то архитектурные навыки, умение проектировать я перенял от Эдуарда. Он даже помогал мне рисовать схемы проектирования для дипломной работы.
Рис. 3
Но в 2013 году случился перерыв в работе — я пошел в армию.
Я служил в Нижегородской области, в городе Кстово. Был оператором дизельных электростанций. Отслужил год, получил звание младшего сержанта.
Рис. 4
Да, в 2014 году вернулся в КОМПАС, занимался метаданными в 2D. Эдуард в то время переходил в C3D Labs и звал меня в свою команду, я знал все, что нужно, кроме Qt, но решил еще поработать в КОМПАС, параллельно осваивая Qt.
В 2017 году ездил на конференцию, и коллеги рассказали, что в C3D Labs нужен специалист по графике. Меня это заинтересовало, т.к. с графикой я был знаком. Так я снова попал в команду Эдуарда Максименко. Мы работали над движком визуализации C3D Vision.
Рис. 5
Затем появился новый проект — по разработке модуля визуализации 3D-моделей в браузере C3D Web Vision. У меня были хорошие навыки программирования под веб еще со студенческих времен, поэтому я возглавил этот проект.
Рис. 6
Команда постепенно расширялась, приходили новые люди. Долгое время был ведущим разработчиком, официально стал тимлидом в 2024 году, но фактически руководил командой и раньше.
Курс проходил, но гораздо важнее тот опыт, который приобретаешь за годы работы. С опытом по-другому смотришь на все процессы.
Рис. 7
Я считаю, что цель руководителя — вырастить сотрудников. Твой результат — это не твоя конечная разработка, а результат твоих сотрудников. Поэтому важно уметь делегировать. Когда только появляется команда, кажется, что проще все сделать самому, но это ошибка, ведь твои сотрудники не будут расти.
Большая часть моей команды — удаленщики из разных городов. Поначалу возникали сомнения, насколько это будет продуктивно — но практика показывает, что проблем никаких нет, все отлично вкладываются в общее дело.
Я хочу построить команду так, чтобы она без моего координирования могла работать, общаться и была полностью самостоятельной. Ведь именно общение и получение опыта от коллег — важная часть нашей работы. И это удается: в прошлом году ходил в отпуск на целый месяц — и команда эффективно справлялась с задачами без моего участия.
Рис. 8
В планах сделать продукт для веба более комплексным и масштабным, не ограничиваться только визуализацией.
Сейчас активно идет работа над новой версией — C3D Web Vision 2.0, в число ее новинок и улучшений войдет быстрая загрузка крупномасштабных моделей в браузере, переход на WebGL 2.0 и другие важные изменения.
При разработке мы, с одной стороны, ориентируемся на потребности наших клиентов. Многие функции появились именно потому, что на них был запрос от пользователей. С другой стороны, мы стараемся думать наперед: анализируем тенденции рынка и создаем новую функциональность, которая вскоре станет востребованной. Нужно всегда быть на шаг впереди.
Ходим с ребятами в спортзал — у нас есть небольшой прямо в офисе. Иногда присоединяюсь к сплавам на байдарках, которые устраивают коллеги. Зимой катаюсь на сноуборде, уже посещал Архыз и Сочи, в планах другие горнолыжные курорты. Летом бываю в деревне, там всегда много дел.
Рис. 9
Рис. 10
Хотелось бы, чтобы создаваемый нами продукт был востребованным, развивался и «вошел в историю».
Другие выпуски «Истории одного ядра»:
История одного ядра от Андрея Туманина: «Без нашего ядра всё было бы по-другому»
История самого «решательного» компонента ядра C3D от Александра Максименко
История одного 3D-движка от Эдуарда Максименко
История одного ядра от Александра Спивакова
История одного геометрического ядра от Андрея Пенкина
Анна, велосипед и конкурентоспособное 3D-ядро C3D в маленьком и спокойном городе

