KEN’S CAT LOG

J’ai créé le matin, le midi et la nuit à Zagreb avec Codex 🌅🚋🌙 De la ville dans Blender à une promenade nocturne dans Three.js

Cette fois, j’ai recréé la place Jelačić de Zagreb dans Blender et capturé ses trois visages : matin, midi et nuit 🌅🚋🌙

D’abord, une précision importante ! Ce que je montre ici, ce ne sont pas des photos réelles, mais des rendus d’une scène 3D que j’ai créée. Ce n’est pas non plus une copie numérique parfaite des lieux. C’est une ville encore en cours de création, inspirée de photos à 360° et de cartes.

Mais c’est vraiment amusant de voir à quel point l’atmosphère d’une même ville peut changer simplement en modifiant la lumière… ! ✨

Matin : ce moment un peu calme, avant que la ville se réveille 🌅

La statue équestre et les rues de Zagreb baignées par la lumière chaude et rasante du matin. Rendu CG réalisé dans Blender.

Pour le matin, j’ai ajouté une lumière chaude et basse afin de projeter de longues ombres sur les bâtiments. Le cheval de bronze, les tables de café qui semblent encore un peu endormies… Une place où personne n’est encore assis donne envie de partir se promener, non ? ☕

Il ne s’agit pas d’une reconstitution rigoureuse du « Zagreb à 6 h 45 ce matin-là », mais d’une image dont l’éclairage a été réglé pour évoquer le matin. Le ciel légèrement couvert utilise aussi un arrière-plan créé avec la fonction de génération d’images lors d’une étape précédente.

Midi : les trams bleus deviennent la couleur de la ville 🚋💙

Deux trams bleus éclairés par la lumière diurne sous un ciel couvert. Scène CG où ils sont placés en sens opposés sur des voies adjacentes.

La vedette de midi, ce sont les trams bleus typiques de Zagreb ! J’ai placé un modèle approximatif inspiré du TMK 2200 sur l’autre voie aussi, pour composer une scène avec deux rames alignées en sens opposés.

J’ai modélisé séparément non seulement la carrosserie, mais aussi les soufflets d’articulation, les fenêtres, les portes, les roues, l’équipement sur le toit et le pantographe. Ce n’est toutefois pas une maquette de précision conforme aux plans du véhicule réel : il y a donc encore de quoi progresser 🔧

À midi, une lumière douce de ciel couvert laisse apparaître naturellement les rames bleues et l’architecture de pierre. Plutôt que de faire flotter les trams dans un endroit qui « y ressemble », je les ai alignés sur les axes des voies extraits de la carte.

Nuit : les lampadaires, le ciel étoilé et les reflets sur les pavés — c’est ce que je préfère 🌙✨

La place Jelačić sous un ciel étoilé, éclairée par des lampadaires chauds et une lumière lunaire bleutée. Rendu CG nocturne avec des reflets lumineux sur les pavés.

Personnellement, c’est cette version nocturne que je préfère ! J’ai associé des lampadaires chaleureux à une lumière de lune bleutée, avec des pavés légèrement réfléchissants, comme s’ils étaient humides. C’est une mise en scène pour créer une ambiance, pas une reconstitution de la météo du jour de prise de vue.

Les lampadaires ne sont pas seulement des images lumineuses plaquées : j’ai défini séparément les modèles 3D des luminaires et les sources de lumière qui éclairent les alentours. J’ai pu confirmer sur la carte la position de 39 lampadaires. Parmi eux, les 14 répertoriés comme modèles à quatre lampes ont reçu des ornements en spirale et des globes suspendus inspirés de photos.

Les étoiles aussi font partie d’un ciel décoratif, pas d’une disposition réelle des constellations. Mais elles contribuent énormément à l’impression de se promener dans la ville de nuit… ! 🌌

Le travail concret ressemblait à ça 🛠️

Toutes les opérations de création ont été effectuées depuis Codex. Blender a été piloté avec Python via MCP, les vérifications ont été faites par rendus et captures d’écran, et la publication de l’article et des images utilise l’API de yasue.org.

  1. La base de la ville : à partir de photos à 360°, j’ai importé les contours des bâtiments et les voies d’OpenStreetMap, puis donné du volume aux bâtiments alentour.
  2. Correction des détails : j’ai refait le cou, le visage et les jambes du cheval de la statue équestre, le bras du personnage, l’uniforme militaire et la plaque de l’inscription sur le socle. Avec les seules photos rapprochées, il m’est aussi arrivé de mal interpréter l’orientation des jambes ; j’ai corrigé cela après avoir regardé des photos de la statue entière.
  3. Ajustement des terrasses de café : avec « multiplie les tables et les chaises par 10 ! », je suis monté une fois à 200 tables et 400 chaises — clairement trop 😂 Au final, je suis redescendu à 60 tables et 120 chaises, regroupées devant quatre établissements.
  4. Escaliers et lampadaires : j’ai ajouté des escaliers qui figuraient sur la carte mais avaient été oubliés lors de la modélisation. Les lampadaires aussi ont été déplacés : d’une répartition approximative à intervalles réguliers, ils sont passés aux positions indiquées sur la carte.
  5. Prises de vue matin, midi et nuit : j’ai modifié la position de la caméra, la couleur et l’intensité de la lumière, ainsi que les reflets, puis j’ai réellement rendu la même scène 3D. Ce ne sont pas des images où l’IA aurait redessiné la ville par-dessus de la CG.

Cette fois, j’ai retenu que « augmenter la quantité » et « rendre un lieu crédible » sont deux choses différentes. Au lieu d’éparpiller un grand nombre de tables, les regrouper devant les établissements donne davantage l’impression d’une vraie ville ☕✨

Prochaine étape : parcourir la ville de nuit dans Three.js 🎮

J’ai aussi mis en œuvre une visionneuse Three.js, verrouillée sur la nuit, à partir de ce modèle Blender. Le modèle a été converti au format GLB et les données compressées pour le navigateur. Elle contient les bâtiments, le mobilier des cafés, la statue et les deux trams.

On se déplace avec WASD, on regarde autour de soi avec la souris et on accélère avec Maj. J’ai également prévu des collisions simples avec les bâtiments et le mobilier. Comme calculer en même temps un très grand nombre de lumières est coûteux, la scène donne la priorité aux lampadaires proches.

La version Web est actuellement en préparation comme aperçu privé réservé à son créateur. Les images de cet article viennent de Blender ; la qualité visuelle et les reflets ne seront pas parfaitement identiques dans la version Three.js.

Ou ouvrez ceci
https://ja.yasue.org/embed/2026-09-06/2956db8fb61c85ad/index.html

Ce qui n’est pas encore terminé mérite aussi d’être précisé 📝

La statue équestre n’a pas encore le réalisme permettant de la confondre avec l’original, et les ornements des bâtiments comportent encore des répétitions et des approximations. Le nombre et la disposition des tables de café, la hauteur des dénivelés et certaines formes de lampadaires sont également approximatifs. Les données cartographiques ont été récupérées en 2026, tandis que les photos de référence datent de 2016 : il y a donc aussi cet écart de temps.

Cet article n’est pas tant fait pour se vanter d’une ville terminée que pour partager un journal de création : créer avec Codex, comparer, corriger et changer la lumière. Voir peu à peu apparaître les différentes expressions de la ville, c’est à mon avis la partie la plus intéressante 🌃

Références utilisées 🔗

Données cartographiques : © OpenStreetMap contributors, ODbL. Les photos de référence elles-mêmes n’ont pas été reproduites. Les trois images publiées sont issues de la scène Blender créée cette fois-ci.