Aller au contenu principal

Voir le feu en relief : le bloc 3D de la simulation

En 1.24.5, la simulation de propagation se découpe comme une part de gâteau et se manipule dans tous les sens, avec la carte drapée sur le relief.

3 min de lecture
Par Nuno CastroSapeur-pompier · Fondateur de KiloDelta

Une isochrone à plat, c'est une information. La même isochrone posée sur le relief, avec le versant qu'elle remonte et le vallon qu'elle contourne, c'est une compréhension. Cette version ajoute à la simulation un bloc-diagramme 3D du feu, calculé en même temps que la propagation. Voici ce que j'ai construit et avec quoi.

Contexte et objectif

Historiquement, le moteur de simulation de KiloDelta génère ses isochrones sur une projection 2D plane. C'est suffisant pour obtenir la direction, le vecteur de vitesse et le chronogramme de propagation.

Cependant, la projection plane introduit un biais d'interprétation topographique. La vitesse de progression d'un front de feu (ex. 800 m/h) varie fortement entre un plateau et une pente à 30%. L'analyse nécessite une lecture manuelle des courbes de niveau et du chevelu hydrographique. L'objectif était d'intégrer un rendu du relief 3D interactif (« le bloc »), permettant d'extraire la zone d'intérêt, de pivoter autour de l'axe central et de lire directement l'impact du terrain sur le front sans phase de représentation mentale.


Interface et intégration fonctionnelle

Le composant est accessible depuis la vue Simulation via un bouton dédié dans le rail latéral dès qu'un foyer est initialisé.

  • Données affichées : Extrait de MNT carré de quelques kilomètres de côté avec flancs coupés. Texture drapée : tuiles OSM, IGN (selon droits d'accès) ou imagerie satellite.
  • Superposition métier : Surimpression des isochrones en gradient thermique avec curseur temporel interactif. Pistes DFCI, PEI et carroyage restent affichés sous forme de couches vectorielles interactives.
  • Comportement : Lecture seule. Le bloc est un snapshot de l'état de la simulation au moment de l'ouverture ; il ne déclenche aucun nouveau calcul de propagation.

Choix d'architecture et contraintes matérielles

1. Refus du WebView et des moteurs 3D tiers

L'approche classique via WebView et bibliothèques WebGL/Three.js a été écartée. Sur les terminaux durcis de service (dotés de 3 Go de RAM), l'instanciation d'un moteur WebKit parallèle entraînant une surconsommation mémoire et des risques de crash par Out Of Memory.

Règle d'architecture : Pas d'outil tiers, pas de WebView. Le rendu est entièrement natif Flutter.

2. Échelle des altitudes

Aucun facteur d'exagération verticale (exagération Z = 1.0 strict). Le relief est restitué à l'échelle réelle pour éviter toute distorsion dans l'évaluation de la pente opérationnelle.


Implémentation du moteur de rendu

  • Primitive de rendu : Le pipeline s'appuie sur la primitive de dessin de bas niveau de Flutter (CustomPainter / drawVertices), en générant des maillages de triangles (Vertices.raw).
  • Complexité géométrique : Le maillage compte de 8 000 à 33 000 triangles selon le niveau de précision sélectionné. Le profil « Élevé » vise ~30 000 triangles, seuil théorique assurant une erreur d'approximation topographique < 1 %.
  • Source MNT : Données brutes issues du RGE ALTI (IGN). Interrogation d'une grille de 41 × 41 points (1 681 nœuds) rééchantillonnée par interpolation bilinéaire pour alimenter le maillage. Un MNT algorithmique de secours est utilisé en cas de timeout réseau, avec signalement visuel sur l'interface.

Intégration dans le pipeline de calcul

Afin d'éviter toute latence d'I/O à l'ouverture du composant, la récupération du MNT et des tuiles est asynchronisée mais encapsulée dans la phase finale du moteur de propagation.

  1. Fin du calcul des isochrones.
  2. Détermination de l'emprise exacte du bloc en fonction de la distance maximale parcourue par le feu (de 4 à 20 km).
  3. Lancement des requêtes RGE ALTI et assemblage des tuiles en tâche de fond.
  4. Timeout fixé à 6 secondes pour les requêtes IGN : si dépassé, la simulation se valide et le chargement continue en mode non-bloquant.

En mode mission, l'emprise et la structure du bloc sont distribuées aux clients secondaires pour éviter les requêtes redondantes.


Paramétrage et métriques de sortie

Paramètre Description
Niveaux de rendu Profils Bas, Moyen et Élevé ajustant la densité du maillage.
Moniteur FPS Compteur de rafraîchissement affiché en bas à gauche pour collecter la télémétrie sur d'anciens terminaux.
Droits d'accès Affichage du fond IGN conditionné au jeton d'accès utilisateur.

Feuille de route technique

  1. Pipeline GPU : Déport direct des calculs de vertex sur shader (Shading Language) si les métriques d'APIs bas niveau le permettent.
Questions

Questions fréquentes

Le bloc 3D fonctionne-t-il hors ligne ?
Non. Le relief est interrogé en direct auprès de l'altimétrie IGN et la carte est drapée à partir des tuiles en ligne. Sans réseau, le bloc affiche un relief de secours clairement signalé comme synthétique.
Le relief est-il exagéré ?
Non. Les altitudes sont celles du RGE ALTI de l'IGN, sans coefficient. La pente affichée est la pente réelle du terrain.
Pourquoi le fond IGN n'apparaît-il pas ?
Le fond IGN n'est proposé qu'aux utilisateurs disposant du droit d'accès dans leur compte KiloDelta, comme sur la carte principale. OSM et le satellite sont disponibles pour tous.
Le bloc 3D est-il disponible en mission ?
Oui. Il s'ouvre depuis le rail de la simulation, en mode libre comme en mission, et il est préchargé pour tous les participants d'une mission partagée.
À regarder

Vidéo

dQyqCr1D8S0OqdP-.mp4 · 1,9 Mo
Documents

Pièces jointes

Cet article t'a servi ? Fais-le tourner.
LinkedIn X (Twitter) Facebook E-mail
simulation3DreliefIGNcartographiev1.24.5
Nuno Castro Sapeur-pompier · Fondateur de KiloDelta

Réagir, corriger, proposer un retex ? Écris-moi à nuno.castro@kilodelta.fr ou via le formulaire de support. Les nouveaux articles arrivent aussi par le flux RSS.

Télécharger ou mettre à jour KiloDelta. Gratuit pour tous les sapeurs-pompiers, sur iOS et Android.