Aller au contenu
Démarrer un projet
Menu

Scènes

Les illustrations, des schémas isométriques vectoriels : comment elles sont faites, animées et posées.

Les illustrations

Depuis le 13 octobre, des schémas isométriques vectoriels, à la manière de Baseten (JB, 12 octobre) : le gris « stone » de la charte, quelques verts seulement, sur ce qui est actif, et des animations CSS écrites dans le SVG même, sans vidéo. Une illustration par offre, une par rôle, le suivi, la section IA de l’accueil (le cas Bosco Services, posé le 13 octobre), et la scène hero du premier écran : le G Grinn sur son socle, six objets autour. Plus aucune page ne pose d’ancienne scène peinte ; leurs fichiers restent dans public/assets/scenes.

FichierOù elle se poseAnimationFormat
herola scène hero, le G Grinn sur son socle et six objets autour : la démonstration du premier écran de l’accueil (hero.svg#fixe, la page le fait flotter) ; l’en-tête de /offres/, en coverCSS ; le G, posé par hero-grinn.py, se pose puis son point vert saute2560 × 1664 (svg)
site-internetla carte Site internet et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueilCSS1995 × 1667 (svg)
marketing-digitalla carte Marketing digital et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueil ; une cellule de /suivi/CSS1418 × 1435 (svg)
e-commercela carte E-commerce et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueilCSS1995 × 1433 (svg)
application-mobilela carte Application mobile et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueilCSS1528 × 1466 (svg)
ia-et-automatisationla carte IA et automatisation et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueil ; la cellule de /contact/CSS1818 × 1314 (svg)
logiciel-metierla carte Logiciel métier et l’en-tête de sa page ; sa vignette dans la démonstration de l’accueilCSS1866 × 1509 (svg)
suivile dôme du suivi (accueil) et l’en-tête de /suivi/CSS1806 × 1282 (svg)
role-designla cellule Le design UX/UICSS1233 × 893 (svg)
role-devla cellule Le développementCSS974 × 964 (svg)
role-chef-de-projetla cellule Le chef de projetCSS1368 × 1791 (svg)
role-strategiela cellule La stratégieCSS1324 × 1386 (svg)
role-iaaucune : l’IA n’est plus un rôle, elle traverse toutCSS1605 × 1525 (svg)
role-pubaucune : la cellule de la stratégie a pris role-strategieCSS1182 × 1197 (svg)
ia-scenela section IA de l’accueil, appelée en ia-scene.svg#fixe (c’est sa boîte, dessin et annotations, qui flotte) : le mail, l’assistant, le logiciel métier, la fiche et le devis, la validation, reliés par le flux (tour 11, 13 octobre) ; cinq annotations ancrées, les trois étapes et deux repères (le mail, le logiciel métier), aucune sur l’assistantCSS ; une vague verte parcourt le flux toutes les 4,8 s, en couleur seulement (flux-ia.py)2575 × 1693 (svg)
SpécimenL’illustration Site internet dans le cadre d’une carte (300 px, contain), puis la scène hero, celle de la démonstration de l’accueil, en pleine largeur, appelée ici sans #fixe : elle flotte d’elle-même. Les objets entrent l’un après l’autre, le vert respire, les nœuds s’allument, le dessin flotte d’un bloc ; sur la scène hero, le G se pose et son point vert saute.
Appelsrc/components/trame/Scene.astro
<div class="tr-carte__scene">
  <Scene nom="site-internet" />
</div>

Comment elles sont faites

Rien n’est dessiné à la main : la chaîne est écrite, et chaque illustration la suit.

Chaque illustration est produite en vectoriel par Recraft V4 Pro Vector sur Runware, la palette de la charte passée au modèle. Aucun texte dans l’image (aucune balise text dans les 42 SVG du dossier, vignettes comprises) : ce que l’illustration montre, le texte le dit à côté. Les verts Grinn sont ensuite remis dans le SVG, là où le modèle a sorti un olive ou oublié le vert.

Elle est animée par docs/proto-animations/outils/anime-svg.py : les objets sont trouvés par leur silhouette, puis entrent en fondu l’un après l’autre ; le vert respire, les nœuds s’allument, et l’image entière flotte d’un bloc (5 s, 24 unités du dessin). Jamais une pièce seule ne bouge : contours et liaisons sont parfois fondus dans un même tracé, et l’image se déchirerait.

La scène hero part d’un décor Recraft (tour-10-hero-ecosysteme) : hero-eco.py en retire la boutique centrale et les liaisons d’origine, redessine le socle et un rayon par objet. hero-grinn.py y pose le vrai symbole Grinn, extrudé en isométrique, qu’aucune IA ne redessine. C’est la seule pièce qui bouge seule, parce qu’elle n’est pas un tracé Recraft : elle se pose en 0,9 s, puis son point vert saute toutes les 4 s.

Les originaux sont hors dépôt, dans le dossier du projet (docs/proto-animations/master-runware : tour-6-declinaisons pour la série, tour-10-hero-ecosysteme pour la scène hero, tour-11-ia pour la section IA). Le site n’en garde que les SVG animés. La copie de hero.svg porte deux règles du site : elle vide le dessus blanc gardé sous le socle, et, appelée en hero.svg#fixe, elle ne flotte plus d’elle-même. Celle de ia-scene.svg en porte une : appelée en ia-scene.svg#fixe, elle ne flotte plus d’elle-même.

La section IA de l’accueil a gardé jusqu’au 13 octobre la dernière scène de l’ancienne chaîne, écartée le 12 octobre (voir Écarté) : une image FLUX.2 dev sur Runware, animée en boucle par Kling, sur un fond vert en dégradé. JB la fait refaire « avec un fond clair ». Son schéma v2 suit la recette de la série (tour-11-ia, en 2560 × 1664, le format du héros, pour un flux en cinq temps) : quatre compositions, la diagonale retenue, ses verts gardés sur le flux et la validation seulement. Il ajoute une vague verte qui parcourt le flux, de couleur seulement (flux-ia.py). Les quinze scènes peintes restent dans public/assets/scenes : rien n’est supprimé, et Scene y retombe pour tout nom qui n’a pas de SVG, sauf dans la section IA de l’accueil, appelée avec v2Seulement : sans ia-scene.svg, elle pose la réserve « Scène à produire » et le signale au rendu, jamais l’ancienne scène.

Comment elles se posent

Fond transparent, sans multiply ni filtre : la cellule passe autour du dessin, et il n’a pas de cadre. Chaque emplacement fixe sa hauteur et son cadrage ; au premier écran de l’accueil et dans l’en-tête d’une page, la cellule reste pâle et unie derrière le schéma (13 octobre, à valider par JB) ; dans la section IA de l’accueil aussi, à la demande de JB (fond clair, 13 octobre).

ClasseZoneValeur
.tr-scene--v2toute illustration v2une image (Scene.astro et illustrations.ts) aux dimensions de son viewBox, alt vide, decoding async, lazy (eager en haut de page : la classe tr-une__scene) ; mix-blend-mode normal, sans filtre : son fond est transparent ; elle s’anime seule, en CSS, et se fige en mouvement réduit ; ses traits foncés portent un contour en px d’écran réglé sur la taille affichée, pour rester nets en densité 1 (data-lisibilite, posé par docs/proto-animations/outils/lisibilite-svg.py, à relancer sur tout SVG recopié depuis docs/) ; en densité 2 et plus, l’image prend <nom>@2x.svg, le dessin d’origine (srcset, écrit par le même script)
.tr-carte__scene .tr-scene--v2la carte d’offrecadre de 300 px (220 px sous 480 px), 16 px d’air au-dessus ; contain ; au survol, la boîte entière, dessin et annotations, à 1.04 en 700 ms
.tr-role .tr-scenela cellule de rôlehauteur clamp(180px, 16vw, 220px), poussée en bas de la cellule, 14 px d’air ; contain
.tr-dome__scene .tr-scene--v2le dômeune boîte 3/2 de min(80 %, 340px, 66cqw − 8px) de haut, posée au bas du dôme ; contain, sans zoom : le schéma entier, même sur un téléphone de 320 px
.tr-demo__scene .tr-une__scenela démonstration de l’accueilhero.svg#fixe sur toute sa cellule, pâle et unie ; contain, pour que le schéma entier reste visible et que les traits tombent sur leurs objets ; la page le fait flotter avec ses traits et son anneau ; ni parallaxe ni recul
.tr-cel--scene .tr-scene--v2une cellule de /suivi/ et de /contact/marketing-digital sur /suivi/, ia-et-automatisation sur /contact/ : cellule pâle, padding clamp(16px, 2vw, 28px), le dessin centré, contain, 420 px de haut au plus
.tr-demo__offre .tr-scene--v2la vignette d’une offrel’illustration de l’offre recadrée sur son objet principal, entier, au format de la case (<id>-vignette.svg : voisins retirés, liaisons fondues au bord ; table VIGNETTES de lisibilite-svg.py), en multiply, sous son nom, à droite de la case (voir la page Accueil)
.tr-page__dessin .tr-scene--v2la page intérieurecellule 4/3, pâle et unie ; contain, avec clamp(18px, 5 %, 40px) d’air ; la scène hero de /offres/ en cover (elle n’y perd que ses marges vides) ; suit le pointeur (data-parallaxe), recule en sortant de l’écran, et ses annotations ancrées la suivent
.tr-ia__scene .tr-scene--v2la section IA de l’accueilia-scene.svg#fixe dans une boîte 4/3 (.tr-ia__scene) centrée dans la cellule pâle et unie (.tr-ia__dessin, padding clamp(16px, 2vw, 28px)) ; contain, sans agrandissement : le schéma entier ; la boîte est un conteneur de taille pour les annotations ancrées, un cran plus petites quand elle fait moins de 540 px de large, et c’est elle qui flotte, dessin et annotations d’un bloc (tr-ia-flotte : 5 s, 24 unités du dessin) ; sous 700 px, au format du dessin et sur toute la largeur de la cellule (padding latéral 0), sans annotations
.tr-scene--attentela réserveni SVG ni scène peinte pour ce nom (ou pas de SVG quand l’appel porte v2Seulement) : « Scène à produire » et le nom, en clair, sur le papier des réserves, bord tireté ; 160 px de haut au moins ; aucune ne s’affiche aujourd’hui
Scenele composantnom (le fichier), classe, fixe (appelle <nom>.svg#fixe quand le SVG le permet : la page le fait flotter), v2Seulement (la section IA de l’accueil : sans SVG, la réserve et un avertissement au build, jamais l’ancienne scène peinte, écartée), animee (anciennes scènes : forcer la boucle ou l’image)

Une illustration est une image SVG : ses animations tournent dans la balise img, sans script (vérifié dans Chrome le 13 octobre), et se coupent d’elles-mêmes en mouvement réduit. Sans JavaScript, elles s’animent pareil ; seule la scène hero de l’accueil, appelée en #fixe, ne flotte pas, puisque c’est trame.ts qui la fait flotter : ses objets entrent et ses nœuds s’allument quand même. Le schéma de la section IA, appelé lui aussi en #fixe, flotte sans script : c’est grinn.css qui fait flotter sa boîte.

Dans la section IA, le schéma est posé entier dans une boîte 4/3, au centre d’une cellule pâle et unie, le texte à côté sur le blanc, sans aplat (fond clair, JB, 13 octobre) ; ses annotations sont ancrées comme ailleurs. Jusque-là, toute la grille était pâle, la cellule du dessin portait le dégradé d’angle, et l’ancienne scène, en cover agrandie à 1.08, perdait ses bords. Une ancienne scène en boucle, si un nom sans SVG y retombait, se poserait avec poster, preload="metadata", muted, loop et playsinline : trame.ts la lance quand un quart d’elle est à l’écran, la met en pause quand elle en sort, et ne la lance pas en mouvement réduit.

Sur le premier écran de l’accueil, la scène hero est posée en contain au centre de la démonstration, et chaque offre autour d’elle pointe un objet par un trait d’attache ; un anneau relie les objets entre eux. Les points visés sont écrits dans index.astro (table CIBLES), en fraction du dessin : ce sont les points d’ancrage des six objets dans hero.svg (2560 × 1664). Si la scène hero est refaite, les cibles sont à recaler. Chaque offre y montre son illustration en vignette, chargée en différé.

Les annotations

Une annotation nomme ce qu’elle touche. Sur une illustration v2, elle est ancrée : le bout de son trait est posé sur l’objet, dans le repère du dessin, et l’annotation se range dans le vide à côté (places cherchées sur le masque de chaque dessin, à toutes les tailles de boîte). Sur une ancienne scène peinte, elle était posée en pourcentage de la scène. Accrochée par le haut ou par le bas, elle est masquée sous 700 px : là, le texte suffit.

Emploi
Le nom des offres autour de la scène de l’en-tête de /offres/, les technologies sur la scène d’une carte et d’un en-tête de page d’offre, les trois temps de la scène IA, les trois mots du suivi dans le dôme et dans l’en-tête du suivi. Sur l’accueil, depuis le 12 octobre, les offres ne sont plus des annotations : chacune a sa case autour de la scène, reliée à son objet par un trait.
Moment
Quand un mot court aide à lire la scène. Jusqu’à trois par carte et par en-tête de page d’offre, cinq sur la scène IA, six sur l’en-tête de /offres/.
Jamais
Une phrase, un chiffre qui argumente, une annotation sans trait, une annotation qui dit autre chose que le texte à côté. Elle est décorative, et marquée aria-hidden.
PropZoneValeur
x, yla positionen pourcentage de la scène, depuis le haut et la gauche (left, top) ; avec ancre, le bout du trait
ancresur l’objetillustrations v2 : x et y sont le bout du trait, sur l’objet nommé ; trame/annotations.ts donne les points dans le repère du dessin et ancree() les rend en cqw / cqh de la boîte : le trait touche l’objet à toutes les largeurs
droitele côtél’annotation s’étend à gauche de son trait (sinon : quand elle est posée à droite de 50 %)
traitla longueur du traitune longueur CSS ; 16 px sinon ; ancrée, max(8px, la longueur écrite dans annotations.ts × l’échelle du dessin) : le trait grandit avec lui
hautl’accrochel’annotation est accrochée par le bas : le trait part de son bas
vertla mise en valeurbord et texte vert profond
etapeles trois tempsl’annotation s’allume à son tour, toutes les 2,2 s, sur un cycle de 6,6 s
nle rangdécale le flottement (-1,3 s par rang) et le tour d’allumage
.tr-pucele styleInter 600 10,5 px, capitales, 0,1 em ; fond blanc, bord --line, 1 px d’ombre portée en --line ; encre seconde
sous 700 pxle téléphonedisplay: none : le texte suffit
SpécimenLe schéma de la section IA de l’accueil, avec ses cinq annotations ancrées : trois temps qui s’allument tour à tour (etape), posés sous le flux vert, leur trait parti du flux ; deux repères au-dessus de leurs objets. Le schéma est appelé en #fixe : la boîte flotte d’un bloc, dessin et annotations. Ici sans sa cellule pâle, à la largeur de la colonne : dans une boîte de moins de 540 px, les annotations passent un cran plus petites, comme sur l’accueil. Masquées sous 700 px.
Appelsrc/components/trame/Puce.astro
<div class="tr-ia__scene" data-stagger="150">
  <Scene nom="ia-scene" fixe v2Seulement />
  <Puce {...ancree('ia-scene', ANCRES_IA.demande, 'contenu')} etape n={0}>Demande reçue par mail</Puce>
  <Puce {...ancree('ia-scene', ANCRES_IA.mail, 'contenu')} n={3}>Le mail</Puce>
  <Puce {...ancree('ia-scene', ANCRES_IA.fiche, 'contenu')} etape n={1}>Fiche et devis préparés</Puce>
  <Puce {...ancree('ia-scene', ANCRES_IA.logiciel, 'contenu')} n={4}>Le logiciel métier</Puce>
  <Puce {...ancree('ia-scene', ANCRES_IA.validation, 'contenu')} etape n={2}>Une personne valide</Puce>
</div>

RègleUne scène est décorative : le texte dit tout ce qu’elle montre.