SEO + GEOVotre visibilité, de Google aux réponses des IA
  1. Accueil
  2. Guides
  3. Animation de Charleroi avec Claude

Étude de cas · Animation avec l’IA

Créer une animation avec Claude : mon projet Charleroi en aquarelle et JavaScript

Une animation de 96 secondes créée avec Claude, JavaScript et Canvas 2D. Six versions pour corriger les décors, la caméra et le son, avec les photos de référence et les essais avant/après.

Impaaact
12 min de lecture
Le zèbre dort sur des livres au parc Reine Astrid, sous un arbre de lettres
Version 6, à 5 secondes. Le point d’arrivée du travail : un zèbre endormi, du papier et un parc dessiné en code.

Pour créer cette animation de Charleroi avec Claude, j’ai utilisé JavaScript et Canvas 2D pour dessiner les décors et animer un petit zèbre. Le film dure 96 secondes : le zèbre traverse la ville, du parc Reine Astrid au stade du Pays de Charleroi. Les photographies servent de références, puis chaque trait est dessiné par le code. Les bruitages sont synthétisés ; le morceau de piano est importé.

Claude, l’assistant d’Anthropic, écrivait et modifiait le code, produisait les rendus et mesurait les essais. Je donnais la direction visuelle et les retours. Six versions ont été exportées. Cette étude de cas présente les techniques, les problèmes rencontrés et leurs corrections, avec les photos de référence et les comparatifs avant/après.

6
versions jusqu’au résultat final
139
captures d’analyse relues
35
photos de Charleroi en référence
7 917
lignes de JavaScript
13
plans de caméra
0
image dans le film

Comparer six versions de l’animation de Charleroi

Le moyen le plus simple de juger un changement est de rendre le même moment du film avant et après. Voici le réveil au parc, version par version. La première date du 14 octobre ; les cinq suivantes ont été faites le 16 octobre, entre 2 h et 21 h.

Le réveil au parc, version par version

Version 1 : une graine orange sous un arbre aux taches vertes et orange

v1 · 14 oct.

Pépin la graine, arbre en taches, kiosque générique

Version 2 : la graine sur une pile de livres, arbre de lettres et kiosque rustique

v2 · 3 h 14

moteur de peinture réécrit, kiosque d’après photo

Version 3 : un petit zèbre sur la pile de livres, ciel plus gris

v3 · 10 h 39

le zèbre remplace la graine, ciel grisé

Version 4 : cadrage plus serré, gravier et pelouse peints

v4 · 17 h 58

caméra plus proche, sol peint devant lui

Version 5 : le zèbre roulé en ballon sur les livres

v5 · 20 h 24

il commence roulé en ballon

Version 6 : le zèbre debout sur les livres après son réveil

v6 · 20 h 49

il dort, un rouge-gorge le réveille

Mêmes instants à quelques dixièmes près : 12,8 s pour les quatre premières versions, 11 s et 12,4 s ensuite, le récit ayant changé de durée.

Ce que le film doit à Charleroi

Le personnage est un zèbre parce que c’est l’animal des Zèbres, le surnom du Sporting de Charleroi. Le titre, « Tchålerwè », est le nom de la ville en wallon. Les feuilles du grand arbre sont des lettres tirées des quinze anciennes communes (Jumet, Marcinelle, Gosselies…), de mots wallons comme « gaillette » ou « ducasse », et de mots des langues arrivées avec les charbonnages : « casa », « miniera », « dom », « chleb », « ψωμί ».

Le trajet suit de vrais lieux, dans l’ordre d’une promenade : le parc et son kiosque, la rue de la Montagne, le beffroi, les quais de la Sambre sous le viaduc du métro, un terril face au haut-fourneau 4, puis le stade du Pays de Charleroi.

Le trajet du zèbre dans la version finale

Le zèbre endormi au parc Reine Astrid

Parc Reine Astrid

0:05

Le zèbre dans la rue de la Montagne, devant une friterie

Rue de la Montagne

0:25

Le beffroi vu en contre-plongée, le zèbre au pied de l’hôtel de ville

Le beffroi

0:33

Le zèbre sur le quai de la Sambre, sous le viaduc du métro

La Sambre et le métro

0:47

Le zèbre au sommet du terril face aux usines

Le terril

1:17

Le stade la nuit, avec le ballon endormi

Le stade du Pays de Charleroi

1:35

V6 · Six lieux réels, dans l’ordre du film.

Quelles photos de Charleroi ont servi de références ?

La première version était dessinée sans modèle, et cela se voyait : un beffroi rouge à flèche verte, un kiosque qu’on trouverait dans n’importe quel parc. Pour qu’un Carolo reconnaisse sa ville, il fallait des proportions, des matériaux et des couleurs justes. Les photos ont servi de modèles de forme. Aucune n’est collée dans le film : tout est redessiné par le programme.

La référence photographique

Le kiosque du parc Reine Astrid, avec son toit conique et ses colonnes en fausses branches
Photo : Jmh2o, Wikimedia Commons, 2021, CC BY-SA 4.0. Version redimensionnée.

Le kiosque dessiné

Détail du kiosque dessiné dans la version 2, avec ses colonnes en branches
V2 · Gros plan de contrôle : toit conique et colonnes en fausses branches repris de la photo.

Pourquoi Wikimedia Commons

J’ai choisi Wikimedia Commons pour trois raisons. Chaque photo y a un auteur et une licence libre connus : je peux la citer, et la montrer ici avec son crédit. Les lieux y sont rangés par catégories, avec 43 fichiers pour le seul stade. Enfin, la base s’interroge par programme : un petit script a lancé 11 recherches et récupéré 35 photos avec leur titre, rangées en planches de contact pour les comparer d’un coup d’œil.

La référence mesurée

Le beffroi de Charleroi, tour de brique à horloge surmontée d’une flèche sombre
Photo : Jmh2o, Wikimedia Commons, 2013, CC BY-SA 3.0. Version redimensionnée.

Le beffroi dessiné

Le beffroi dessiné dans la version 5, élargi, avec son horloge et sa flèche sombre
V5 · 0:34,5 · Recadrage sur la tour : fût élargi d’après la mesure, brique ocre, flèche sombre. L’annotation s’écrit lettre par lettre.

Les photos ont aussi servi à mesurer. Après la quatrième version, j’ai trouvé le beffroi trop étroit. Sur deux photos, le fût fait environ un quart de la hauteur visible au-dessus du toit de l’hôtel de ville : la tour a été élargie à cette proportion, avec une base évasée et un lanternon plus large.

Le beffroi en six versions, à 34 secondes

Version 1 : beffroi rouge à flèche verte

v1

rouge à flèche verte, dessiné sans modèle

Version 2 : beffroi ocre à flèche sombre

v2

brique ocre et flèche sombre, d’après photos

Version 3 : le beffroi dans une ville plus grise

v3

même tour, ville plus froide, usines au fond

Version 4 : le beffroi coupé en haut du cadre, rue en pente

v4

caméra plus basse, rue en pente

Version 5 : le beffroi élargi

v5

fût élargi après mesure

Version 6 : le beffroi vu en contre-plongée

v6

contre-plongée le long de la tour

Mêmes instants à une demi-seconde près (34 s ; 34,5 s en v5 ; 33,5 s en v6).

Trop chaud pour le Pays Noir

La deuxième version était crème et dorée, avec un terril violet sous un couchant orange. Mon retour : « On appelle ça le pays noir, donc ça doit être un peu plus gris, même si tu peux conserver des touches de couleur. » La troisième version refroidit le ciel, noircit le schiste et détaille les usines membrure par membrure. La couleur ne reste qu’en touches : livres, métro, drapeaux, fenêtres.

Le terril à 1:08

Version 1 : terril vert en taches de camouflage

v1

taches de camouflage

Version 2 : terril violet sous un couchant orange

v2

terril violet, couchant orange

Version 3 : terril sombre sous un ciel gris

v3

schiste sombre, ciel du Pays Noir

Même instant, 68 s, dans les trois premières versions.

Côté technique. Les couleurs du décor sont regroupées dans une palette JavaScript. Changer une famille de couleurs, rendre une image au même instant puis comparer prend quelques minutes. C’est plus utile qu’un retour vague sur « l’ambiance ».

La caméra : treize plans pour raconter la promenade

Jusqu’à la troisième version, la caméra restait accrochée au zèbre et le suivait de profil. Je trouvais que ça faisait « jeu vidéo, un peu fausse 3D ». La quatrième version découpe le film en treize plans : gros plan au réveil, contre-plongée le long du beffroi, plans larges, recul au sommet du terril. Dans les plans qui l’accompagnent, la caméra garde un léger retard et le laisse gagner du terrain.

Avant · une caméra accrochée

Version 3 au parc : plan large de profil, le zèbre petit devant le kiosque
V3 · 0:18 · Plan large de profil : le zèbre reste petit et le décor défile.

Après · un plan composé

Version 4 au parc : caméra plus proche, sol peint, grille et buisson au premier plan
V4 · 0:17,5 · Caméra plus proche, sol peint, grille du parc au premier plan.

Deux ajouts donnent la profondeur : un sol peint vu un peu d’en haut (gravier, pavés, pierre bleue) et des objets qui passent tout près de l’objectif, plus vite que le décor, comme la grille du parc.

Pourquoi j’ai abandonné le stade en perspective 3D

Pour le stade, j’ai choisi six photos parmi celles de la catégorie Commons. Celle-ci montre la disposition des tribunes et la pelouse.

Une des références du stade

Photographie de l’intérieur du stade du Pays de Charleroi, avec la pelouse et les tribunes
Photo : Валерий Дед, Wikimedia Commons, 2015, CC BY 3.0. Version redimensionnée.

La quatrième version calculait une vraie perspective. Le volume était lisible, mais il tranchait avec le papier découpé du reste du film. Mon retour tenait en une phrase : « Le stade de foot fait beaucoup trop 3D. » La cinquième version le redessine en coupe de face, comme un décor de théâtre : tribunes en escalier, sièges noirs et blancs, pelouse posée sur du papier noir.

Avant · trop 3D

Version 4 du stade en perspective, avec une pelouse et des tribunes qui convergent vers le fond
V4 · 1:35 · Perspective calculée : du volume, mais un autre style que le reste du film.

Après · à plat

Version 5 du stade dessiné en coupe de face, avec tribunes noires et blanches et pelouse horizontale
V5 · 1:35,5 · Coupe de face, cohérente avec le papier découpé. C’est la direction gardée.

Les derniers réglages

Entre la cinquième et la sixième version, mes retours portaient sur des détails de récit et de lecture. Le zèbre commençait roulé en ballon ; je voulais qu’il dorme, pour garder le ballon comme surprise de la fin.

Avant · un ballon dès le début

Version 5 : le zèbre roulé en ballon sur la pile de livres, au début du film
V5 · 0:04,5 · Le zèbre commence roulé en ballon.

Après · il dort

Version 6 : le zèbre endormi sur sa pile de livres, sous le grand arbre
V6 · 0:05 · Il dort ; le ballon devient la chute du film.

Les annotations étaient reliées à leur lieu par des flèches qui traversaient le ciel. Mon retour : pas besoin de flèche, le texte peut simplement rester près du lieu. Dans la dernière version, chaque annotation s’écrit à côté de ce qu’elle nomme et glisse avec le décor.

Avant · un texte loin de son lieu

Version 5 : l’annotation du haut-fourneau écrite dans le ciel, loin de la tour
V5 · 1:06,5 · « haut-fourneau 4, éteint en 2010 » flotte dans le ciel.

Après · le texte près du lieu

Version 6 : l’annotation écrite contre le haut-fourneau
V6 · 1:06 · L’annotation s’écrit contre le haut-fourneau et glisse avec lui.

Comment animer en JavaScript avec Canvas 2D ?

La peinture. Le dessin utilise Canvas 2D, la surface de dessin du navigateur. Une tache d’aquarelle est une forme au contour déformé, empilée jusqu’à vingt-quatre fois avec une faible opacité. Les traits sont des plumes à pression, effilées aux extrémités, posées sur un crayon gris de construction. Le décor est peint une fois au chargement, puis rejoué à chaque image.

Les plans superposés. Le décor est réparti en couches à plusieurs profondeurs qui glissent à des vitesses différentes, comme sur le banc-titre des anciens dessins animés. Chaque couche peut être exportée seule pour être vérifiée.

Une couche vérifiée seule

Calque de l’horizon exporté seul : usines, chevalements, pylônes et haut-fourneau
V4 · Le calque de l’horizon rendu à part, avant d’être glissé derrière la ville.

Le mouvement. Le zèbre change de pose douze fois par seconde, le trait tremble huit fois par seconde, et seule la caméra glisse en continu. Ses pattes sont calculées par cinématique inverse : un sabot posé reste fixe sur le sol pendant que le corps avance. Comme chaque image est une fonction du temps, le programme peut dessiner n’importe quel instant. Claude rendait donc des planches de poses rapprochées pour contrôler un geste.

La marche, pose par pose

Planche de six poses du zèbre entre 20 secondes et 20,417 secondes
V3 · Six poses entre 20,000 et 20,417 secondes : chaque sabot posé reste fixe.

La mise en boule, image par image

Planche du saut, de la mise en boule et de la roulade du zèbre sur le terril
V4 · Le saut au sommet du terril, la mise en boule, puis le ballon qui commence à rouler.

Les défauts. Une planche montre aussi ce qui cloche. Un petit rectangle gris apparaissait sous le ventre du zèbre. En rendant la même image avec et sans l’ombre portée, la cause est apparue : une ombre tournée au hasard dans une toile trop petite, qui la coupait en rectangle. La correction tient en un paramètre.

Avant · un rectangle gris

Gros plan sur les sabots du zèbre : un rectangle gris apparaît sous lui
V3 · Le rectangle gris sous le zèbre.

Le même cadre sans l’ombre

Même gros plan rendu sans l’ombre portée : le rectangle a disparu
Même image sans l’ombre portée : le rectangle disparaît, la cause est trouvée.

Comment les bruitages ont été créés avec Web Audio

La bande-son est un morceau de piano posé tel quel sur les 96 secondes. Tout le reste est généré dans le navigateur avec Web Audio : 20 familles de bruitages et 12 ambiances. Après la cinquième version, j’ai demandé des bruits de sabots et beaucoup plus d’ambiance sonore pour marquer les changements de paysage. Chaque lieu a donc reçu son lit sonore, qui entre et sort en fondu.

Une ambiance par lieu, sur les 96 secondes

Parcfeuillage, ville au loin

Parc : feuillage, ville au loin, de 0:00 à 0:43

Rue et placeville qui s’éveille, voix

Rue et place : ville qui s’éveille, voix, de 0:19 à 1:00

Sambreeau, moteurs des bateaux

Sambre : eau, moteurs des bateaux, de 0:40 à 1:02

Terrilgrondement des usines

Terril : grondement des usines, de 0:56 à 1:22

Stadegrillons, projecteurs

Stade : grillons, projecteurs, de 1:15 à 1:36
0:000:240:481:121:36
V6 · Volume de chaque lit sonore au fil du film, d’après les réglages du code (hauteur normalisée par lieu). Les fondus se croisent quand le zèbre change de paysage.

Les 303 pas sont calculés sur la marche dessinée : un bruit part à l’instant exact où un sabot touche le sol, et sa matière suit le terrain (gravier au parc, pavés dans la rue, dalles au quai, schiste sur le terril).

Avant · la bande-son de la version 4

Spectrogramme et forme d’onde de la bande-son de la version 4
V4 · Spectrogramme et forme d’onde : boîte à musique et bruitages générés.

Après · la bande-son finale

Spectrogramme de la bande-son de la version 6
V6 · Le piano porte le film ; les textures de fond changent avec les lieux, comme le voile aigu du feuillage au parc.

Pendant ce projet, Claude contrôlait l’audio par des mesures. C’est ainsi qu’a été repéré le défaut le plus gênant : un bâillement beaucoup trop fort. En rendant chaque famille de bruitages seule, il culminait trois fois plus haut que le carillon. Une ligne de code l’a ramené au niveau des autres.

Le bâillement trouvé par une mesure

Bâillement, avant correction

0,753

Carillon

0,220

Sabots (303 pas)

0,197

Rebonds

0,152

Pop du ballon

0,107

Corne de bateau

0,105

Oiseaux

0,065

Bâillement, après correction

0,054

Mouettes

0,018

V6 · Crête de huit familles de bruitages rendues seules, sans musique (1 = plein volume). Mesure du 16 octobre, 20 h 43, avant et après la correction d’une ligne.

Le résultat final, après six versions

JavaScript a servi au dessin et au mouvement, Web Audio au son, Playwright à capturer les 2 880 images et FFmpeg à les assembler. Mais ce qui a fait le film, c’est la boucle répétée six fois : regarder un rendu, nommer précisément ce qui gêne, corriger, puis comparer le même instant avant et après.

Version 6, le résultat final après six versions · 96 secondes · aperçu sans bande-son.

Les rendus, planches et spectrogrammes proviennent des essais conservés du 16 octobre 2026 ; ils n’ont pas été recréés pour cet article. Les deux courbes sont tracées d’après les réglages et les mesures consignés dans le code. Les photographies de référence sont créditées sous chaque image ; un clic agrandit les comparatifs.

Un projet dirigé par , réalisé avec Claude pour la programmation et l’analyse des rendus.