Une planète n'est pas une image

Je développe Dynasty Nova, un jeu de gestion spatiale par navigateur. Une planète s'y affiche à trois endroits. En horizon dans l'en-tête des écrans, en sphère dans la galaxie, et en globe 3D qui tourne sous les yeux du joueur. Chaque variante de planète, c'est donc quatre livrables cohérents entre eux, dont trois textures que le moteur 3D pose sur une sphère.

C'est la seule chaîne de notre production qui fabrique autre chose qu'une illustration. Et c'est la seule qui mesure au lieu de juger à l'œil : une texture qui semble juste à plat peut rendre faux une fois éclairée, tone-mappée et enroulée sur une sphère.

Horizon, sphère et albédo équirectangulaire d'une variante de planète désertique de Dynasty Nova
Une variante « désert » : horizon, sphère, et l'albédo 2:1 que le moteur 3D enroule sur le globe.

Les livrables d'une variante

  • Horizon → 1 024 × 1 024, la planète vue en orbite basse, limbe montant vers la droite.
  • Sphère → 1 024 × 1 024, détourée, pour les cartes et la galaxie.
  • Albédo → 2 048 × 1 024, au ratio 2:1 exact, la couleur de surface sans éclairage.
  • Normale → 1 024 × 512, le relief.
  • Spéculaire → 512 × 256, ce qui brille (eau, glace).

L'ordre de fabrication n'est pas négociable : chaque livrable se mesure contre le précédent.

L'erreur qui a imposé l'ordre

La première tentative sur un biome sec avait réutilisé l'ancienne texture du jeu comme référence pour générer les horizons. Les six horizons ont inventé des identités sans rapport avec leurs sphères : une plaine pâle et craquelée là où la sphère montrait une grande faille. Le joueur aurait vu deux planètes différentes selon l'écran.

L'albédo « vérité terrain » d'abord

Depuis, la chaîne commence par reconstruire un albédo à partir de la sphère existante, avec Nano Banana Pro, un modèle de composition et non de transfert de style. Le prompt est un cahier des charges en sections :

  • Format → projection plate latitude-longitude, ratio 2:1, continuité horizontale.
  • Verrou d'orientation → le centre de l'image correspond à la longitude 0°, sans rotation ni recentrage.
  • Reconstruction du dos → la face cachée est inventée, mais cohérente.
  • Surface → albédo pur, aucune information d'éclairage.
  • Structure → asymétrie, aucun motif radial, aucune réinterprétation artistique.

Sur les géantes gazeuses, les clauses de géographie sont remplacées par des clauses de bandes : chaque bande forme un anneau complet qui se referme sur la couture, et toute tache isolée n'apparaît qu'une fois.

L'horizon, avec trois références dosées

L'horizon final est généré par Krea 2 Medium avec trois références : une référence de style par climat (0,50), l'ancien horizon de cette variante pour le cadrage (0,40) et l'albédo tout juste reconstruit pour la vérité du terrain (0,25). Une seule variable change d'une planète à l'autre : la référence de climat.

Neuf images de référence de style montrant le même avant-poste minier sous neuf climats différents
Neuf références, un même sujet : seul le climat change. Elles portent la facture, le prompt porte le terrain.

Une phrase qui a tout changé

Les premiers horizons sortaient à 0,21 de saturation contre 0,64 pour les bannières du jeu, et à 45 % de dominante froide contre 95 %. Ils ressemblaient à des photos orbitales, pas à une illustration peinte. La clause qui a le plus changé le rendu décrit le ciel : un vide sombre et profond, sarcelle et indigo, dont la nuance vient de bancs de poussière et de voiles nébuleux, jamais de la luminosité.

Corriger sans casser

Une fois l'horizon validé, la sphère est recalée dessus, puis l'albédo de production est généré à partir de cette sphère recalée. Deux pièges sont irréversibles.

Corriger en Lab, jamais en RVB

Corriger la couleur en RVB décale la teinte des extrêmes : les calottes polaires viraient au bleu-violet. Le recalage se fait en espace Lab, sur la chroma seulement, avec un facteur plafonné à 1,35 : une variante sombre a peu de chroma, donc un rapport énorme, et son bassin ocre virait à l'orange fluo.

Ne jamais aligner la luminance

La luminance est ce qui distingue les six variantes d'un même biome. Alignée, la variante basaltique serait passée d'une luminance de 42 à 105, et toutes les planètes du biome se seraient ressemblé.

Mesurer dans le vrai moteur

C'est le cœur de la méthode. Un script rejoue les composants 3D du jeu, avec la même version de three.js, dans un Chromium headless, et rend chaque texture sur sa sphère. Un second script chiffre l'écart entre ce rendu et la sphère d'origine. La boucle se referme en résolvant un gain par canal de couleur.

Pourquoi un gain par canal

Le tone mapping ACES du moteur ne fait pas que désaturer : il décale la teinte. Avec un simple facteur de saturation, une mer de sable beige ressortait orange. Le gain se résout donc par canal et par variante, borné entre 0,70 et 1,30 : non borné, la boucle avait convergé sur un gain bleu de 2,16, avec postérisation et frange cyan à la clé.

Le quart de tour invisible

La géométrie de sphère de three.js place face caméra le point u = 0,25 de la texture, pas u = 0,5. Sans ce décalage d'un quart de tour, le moteur aurait affiché l'hémisphère reconstruit par l'IA plutôt que celui de la sphère d'origine. Aucun regard sur la texture à plat ne l'aurait détecté.

Ce que l'œil attrape encore

La mesure n'a pas tout vu. Deux défauts n'ont été repérés qu'à l'œil : une couture locale et une plage de noirs bouchés. Un écart moyen ne voit pas un défaut localisé. La mesure écarte ce qui est faux ; elle ne remplace pas la relecture.

Ce qui est calculé, pas généré

Les cartes de normale et de spéculaire ne sont pas demandées à l'IA : elles se calculent à partir de l'albédo (un filtre de Sobel sur la luminance pour le relief, un masque d'eau et de glace pour la brillance). Générer ce qui peut se calculer, c'est ajouter de l'aléa là où il n'en faut pas.

Et pas de 4K

Un upscale 4K a été testé et écarté. Il n'ajoutait que du bruit (+3,7 % d'énergie haute fréquence) et augmentait légèrement l'écart au moteur. Surtout, il cassait la continuité horizontale : l'upscaler ignore que les bords gauche et droit sont le même méridien.

Conclusion

Pour un asset 3D, l'IA générative est un excellent peintre et un très mauvais intégrateur. La méthode qui a tenu : générer ce qui demande de l'invention (le terrain, le dos caché), calculer ce qui se calcule (relief, brillance), et mesurer dans le moteur réel plutôt que sur l'image à plat. C'est le prolongement naturel de notre principe de création visuelle avec Krea, appliqué à la 3D, et un cousin des shaders et textures génératives dans Figma. Pour la place de ces visuels dans l'expérience de jeu, notre guide UX du jeu par navigateur donne le contexte.

Dans la même série

Questions fréquentes

Peut-on générer des textures de planète 3D avec l'IA ?
Oui. Un modèle de composition comme Nano Banana Pro peut reconstruire un albédo équirectangulaire 2:1 à partir d'une image de sphère, à condition d'un cahier des charges strict (format, orientation, absence d'éclairage). Les cartes de normale et de spéculaire, elles, se calculent à partir de l'albédo.
Comment vérifier qu'une texture générée par IA rend bien en 3D ?
En la rendant dans le vrai moteur du jeu, dans un navigateur headless, et en mesurant l'écart entre ce rendu et l'image de référence. Un jugement à l'œil sur la texture à plat ne voit ni les décalages de teinte du tone mapping ni le mauvais hémisphère affiché.
Faut-il upscaler une texture de planète en 4K ?
Pas forcément : dans nos mesures, un upscale 4K n'a ajouté que du bruit, a légèrement augmenté l'écart au moteur et a cassé la continuité horizontale de la texture, car l'upscaler ignore que les bords gauche et droit sont le même méridien.
Pourquoi ne pas corriger les couleurs d'une texture générée en RVB ?
Parce qu'une correction en RVB décale la teinte des extrêmes, comme des calottes polaires qui virent au violet. Nous corrigeons la chroma en espace Lab, sans toucher à la luminance, qui est ce qui distingue les variantes entre elles.
Certains liens sont des liens d'affiliation, si vous effectuez un achat auprès de ceux-ci, nous pouvons percevoir une commission.