3D-конвейер Dead Cells шаг за шагом
Dead Cells выглядит как нарисованная вручную анимация, но персонажей анимировали в 3D и рендерили в маленькие пиксель-арт-кадры. Художник описал метод в 2018. Вот что он делает, почему работает и как сделать то же со своими моделями.



Конвейер в описании его автора
В январе 2018 Thomas Vasseur, год проработавший единственным художником Dead Cells в Motion Twin, написал для Gamasutra (ныне Game Developer) статью “Art Design Deep Dive: Using a 3D pipeline for 2D animation in Dead Cells”. Шаги были такими:
- Сначала пиксель-арт-лист модели. Он нарисовал простой 2D-лист персонажа, затем поверх него построил персонажа и его скелет в 3D, в 3ds Max, и экспортировал в FBX.
- Очень простые модели. Персонаж в игре высотой всего около 50 пикселей, поэтому тратить время на детальную 3D-модель не стоило.
- Рендер в малом размере, без сглаживания. Собственная программа студии рендерила сетку в очень малом размере без сглаживания, что и даёт пикселизованный вид.
- Анимация по ключевым кадрам, как в 2D. Атаки делались от позы к позе: сначала ключи расставлялись на как можно меньшем числе кадров, и только потом добавлялись промежуточные кадры до или после ключа, но никогда между ключами.
- Экспорт каждого кадра с картой нормалей. Каждый кадр сохранялся в PNG вместе с картой нормалей, чтобы игра могла освещать его простым тун-шейдером.
Почему это сработало
В обзоре причины названы прямо. Не нужно было перерисовывать каждый кадр. Одну анимацию можно было использовать для нескольких моделей. Деталь брони добавлялась прикреплением к 3D-модели, а не перерисовкой каждого кадра, где она видна. Старые модели и части использовались заново для новых монстров, и он называет это самым полезным приёмом в процессе, сэкономившим сотни часов.
Главное, повторные дубли стали дешёвыми. Когда гейм-программисты меняли тайминг атаки или замедляли оружие, он сдвигал ключи на таймлайне и рендерил снова. С рисованной анимацией то же изменение означало бы перерисовку, и часто его просто не делали.
То же самое в Pixor
Рендерер Dead Cells был собственным и так и не вышел публично. Pixor — отдельное приложение, которое покрывает те же шаги для любой вашей модели: с ригом из Blender, скачанной с Mixamo или взятой из бесплатной библиотеки.
Камера сбоку. На шаге Сцена нажмите камеру Юг в панели «Структура» и задайте для параметра Игра значение Платформер: вид сбоку, направленный вправо, одна сторона, для левой зеркалится. Увеличьте ширину и высоту до 64 или 96 пикселей для персонажа с оружием; выбрать размер поможет руководство по размерам спрайтов.
Рендер в малом размере, чётко. Pixor рисует каждый кадр на собственной пиксельной сетке спрайта: по умолчанию без сглаженных краёв (--aa 0), с цветами только из рамп палитры, одним масштабом пикселей на метр для всех кадров и пивотом, закреплённым на одном пикселе, так что персонаж не «плавает».
Облик, а не просто маленький рендер. Dead Cells опирался на освещение и тун-шейдер. На шаге Стиль пресет selout даёт полосы света, рампы со сдвигом оттенка и выборочные обводки, причём полосы держатся стабильно от кадра к кадру, поэтому бег не мерцает.
От позы к позе. На шаге Ассет параметр Спрайты узла Оставлено кадров оставляет заданное число умных кадров, выбранных из поз клипа, каждый держится до следующего. Это и есть монтаж от позы к позе: крайние точки размаха остаются, мягкие промежуточные кадры уходят.
Карты нормалей. Добавьте карту нормалей в экспорт (--export normal) или набор света (--export light-kit), который освещает спрайт по его нормалям в Godot, Unity или GameMaker, а каждый освещённый пиксель остаётся на своей цветовой рампе. См. освещение с правильной палитрой.
Броня и оружие. Предмет крепится к кости: меч в руке, шлем на голове (--prop sword.glb:hand.r). Он есть в каждом клипе.
Повторное использование анимаций. Клипы из других файлов с тем же скелетом добавляются через --anim или как файлы с именем model@clip.fbx рядом с моделью. Клипы библиотеки движений — lib:idle, lib:walk, lib:run, lib:attack и остальные — подогнаны под скелет гуманоида, так что у нового персонажа есть бег и атака ещё до того, как вы что-либо анимировали.
Из командной строки
Рыцарь выше, как его сделал бы скрипт сборки:
pxr render knight.glb --preset selout --camera platformer --size 96 \
--clip lib:run --clip lib:attack --smart-frames 8 --export png,json,normal
А повторный дубль: измените ключи клипа в своём 3D-редакторе или число кадров здесь и запустите ту же строку снова. Каждый кадр получается в том же масштабе и с тем же пивотом, так что новый лист встаёт на место старого. Та же строка для папки с моделями (pxr batch models/ --camera platformer --size 96) даёт целой команде персонажей один облик.
Затем доработка
Кадры Dead Cells дорабатывались в 3D. Если вы хотите поверх добавить детали от руки, Pixor пишет файлы .aseprite с тегом на каждое действие, а повторный рендер сохраняет нарисованные вами слои; см. доработку и повторный рендер. История техники, с 1990-х до наших дней, изложена в пре-рендеренных спрайтах.
Вопросы
Использовала ли Dead Cells 3D-модели для персонажей?
Да. Художник Motion Twin Thomas Vasseur смоделировал и заригал персонажей в 3ds Max по пиксель-арт-листу модели, анимировал их в 3D и отрендерил каждый кадр в малом размере, без сглаживания и с картой нормалей, как он описывает в статье 2018 на Game Developer.
Pixor — это тот инструмент, что использовала Dead Cells?
Нет. Dead Cells использовала собственную программу студии. Pixor — отдельное приложение, которое делает ту же работу: на входе 3D-анимация, на выходе пиксель-арт-кадры, для любой модели glTF, FBX, OBJ или .vox.
Какого размера были персонажи Dead Cells?
В статье сказано, что высота персонажа в игре была всего около 50 пикселей, поэтому 3D-модели могли оставаться очень простыми.
Что почитать дальше
- Пре-рендеренные спрайты
- 3D в пиксель-арт: полное руководство
- Четыре способа превратить 3D-модель в пиксель-арт
- Размеры спрайтов для пиксельных игр
- Selout: выборочные обводки
Попробуйте на своей модели бесплатно в браузере или купите полную версию.
Попробовать в браузере Купить Pixor