Promoção de Halloween: −40% O Pixor sai por US$ 19.99 US$ 11.99 até 4 de novembro, no itch.io →

O pipeline 3D do Dead Cells, passo a passo

Dead Cells parece animado à mão, mas seus personagens foram animados em 3D e renderizados como pequenos quadros de pixel art. O artista descreveu o método em 2018. Veja o que ele faz, por que funciona e como fazer o mesmo com seus próprios modelos.

Um cavaleiro da biblioteca grátis, renderizado a partir de 3D
Um cavaleiro em pixel art visto de lado, brandindo uma espada, renderizado a partir de um modelo 3D em 96 pixels
Vista lateral, 96 px, um ataque da biblioteca
Um quadro do cavaleiro de vista lateral em pixel art
O quadro
O mapa de normais do mesmo quadro, com as cores dando a direção para a qual cada pixel aponta
Seu mapa de normais, para luzes 2D

O pipeline, como o artista o descreveu

Em janeiro de 2018, Thomas Vasseur, por um ano o único artista de Dead Cells na Motion Twin, escreveu “Art Design Deep Dive: Using a 3D pipeline for 2D animation in Dead Cells” para a Gamasutra, hoje Game Developer. Os passos eram:

  1. Primeiro, uma folha de modelo em pixel art. Ele desenhou uma folha 2D básica do personagem e depois construiu o personagem e seu esqueleto em 3D sobre ela, no 3ds Max, e exportou como FBX.
  2. Modelos bem simples. Com um personagem de apenas cerca de 50 pixels de altura no jogo, gastar tempo num modelo 3D detalhado não valia a pena.
  3. Renderizar pequeno, sem anti-aliasing. Um programa próprio renderizava a malha em tamanho bem pequeno e sem anti-aliasing, o que dá o visual pixelado.
  4. Animar em quadros-chave, como em 2D. Os ataques eram feitos de pose em pose: primeiro as chaves eram marcadas com o mínimo de quadros possível, e só depois entravam quadros intermediários antes ou depois de uma chave, nunca entre as chaves.
  5. Exportar cada quadro com um mapa de normais. Cada quadro era salvo como PNG com seu mapa de normais, para o jogo poder iluminá-lo com um toon shader simples.

Por que funcionava

O deep dive dá os motivos sem rodeios. Não era preciso redesenhar cada quadro. Uma animação podia ser reaproveitada em vários modelos. Uma peça de armadura era adicionada ao modelo 3D, sem redesenhar cada quadro em que aparecia. Modelos e peças antigos eram reaproveitados para fazer monstros novos, o que ele chama de o truque mais útil do fluxo de trabalho, economizando centenas de horas.

Acima de tudo, refazer ficou barato. Quando os programadores de gameplay mudavam o tempo de um ataque ou deixavam uma arma mais lenta, ele movia as chaves na linha do tempo e renderizava de novo. Na animação feita à mão, a mesma mudança exigiria redesenhar, e muitas vezes simplesmente não era feita.

Faça o mesmo com o Pixor

O renderizador do Dead Cells era próprio e nunca foi lançado. O Pixor é um app separado que cobre os mesmos passos para qualquer modelo que você tenha, com rig no Blender, baixado do Mixamo ou tirado da biblioteca grátis.

Câmera de vista lateral. No passo Cena, clique na câmera Sul na Estrutura e defina Jogo como Plataforma: uma vista lateral voltada para a direita, um só lado, espelhado para a esquerda. Aumente a largura e a altura para 64 ou 96 pixels para um personagem com arma; o guia de tamanhos de sprite ajuda a escolher.

Renderizar pequeno e nítido. O Pixor desenha cada quadro na grade de pixels do próprio sprite, sem bordas com anti-aliasing por padrão (--aa 0) e com cores limitadas às rampas da paleta, uma única escala de pixels por metro para todos os quadros e um pivô fixo em um pixel, para o personagem não ficar flutuando.

Um visual, não só uma renderização pequena. O Dead Cells dependia da iluminação e de um toon shader. No passo Estilo, a predefinição selout dá faixas de luz, rampas com deslocamento de matiz e contornos seletivos, com faixas que se mantêm estáveis de um quadro para o outro, para uma corrida não cintilar.

Pose em pose. No passo Asset, os Quadros mantidos do nó Sprites guardam tantos quadros inteligentes, escolhidos entre as poses do clipe, cada um mantido até o próximo. Esse é o corte de pose em pose: os extremos do golpe ficam, os intermediários suaves saem.

Mapas de normais. Adicione o mapa de normais à exportação (--export normal) ou o light kit (--export light-kit), que ilumina o sprite a partir das normais no Godot, Unity ou GameMaker, enquanto cada pixel iluminado continua na sua própria rampa de cores. Veja iluminação fiel à paleta.

Armaduras e armas. Um objeto é preso a um osso: uma espada na mão, um capacete na cabeça (--prop sword.glb:hand.r). Todo clipe o carrega.

Reaproveitar animações. Clipes de outros arquivos com o mesmo esqueleto são adicionados com --anim, ou como arquivos chamados model@clip.fbx ao lado do modelo. Os clipes da biblioteca de movimentos, lib:idle, lib:walk, lib:run, lib:attack e os demais, são ajustados a um esqueleto humanoide, então um personagem novo tem corrida e ataque antes de você animar qualquer coisa.

Pela linha de comando

O cavaleiro acima, como um script de build o faria:

pxr render knight.glb --preset selout --camera platformer --size 96 \
  --clip lib:run --clip lib:attack --smart-frames 8 --export png,json,normal

E o refazer: mude as chaves do clipe na sua ferramenta 3D, ou o número de quadros aqui, e rode a mesma linha de novo. Todo quadro sai na mesma escala e no mesmo pivô, então a folha nova entra no lugar da antiga. A mesma linha sobre uma pasta de modelos (pxr batch models/ --camera platformer --size 96) dá a um elenco inteiro o mesmo visual.

Depois, retoque

Os quadros do Dead Cells foram finalizados em 3D. Se você quiser detalhes feitos à mão por cima, o Pixor grava arquivos .aseprite com uma tag por ação, e uma nova renderização mantém as camadas que você pintou; veja retocar e depois refazer o bake. A história da técnica, dos anos 1990 até hoje, está em sprites pré-renderizados.

Perguntas

O Dead Cells usou modelos 3D para seus personagens?

Sim. Thomas Vasseur, artista da Motion Twin, modelou e fez o rig dos personagens no 3ds Max a partir de uma folha de modelo em pixel art, animou-os em 3D e renderizou cada quadro pequeno e sem anti-aliasing, com um mapa de normais, como descreve no deep dive de 2018 no Game Developer.

O Pixor é a ferramenta que o Dead Cells usou?

Não. O Dead Cells usou um programa próprio. O Pixor é um app separado que faz o mesmo trabalho, animação 3D de entrada e quadros de pixel art de saída, para qualquer modelo glTF, FBX, OBJ ou .vox.

Qual era o tamanho dos personagens do Dead Cells?

O deep dive diz que a altura de um personagem no jogo era de apenas cerca de 50 pixels, e é por isso que os modelos 3D podiam ficar bem simples.

Leia a seguir

Experimente no seu próprio modelo, grátis no navegador, ou adquira a versão completa.

Testar no navegador Comprar o Pixor