Резюме

Богдан Кищак

3D Generalist/Quality Assurance Specialist

г. Челябинск, Россия

Почта: wotava@ya.ru

Telegram: @wotava

Привет!

Раньше тут была скучная стенка текста о том, какой я классный, но её вряд ли кто-то читал, поэтому я решил сделать всё попроще.

Мне интересна работа в двух направлениях:

  • Автоматизация производства/использования 3D-контента – создание различных аддонов для Blender (и не только). Последний год я в основном занимался написанием аддонов для Blender под свой Pet-проект, и задачи зачастую были крайне нестандартными. Решать мне их очень понравилось, о чем можно почитать ниже, поэтому я бы хотел этим позаниматься в более серьезном окружении;
  • QC 3D-контента – у меня большой опыт в проверке моделей и взаимодействии с художниками, зачастую приходилось брать на себя роль своеобразного ментора;

Но также мне была бы интересна и любая другая работа, связанная с трёхмерной графикой, будь то общая позиция художника или преподавателя (с этим тоже был своеобразный опыт).

Примечание: в портфолио довольно много «тяжелых» по размеру изображений, поэтому оно может долго загружаться.


Про автоматизацию


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

Однако помимо рутины есть и были интересные задачи, которые затрагивали и другой софт (например Unreal Engine или Houdini), а также решали задачи, ранее никому в голову не приходившие. Рано или поздно я соберусь с силами и напишу про них соответствующие заметки, а пока вкратце выделю пару интересных:

SyncToUE

Довольно крупный набор скриптов, решающий задачу полного переноса сцены из Blender в Unreal Engine под специфичный пайплайн моего с другом Pet-проекта. Дефолтные решения с USD не подходили из-за использования генераторов на блендеровских геонодах (там сложно выдернуть инстансинг), да и требовался кастомный бейкер AO в Houdini для использования в материалах, а там нужно оффсетить каждый инстанс геометрии на развертке. Деструктивные решения нарушают философию проекта, поэтому были отметены.

Перенос сцены осуществляется путем сериализации всех объектов (меши и лампы) в JSON и воссоздание их уже в движке через HISM-компонент. Сама сцена при этом частично экспортируется в .fbx

  • для Houdini в виде реализованной геометрии с кастомной разверткой и оффсетами для каждого релевантного инстанса;
  • для Unreal Engine в виде всей не ассетизированной геометрии;

Все ещё в активной разработке/доработке, поэтому код не самый красивый. Но что есть то есть.

PanelShaderTools

В Pet-проекте помимо нестандартного пайплайна используется ещё и довольно нестандартный шейдер, который генерирует рандомизированные бетонные панели исходя из закодированных в текстуры параметров. И не по одному параметру на канал, как обычно, а по несколько, через битовую кодировку в float значениях цвета. Шейдер сделал не я, а вот всю инфраструктуру вокруг него – я.

Аддон в этой ситуации нужен для того, чтобы создавать, модифицировать, сохранять, отображать в реальном времени все изменения и кодировать конечные пресеты в .exr текстуру. Плюс в качестве дополнения он может генерировать простой HLSL-код для раскодирования пресета в конечном софте (Unreal Engine), сразу же проверять корректность кодировки и ещё парочка quality of life моментов.

Особенности вскрылись на стадии реализации шейдера в самом Blender. Потребовалось модифицировать исходники, чтобы сделать шейдер, работающий с EEVEE. По дефолту можно лишь делать OSL-скрипты, работающие с Cycles. А какой может быть lookdev с медленным рендером?

В процессе выяснилось, что Blender округляет значения цвета в ноде Image Texture до 1 или до 0, если все биты экспоненты 00000000 или имеют единицу в первой и любой другой позиции экспоненты (например 10010000), первый бит знака в этом случае совсем не важен. Это абсолютно неприемлемо, если мы там храним какую-либо значимую битовую информацию. Но на тот момент о конкретных битах ещё не знал.

Проблему удалось решить с помощью денормализации (однако) чисел путем контролируемого изменения 31 бита в 32-битном float значении цвета (первый бит экспоненты), т.к. денормализованные числа с плавающей точкой Blender не изменяет. А с помощью битовых флагов в каждой из компонент пикселей можно в конечном софте отслеживать, когда нужно перед декодом «флипнуть» 31 бит в канале.

Сложно? Да. Непонятно? Да. Но задача крутая, такого никто не делал (в Blender точно), и решение пришлось искать самому. Поэтому и горжусь. Рано или поздно я допишу заметку об этом решении.

Поэтому мне очень интересно поучаствовать в автоматизации и других процессов, связанных с 3D. Это и отличная возможность узнать что-то новое, и в целом работа нетривиальная.

Софт


Моделлинг (poly)

Blender

Моделлинг (CAD)

Fusion 360

Материалы

Substance Painter, Designer, Sampler (Alchemist)

Рендеринг

Unreal Engine 4/5, Marmoset Toolbag

Дополнительно

fSpy, Marvelous Designer, Houdini, ZBrush, Modo, Adobe Photoshop, Python API в Blender для автоматизации процессов, могу работать и в 3DS Max с VRay, если надо

Навыки


Hardsurface

⚫⚫⚫⚫⚫

UV-unwrap

⚫⚫⚫⚫⚫

Материалы

⚫⚫⚫⚫⚪

Рендеринг

⚫⚫⚫⚫⚪

Скульптинг

⚫⚫⚫⚪⚪

Дополняю хайполи версии моделей перед бейком

Одежда

⚫⚫⚪⚪⚪

Умею, но редко требовалось ей заниматься

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

Опыт работы


06.2023 — 08.2024

QC Specialist

3D Molier International

  • В основном занимался проверкой трёхмерных моделей на визуальное и техническое соответствие требованиям – пайплайн имел строгие ограничения во многих аспектах;
  • Занимался консультированием художников-исполнителей по вопросам улучшения их моделей;
  • Участвовал в обосновании, проработке и документировании обновления внутренних пайплайнов, которые уже давно в этом нуждались;
  • Записывал обучающие материалы для художников и проводил информационные семинары по своей инициативе – так банально было проще работать, как ни странно;
  • Консультировал коллег по вопросам PBR-материалов и работе в Substance Painter;
  • NDA 🙁

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

03.2023 — 06.2023

3D-Generalist

3D Molier International

  • Перед тем как попасть в эту компанию на позицию QC, я примерно три месяца поработал как простой художник, чтобы освоиться с довольно новым для себя пайплайном (3ds Max 2014 и VRay 3.6, довольно старое комбо).

Ключевые достижения: после того как я поработал тут на QC я пришёл к выводу, что у меня были лучшие hardsurface-модели 🙂

08.2019 — 03.2022

3D-Generalist / QA Assistant

CGTrader Wildcat

  • Работал над созданием трёхмерных моделей для e-commerce, AR/VR с полным пайплайном, а также моделей для realtime-рендеринга в целом;
  • Работал с фотосканами и круговыми фотосетами;
  • Имел доступ к конфиденциальным проектам под NDA;
  • Проводил Quality Control моделей с различных внутренних проектов, в т.ч. для пакета архитектурной визуализации Twinmotion;
  • Взаимодействовал с технической командой для улучшения технических заданий и документации;
  • Консультировал коллег по вопросам, касающимся проектных требований и техническим аспектам исполнения.

Ключевые достижения: топ-2 по KPI среди всех сотрудников, ни одного проваленного задания при 1000+ завершенных, работа над проектами таких компаний, как Google, Epic Games, ECM Manufacture, Made, Ashley Furniture, Flipkart, Chubb Safes, Lowe’s и другие.

09.2018 — 08.2019

Фрилансер

Работа над моделями в различных направлениях:

  • Lowpoly окружения для казуальных мобильных игр;
  • Обработка CAD-моделей различной фурнитуры/лепнины с последующим созданием материалов и получением конечного рендера.

Образование


2016 — 2020

Программная Инженерия

Бакалавриат, ЮУрГУ (НИУ), Челябинск

  • Хотел работать в геймдеве;
  • Прекрасно освоил Python, проектирование софта и основы программирования игровой логики;
  • Отметился активным участием во внеучебной деятельности университета, а также как интересный публичный спикер.

Софт-скиллы и прочее


Коммуникативность

⚫⚫⚫⚫⚫

Объясню на пальцах всё, что знаю сам

Внимание к деталям

⚫⚫⚫⚫⚫

Работа в команде

⚫⚫⚫⚫⚪

Тайм-менеджмент

⚫⚫⚫⚫⚪

Презентация

⚫⚫⚫⚫⚫

Вы таких презентаций ещё не видели

Объективность вышесказанного

⚫⚫⚫⚫⚫

Абсолютно честно и непредвзято

Уровень английского

C1

Оценка университета, без IELTS

А ещё:

Игра Clay Fortress, сделанная мною в паре со случайным человеком, выиграла спонсорскую номинацию на локальном Global Game Jam в 2020 из-за необычного стиля и нетипичных механик;

В 2023 геймджем-успех удалось повторить с большим размахом: игра UpRooted собрала восторженные отзывы участников джема и несколько номинаций от локальных спонсоров;

Как уже упоминалось, я неплохо разбираюсь в Blender Python API, и могу автоматизировать/упростить многие рабочие рутины с помощью скриптов;

Отметился многократным участием в студенческой олимпиаде в 2016, 2017 и 2019 годах в номинации «Цифровое Творчество» и стабильно был в тройке призёров;

В университете я проводил собственную «школу» трёхмерной графики для студентов своего университета с более чем 100 участниками на первом этапе;

Активно играл в парламентские дебаты в Дебат-клубе ЮУрГУ, благодаря чему мне легко выражать и доказывать свои мысли и идеи. По сей день являюсь активным организатором и тренером клуба;

Мне интересны архитектурный модернизм и брутализм, они лежат в основе стиля моего личного игрового проекта.