Мы продолжаем серию интервью «История одного ядра» с командой C3D Labs о том, как создается российское геометрическое ядро. Сегодня вы узнаете, как в его составе появилась собственная визуализация — первый программный компонент, полностью разработанный в новейшей истории C3D Labs, т.е. не наследованный из математического подразделения АСКОН и не связанный с системой КОМПАС-3D.
Рассказывает Эдуард Максименко, руководитель разработки C3D Vision.
Эдуард Максименко:
- Должен был стать капитаном дальнего плавания, но уже 22 года занимается разработкой САПР
- Написал первую версию движка визуализации C3D Vision
- Был одним из авторов интерфейса КОМПАС-3D версий с V5 по V16
Если произнести полностью твое имя Эдуард Отариевич Максименко, то услышишь в нем нотки Грузии и Украины. Расскажи о своей семье, откуда такое сочетание?
Мой дедушка, украинец из Харькова, в Великую Отечественную войну воевал на Кавказе, был ранен и лечился в санатории в Цхалтубо, недалеко от Кутаиси, где работала санитаркой моя бабушка, грузинка. Там они познакомились, поженились, и в результате появились мой отец Отар и его брат Николай.
Ты ощущаешь в себе грузинские корни?
Нет. С рождения я жил в России, рос в военном гарнизоне. А что такое гарнизон — это армия, где все национальности смешаны. Грузинского языка я не знаю, хотя в 4-м классе один год проучился в Грузии, какие-то навыки приобрел, но потом все забылось. Отрывки фраз помню, немного могу понять разговор, о чем речь идет. Мой отец, когда уходил в армию, на русском не очень хорошо говорил, его родной язык — грузинский. Но за 25 лет службы у него даже акцент пропал.
Папа — военный?
Моряк. Сначала мы жили в Севастополе — там я пошел в первый класс. Потом отца перевели на Дальний Восток. Это был закрытый военный гарнизон, естественно секретный, где базировались дизельные подводные лодки. Назывался он Петропавловск-Камчатский-54, также известный как бухта «Финвал» или Бечевинка. Там мы прожили 13 лет до 1990 года. Сейчас поселок заброшен, по нему медведи ходят.
Как ты подходил к выбору будущей профессии?
Я мечтал посвятить свою жизнь морю, стать капитаном и для реализации этой мечты в 1988 году поступил в Петропавловск-Камчатское высшее инженерное морское училище. Значительную роль в моем выборе сыграл отец, его рекомендации. После училища я бы вышел вторым помощником капитана, а это статус — один из главных людей на судне.
Я начал учиться и учился неплохо. Но в конце 80-х годов еще не было отсрочки от армии для студентов вузов, и после года учебы меня призвали. Пока я служил, отец демобилизовался и наша семья переехала в Севастополь. После армии, по семейным обстоятельствам, я вернулся не в училище, а к родителям в Крым, и через год мы перебрались в Коломну, откуда родом моя мама
Ты был морским человеком, видел себя капитаном, и тут все изменилось. Как далось привыкание к другой жизни, не той, к которой себя готовил?
Сложно было, тоска была. Двадцать лет я прожил на берегу сначала Черного моря, потом Тихого океана. Буквально 100 метров от дома до моря — я его видел каждый день. Интересы и увлечения были связаны с морем: рыбу ловили, крабов и морских звезд собирали, модели кораблей делали. Если бы не семейные обстоятельства, я обязательно стал бы военным или связал свою жизнь с гражданским флотом. А так мне пришлось уехать и, как бы пафосно ни звучало, забыть о своих желаниях, начав жизнь с нуля в Коломне.
Хотя я уже был в достаточно сознательном возрасте, 21 год, что делать дальше не представлял. Перепробовал ряд рабочих профессий — от сторожа до электрика, после чего стала очевидной необходимость получения высшего образования. В 1993 году я поступил в Московский государственный открытый университет на специальность «Автоматика и телемеханика». В то время я уже увлекся электроникой, в частности, цифровой техникой, закончил курсы по регулировке радиоаппаратуры, но к программированию не имел никакого отношения.
Как от железа ты перешел к софту?
Во время учебы я начал работать в научно-исследовательской лаборатории университета и именно там стал непосредственно заниматься компьютерным оборудованием, получил первоначальные навыки по программированию контроллеров, в результате чего серьезно увлекся программированием.
Наука, к сожалению, в начале 90-х годов не могла обеспечить достойный уровень жизни, в связи с чем в 1994 году я поступил на военную службу по контракту в Коломенское высшее артиллерийское военное училище. Занимался ремонтом электронного оборудования, а попутно получил неограниченный доступ к компьютерам, которые по сравнению с научно-технической базой университета были достаточно современными.
В какой-то момент командование училища, обратив внимание на мое увлечение программированием, привлекло меня к разработке симуляторов артиллерийской стрельбы для курсантов. Произошло это в начале 1997 года, симуляторы разрабатывались на языке С++, о котором на тот момент я мало что знал, пришлось осваивать его самостоятельно. Именно тогда и состоялась моя судьбоносная встреча с коллективом разработчиков АСКОН, куда я обратился за консультацией.
Расскажи подробнее о знакомстве с АСКОН
Знакомая преподаватель из военного училища рассказала про компанию АСКОН: «Ребята пишут САПР. Эдик, тебе надо туда». У меня как раз заканчивался контракт, и нужно было принимать решение, продлевать его или искать другую работу.
Я решил провести разведку, и в начале пошел в АСКОН за консультацией — вдруг люди помогут, разговорюсь с кем-нибудь, узнаю, как обстоят дела. В результате мне предложили работу. На тот момент я сомневался, смогу ли справиться, так как по уровню программирования я отставал от коллектива АСКОН достаточно сильно. Но интерес к разработке САПР оказался выше любых страхов и сомнений, и с 1997 года я работаю здесь. Не могу сказать, что стоял у истоков КОМПАСа, но вместе с коллективом вложил много сил в создание его современной версии.
С чего ты начинал в разработке КОМПАСа?
С самых элементарных задач — написания диалогов. Набравшись опыта, стал заниматься новым проектом трехмерного моделирования вместе с Николаем Головановым. Разрабатывал пользовательский интерфейс, графический пользовательский интерфейс, делал модельные объекты.
После выхода 5-ой версии КОМПАСа было принято решение переделать GUI, перейти на более современные решения. В старом интерфейсе все было фиксировано, а в новом мы дали пользователю возможность спозиционировать панель инструментов и настроить ее состав, как ему нравится. Это был прорыв. Наш пользовательский интерфейс продержался 14 лет вплоть до версии v17.
Фрагмент модели машины уборочной МТК-33.00.000 в КОМПАС3-3D V7
Разработчик: Велмаш-Сервис (Великие Луки)
Работая в АСКОН, ты защитил кандидатскую диссертацию…
По рекомендации своего научного руководителя я поступил в аспирантуру Московского государственного открытого университета по специальности «Электротехнические комплексы и системы», которую успешно окончил в 2003 году, защитив диссертацию на соискание степени кандидата технических наук. Защищался в Нижегородском государственном техническом университете. Диссертационная работа была основана на разработанном мной программном электронном комплексе для расчета и защиты силовых установок в машиностроении, который прошел успешную апробацию на нескольких предприятиях машиностроительной отрасли.
Как возник интерес к визуализации?
Дело в том, что КОМПАС-3D использует свою визуализацию, но она не отчуждаема как отдельный компонент, т.к. изначально такой цели не ставилось. Я смотрел, как сделать самостоятельный движок, независимо от того, в какой САПР он будет применяться. Мне было это страшно интересно. Особенно добиться от него высокой производительности, чтобы конструктор мог комфортно работать с большими сборками.
Потихоньку изучал разные движки, долго вынашивал идею и в итоге принял решение самому написать отдельный компонент визуализации. Пробовал дома, по вечерам, и в конце концов из этих проб появилась модель будущего компонента. Так что в C3D Labs я пришел не с пустыми руками
Ты изначально не занимался геометрическим ядром и перешел в C3D Labs позднее, через три года после того, как математической подразделение АСКОН было преобразовано в отдельную компанию…
На момент перехода я работал в группе разработки 2D-функционала КОМПАСа, а в свободное время занимался движком. Я был уверен, что если в составе ядра появится модуль визуализации, то на C3D Toolkit будут смотреть по-другому. Перспективы продаж будут выше и продавать будет легче. Голая математика хороша, но сейчас мало кто готов тратить время на долгосрочные проекты разработки. Хотят только кнопки нарисовать и влепить их в тулбар.
Для небольшой команды C3D Labs начинать разработку 3D-движка с нуля было бы рискованно, но у меня уже был готов прототип — мое предложение добавить в ядро визуализацию имело вполне осязаемое подкрепление. Коллеги меня поддержали, в течение года я сделал необходимые доработки, и в августе 2016 года мы выпустили первую версию C3D Vision.
Что представляет собой C3D Vision и в чем его особенность?
Это специализированный графический движок для визуализации геометрии в САПР. Он отвечает за отображение геометрических моделей и функционирование графического интерфейса приложения. Мы ориентируемся на потребности разработчиков инженерного программного обеспечения, которым в первую очередь нужны инструменты работы с геометрией. Наш модуль предоставляет большой набор таких инструментов: локаторы для конвертации экранных координат курсора в текущий геометрический объект, привязки для вычисления точных координат геометрического объекта, буксировщики-манипуляторы, которые позволяют интерактивным способом взаимодействовать с моделью, и другие.
Но самое главное для САПР с точки зрения визуализации — это быстродействие, чтобы модель у конструктора летала. Такой движок мы и делаем.
Откуда появлялись идеи для разработки компонента? Ты смотрел на другие визуализаторы?
Обязательно! Именно так и происходило. Я изучал известные движки — и игровые, и ориентированные на САПР: OGRE, VTK, 3D Qt, OpenSceneGraph, Hoops. C точки зрения API — Redway. Среди них были и open source-движки, где я мог посмотреть код. Больше всего интересовала архитектура, т.к. при любой разработке главное — не ошибиться в архитектуре, иначе придется переделывать весь продукт. Из изучения чужих компонентов я почерпнул, какой будет архитектура у нашего движка. Она же сказалась потом и на производительности. Кроме того, я консультировался со специалистами NVIDIA, после чего окончательно понял для себя, что иду по правильному пути и что еще нужно добавить.
Кто стал первым пользователем C3D Vision?
Первым, кто серьезно заинтересовался, была нижегородская компания ГеоС, разрабатывающая САПР корпусной мебели. Она использует наше параметрическое ядро C3D Solver. Хотя до лицензирования Vision дело не дошло, но мы получили обратную связь, что крайне важно для разработки.
А первым полноценным пользователем стал РФЯЦ-ВНИИТФ, который взял наш движок для разработки CAE-систем. От специалистов центра поступает очень много требований и замечаний, но зато когда видишь результат, который можно покрутить и потрогать, — это большая радость.
CAE-система, разработанная РФЯЦ-ВНИИТФ с использованием геометрического ядра C3D Modeler и визуализации C3D Vision
Кто наши конкуренты в визуализации?
В России визуализаторов, ориентированных на инженерный софт, нет. Конкуренты в основном все западные, из США, Германии, Франции. Самый сильный — Hoops от Techsoft, но он и стоит как чугунный мост. Redway хорош, его плюс состоит в фотореалистичности, которая для САПР не столь важна.
Команда C3D Vision делает еще и приложение для просмотра 3D-моделей, зачем оно понадобилось?
В процессе разработки C3D Vision возникла потребность в его тестировании, а как известно, тестировать компонент проще всего на конечном приложении, которое будет еще и демонстрировать возможности движка. Так родилась идея создания C3D Viewer, просмотрщика трехмерных моделей, в котором полностью реализован функционал компонента Visiоn. Для конечных пользователей он бесплатный, а разработчики могут лицензировать его для встраивания в свои продукты. Например, C3D Viewer используется для формирования вторичного представления документов в системе управления жизненным циклом изделия ЛОЦМАН:PLM.
Ты много лет разрабатывал интерфейс КОМПАСа, последние пять лет занимаешься 3D-визуализацией, какой еще продукт хотелось бы написать?
Платформу для разработки САПР с применением в полной мере всех C3D-компонентов и разработкой дополнительных. Смысл платформы в том, что когда ты предлагаешь весь набор необходимых инструментов, то разработчик конечного приложения думает только о его специфике, не отвлекаясь на написание базовых процессов и визуализации.
Платформа может перекрыть определенный процент создания и редактирования одних и тех же объектов в разных спецификах: окружность в машиностроении и окружность в моделировании одежды одна и та же. Можно сделать компонент, востребованный и там, и там. А есть объекты, востребованные только в своей специфике. Разработчик должен думать только об этом. Базовые процессы — состояние элементов управления, состояние курсора — предоставляет платформа.
Какие сферы тебе интересны помимо САПР?
Программирование контроллеров и электроники. Визуализация сама по себе, особенно, если речь идет о дополненной и виртуальной реальности. Поскольку я технический человек, мне интересно работать с железом. Если бы пришлось выбирать, заниматься скучной для меня разработкой баз данных или пойти работать по специальности инженером-электриком, я бы выбрал последнее.
А если говорить не о работе?
Свободное от работы время посвящаю своей семье. У меня есть сын и дочь. Сын учится в университете, специальность выбрал по желанию, хочет заниматься проектированием зданий, однако гены оказывают свое влияние, и работу в последнее время он оптимизирует за счет активного изучения и применения программирования. Я стараюсь оказывать ему в этих вопросах любую возможную помощь. Дочь — школьница, технические специальности ее не привлекают, пока она желает стать врачом, но, возможно, что-то изменится к окончанию школы.
Твоя морская жизнь напоминает о себе?
Скучаю по морю. Когда были в Питере, заехали в Петергоф, я вдохнул и вспомнил. Видеть и слышать море — этого уже достаточно.
Традиционный заключительный вопрос. Твое напутствие будущим сотрудникам C3D Labs
Не надо бояться трудностей. Иногда кажется, что поставленная задача неподъемна, что она может оказаться тем болотом, в котором можно легко утонуть. Однако в моей практике не было ни одной задачи, даже самой трудноразрешимой, которую нельзя было бы решить при наличии желания и стремления познавать что-то новое. Добро пожаловать в наш коллектив!