Soldes d’Halloween : −40 % Pixor est à 19.99 $ 11.99 $ jusqu’au 4 novembre, sur itch.io →

Le pipeline 3D de Dead Cells, étape par étape

Dead Cells a l’air animé à la main, mais ses personnages ont été animés en 3D puis rendus en petites images de pixel art. Son artiste a décrit la méthode dans 2018. Voici ce qu’elle fait, pourquoi elle marche, et comment faire de même avec vos propres modèles.

Un chevalier de la bibliothèque gratuite, rendu à partir de la 3D
Un chevalier en pixel art vu de côté, brandissant une épée, rendu à partir d’un modèle 3D à 96 pixels
Vue de côté, 96 px, une attaque de la bibliothèque
Une image du chevalier de côté en pixel art
L’image
La normal map de la même image, les couleurs donnant la direction vers laquelle chaque pixel est tourné
Sa normal map, pour les lumières 2D

Le pipeline, tel que son artiste l’a décrit

En janvier 2018, Thomas Vasseur, pendant un an le seul artiste de Dead Cells chez Motion Twin, a écrit “Art Design Deep Dive: Using a 3D pipeline for 2D animation in Dead Cells” pour Gamasutra, devenu Game Developer. Les étapes :

  1. D’abord une planche de modèle en pixel art. Il a dessiné une planche 2D simple du personnage, puis construit le personnage et son squelette en 3D par-dessus, dans 3ds Max, et l’a exporté en FBX.
  2. Des modèles très simples. Avec un personnage haut d’environ 50 pixels dans le jeu, cela ne valait pas la peine de passer du temps sur un modèle 3D détaillé.
  3. Rendre petit, sans anticrénelage. Un programme maison rendait le maillage à très petite taille, sans anticrénelage, ce qui donne l’aspect pixélisé.
  4. Animer sur des images clés, comme en 2D. Les attaques étaient animées de pose en pose : les clés étaient d’abord placées avec le moins d’images possible, puis on ajoutait des images intermédiaires avant ou après une clé, jamais entre les clés.
  5. Exporter chaque image avec une normal map. Chaque image était enregistrée en PNG avec sa normal map, pour que le jeu puisse l’éclairer avec un simple shader toon.

Pourquoi ça marchait

Le deep dive donne les raisons sans détour. Il n’y avait pas besoin de redessiner chaque image. Une même animation pouvait servir à plusieurs modèles. Une pièce d’armure s’ajoutait en l’attachant au modèle 3D, sans redessiner chaque image où elle apparaissait. Les anciens modèles et leurs pièces étaient réutilisés pour fabriquer de nouveaux monstres, ce qu’il présente comme l’astuce la plus utile du workflow, des centaines d’heures gagnées.

Surtout, les retouches ne coûtaient presque rien. Quand les programmeurs du gameplay changeaient le timing d’une attaque ou ralentissaient une arme, il déplaçait les clés sur la timeline et refaisait le rendu. Avec une animation dessinée à la main, le même changement aurait demandé de tout redessiner, et souvent on y renonçait.

Faire de même avec Pixor

Le moteur de rendu de Dead Cells était maison et n’a jamais été publié. Pixor est une application à part qui couvre les mêmes étapes pour n’importe quel modèle, rigué dans Blender, téléchargé depuis Mixamo ou pris dans la bibliothèque gratuite.

Caméra de côté. Dans l’étape Scène, cliquez sur la caméra Sud dans l’Arborescence et réglez Jeu sur Jeu de plateforme : une vue de côté tournée vers la droite, un seul côté, en miroir pour la gauche. Passez la largeur et la hauteur à 64 ou 96 pixels pour un personnage avec une arme ; le guide des tailles de sprite aide à choisir.

Rendre petit et net. Pixor dessine chaque image sur la grille de pixels du sprite lui-même, sans bords anticrénelés par défaut (--aa 0), avec des couleurs limitées aux rampes de la palette, une seule échelle de pixels par mètre pour toutes les images et un pivot fixé sur un pixel, pour que le personnage ne « nage » pas.

Un style, pas seulement un petit rendu. Dead Cells s’appuyait sur son éclairage et un shader toon. Dans l’étape Style, le préréglage selout donne des bandes de lumière, des rampes à teinte décalée et des contours sélectifs, avec des bandes stables d’une image à l’autre pour qu’une course ne scintille pas.

De pose en pose. Dans l’étape Asset, les Images gardées du nœud Sprites conservent un nombre donné d’images intelligentes, choisies parmi les poses du clip, chacune tenue jusqu’à la suivante. C’est la coupe de pose en pose : les extrêmes du mouvement restent, les intermédiaires mous disparaissent.

Normal maps. Ajoutez la normal map à l’export (--export normal), ou le kit de lumière (--export light-kit), qui éclaire le sprite à partir de ses normales dans Godot, Unity ou GameMaker tout en gardant chaque pixel éclairé sur sa propre rampe de couleurs. Voir l’éclairage fidèle à la palette.

Armures et armes. Un accessoire est attaché à un os : une épée dans une main, un casque sur une tête (--prop sword.glb:hand.r). Chaque clip le porte.

Réutiliser les animations. Les clips d’autres fichiers ayant le même squelette s’ajoutent avec --anim, ou sous forme de fichiers nommés model@clip.fbx à côté du modèle. Les clips de la bibliothèque de mouvements, lib:idle, lib:walk, lib:run, lib:attack et les autres, sont adaptés à un squelette humanoïde : un nouveau personnage a donc une course et une attaque avant même que vous n’ayez animé quoi que ce soit.

En ligne de commande

Le chevalier ci-dessus, tel qu’un script de build le produirait :

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

Et la retouche : changez les clés du clip dans votre outil 3D, ou le nombre d’images ici, et relancez la même ligne. Chaque image sort à la même échelle et sur le même pivot, donc la nouvelle planche se glisse à la place de l’ancienne. La même ligne sur un dossier de modèles (pxr batch models/ --camera platformer --size 96) donne un même style à toute une distribution.

Puis retoucher

Les images de Dead Cells étaient finies en 3D. Si vous voulez ajouter des détails dessinés à la main, Pixor écrit des fichiers .aseprite avec un tag par action, et un nouveau rendu conserve les calques que vous avez peints ; voir retoucher, puis re-baker. L’histoire de la technique, des années 1990 à aujourd’hui, est dans les sprites pré-rendus.

Questions

Dead Cells utilisait-il des modèles 3D pour ses personnages ?

Oui. Thomas Vasseur, l’artiste de Motion Twin, a modélisé et rigué les personnages dans 3ds Max à partir d’une planche de modèle en pixel art, les a animés en 3D, puis a rendu chaque image en petit et sans anticrénelage, avec une normal map, comme il le décrit dans le deep dive 2018 de Game Developer.

Pixor est-il l’outil que Dead Cells utilisait ?

Non. Dead Cells utilisait son propre programme maison. Pixor est une application à part qui fait le même travail, de l’animation 3D en entrée aux images en pixel art en sortie, pour n’importe quel modèle glTF, FBX, OBJ ou .vox.

Quelle taille faisaient les personnages de Dead Cells ?

Le deep dive indique que la hauteur d’un personnage dans le jeu n’était que d’environ 50 pixels, ce qui explique pourquoi les modèles 3D pouvaient rester très simples.

À lire ensuite

Essayez-le sur votre propre modèle, gratuitement dans votre navigateur, ou procurez-vous la version complète.

Essayer dans le navigateur Obtenir Pixor