Impression 3D de modèles numériques de terrain

De EduTech Wiki
Aller à la navigation Aller à la recherche
La Palma, 30x47mm

Notes de cours produites initialement pour un atelier au FacLAB UniGE en décembre 2021, révisées en mai 2023.

Introduction

Dans ce petit article on décrit comment obtenir des modèles numériques de terrain et comment les traduire en format STL pour une Impression 3D. Vous allez apprendre:

  • Comment créer un modèle STL 3D imprimable à partir d'un carré choisi dans une carte auprès d'un service en ligne
  • Comment sélectionner et télécharger un modèle numérique de terrain (DEM) sous forme d'un carré représentant une zone géographique (par exemple votre montagne préférée).
  • Comment transformer un carré DEM en fichier STL avec le logiciel QGIS.

Préparation pour le cours présentiel

  • Il faut venir avec un laptop et une connexion Internet
  • Pour profiter pleinement, on conseille d'installer QGIS, la meilleure plateforme open source GIS (Geographic Information System).
  • Si vous désirez imprimer au FacLAB il faut (1) installer le Prusa Slicer et (2) suivre la formation imprimante 3D

Les modèles DEM et DSM

Le Modèle Numérique de Terrain (MNT) ne prend pas en compte les éléments situés au-dessus de la surface contrairement à un Modèle Numérique d'Élévation (MNE)

Un modèle numérique de terrain (MNT), en Anglais, Digital Elevation Model (DEM) est selon Wikipedia une représentation en 2,5D de la surface d'un terrain ou d'une planète, créée à partir des données d'altitude du terrain. Dans la suite de l'article, on utilisera l’acronyme "DEM", plus connu.

Le DEM (fr. MNT) ne prend pas en compte les objets présents à la surface du terrain tels que les plantes et les bâtiments. Un modèle numérique d'élévation (MNE) (Angl. Digital surface model, DSM) est une représentation des élévations sur un terrain comprenant les plantes et les bâtiments. Les bases de données DEM (MNT) et DSM (MNE) sont différentes.

Les formats DEM et DSM

Il existe plusieurs formats DEM et qui sont plus ou moins précis. Ils sont construits avec des méthodes diverses comme c'est bien décrit dans l'article de Wikipedia. En règle générale, on utilise une simple matrice de carrés. Les deux formats simples et populaires sont ESRI Ascii grid et geoTIFF. Les deux encodent un terrain par une simple matrice de nombres représentant l'altitude d'un carré. Nous allons surtout utiliser geoTIFF qui représente un terrain avec des niveaux de gris (noir = 0)

Formats DEM (MNT) populaires
Nom extension Contenu informations
ESRI ASCII GRID asc Format matriciel propriétaire "heightmap" + coordonnées etc.
geoTIFF (Geographic Tagged Image File Format) tif or tiff Annotations au format 2D TIFF (GeoTIFF, Wikipedia) "heightmap" + coordonnées etc.

Les données DSM/MNE sont souvent au format LAS, un nuage de points crée par LIDAR. On n'a pas trouvé des moyens faciles et gratuits pour convertir ce format. Pour la Suisse par contre, ces données existent également au format geoTIFF.

Les images ci-dessous montrent la différence entre un modèle DEM et un modèle DSM.

Obtenir un modèle DEM

La plupart des données DEM disponibles pour la planète entière ont été recueillies par la mission SRTM (Shuttle Radar Topography Mission) de la NASA en 2000. Il a fallu 11 jours pour cartographier la Terre (à l'exception des mers et des régions polaires). La résolution des données SRTM est la suivante:

  • 30 secondes d'arc (DTED niveau 0) - espacement d'environ 900 m
  • 3 secondes d'arc (DTED niveau 1) - espacement d'environ 90 mètres
  • 1 seconde d'arc (DTED niveau 2) - espacement d'environ 30 mètres.

Une résolution horizontale de 30m suffit pour imprimer une montage large, un massif, etc. Elle n'est pas suffisante pour imprimer un petit terrain plutôt plat. Une résolution de 90 suffit pour imprimer une région comme un Canton Suisse.

Les services en ligne pour la création d'un modèle 3D imprimable ont une interface directe avec une de ces bases de données. Vous pouvez ignorer comment sélection un service et chercher une image DEM si vous visez à imprimer un terrain large comme par exemple le Cervin et son voisinage immédiat.

Il existe de nombreux jeux de données DEM (primaires ou secondaires) pour la planète entière, mais surtout pour différents pays ou régions. Plusieurs de ces jeux de données utilisent les données SRTM. Une bonne liste des jeux de données SRTM disponibles se trouve dans l'article de l'OpenStreetMap Wiki SRTM. Vous trouverez ci-dessous quelques dépôts. La plupart d'entre eux nécessitent des démarches avant de pouvoir réellement accéder aux données.

Name résolution (x/y axis) Data Source
CGIAR-CSI SRTM 30m SRTM Permet de télécharger des gros carrés (5 ou 30 secondes)
EarthExplorer (de USGS EROS, US Geological survey) - 30 to 90m Various, e.g. SRTM Permet d'accéder à plusieurs types de bases de données DEM et DSM et ensuite d'exporter. Il faut se créer un login et ensuite faire un certain nombre de choix. Type de carte, source, ensuite choisir un carré sur une carte interactive.
ViewFinderPanoramas (VFP) 30 m SRTM and ASTER GDEM Ancien site à ne plus utiliser à priori, car il contient des données pré-STRM.
EU-DEM 25 m STRM/Astra Données STRM et Astra nettoyés pour l'Europe. Pour obtenir un carré (assez large) il faut cliquer sur la carte.
EOWeb Poral (DE) Catalogue de services allemands (à explorer)
Modèles d'altitude (CH) 0.5m - 200m Swisstopo Ensemble de services de Swisstopo, dont SwissALTI3D (c.f. ci-dessous). Des modèles 25m suffisamment larges pour modéliser des massifs sont dans le MNT25
SwissALTI3D

SwissSURFACE 3D Raster

0.5m Swisstopo (explications geodonnées) Gratuit depuis 2021, un jeu ultra précis pour la suisse. (A éviter pour modéliser des massifs car vous allez avoir des fichiers énormes). Il existe deux versions utiles (faciles à utiliser): SwissALTI3D contient des modèles DEM, SwissSURFACE 3D Raster, contient des modèles de bâtiments et autres artéfacts en plus. Les deux sont assez faciles à utiliser avec QGIS et son plugin DEMtoSTL.
Swissbuildings ±30cm à 50cm en planimétrie et en altimétrie Swisstopo Base de données de bâtiments, téléchargeable en tuiles de 1:25000.

Créer un modèle avec le service en ligne TouchTerrain

Le logiciel TouchTerrain [1], développé par Chris Harding et Franek Hasiuk (Iowa State University), est un service en ligne très facile à utiliser, également disponible comme programme hors ligne, pour créer des modèles STL 3D imprimables. Il récupère les données DEM de Earth Engine et les transforme en STL. Il dispose d'un grand nombre de paramètres (simple et "expert"). Il permet également d'imprimer plusieurs modèles 3D qui peuvent être collés ensemble pour former un modèle plus grand.

Définir un rectangle à imprimer avec la version en ligne

Voici les 10 pas importants à faire:

  1. Sélectionnez un service de carte DEM (source de données d'élévation). On conseille AW3D30
  2. Sélectionnez une zone sur la carte du monde, on conseille de taper le nom du lieu, par exemple "Matterhorn". Si vous ne trouvez pas, cherchez les coordonnées sur google et entrez-les dans la Area Selection Box
  3. Réglez la transparence pour bien voir la carte et le modèle.
  4. Bougez la carte dans une position à peu près juste.
  5. Puis cliquez sur Re-center box on map.
  6. Ajustez le rectangle avec les contrôles (sinon la "area selection box" permet également de rentrer des coordonnées).
  7. Spécifiez la largeur du modèle (et éventuellement la largeur de la buse de votre imprimante, 0.4mm pour la Prusa Mini, et le nombre de tuiles à produire (par défaut 1x1),
  8. décidez l'épaisseur de la base du modèle (à partir du point le plus bas, pas le niveau de la mer),
  9. définissez l'exagération verticale.
  10. Cliquez sur Exporter Selected Area and Download File .
Capture d'écran pour Touch Terrain 3-4
Modèle du Cervin exporté de Touch terrain

La version en ligne a fait l'objet d'une mise à jour majeure au printemps 2021 et comprend une nouvelle interface graphique, la recherche de lieux avec la fonction "fly-to" (très populaire !), le survol (ou le clic) des bulles d'aide (les ?s), l'importation de fichiers xml/kmz : numérisez un polygone dans google map (ou autre), enregistrez-le en tant que fichier KML et utilisez-le pour délimiter la zone d'impression, la mise à l'échelle "automatique" des z : définissez la valeur de l'échelle des z à une hauteur (disons 20 mm de haut) et le logiciel trouvera une échelle des z qui rendra votre impression de 20 mm de haut (sans compter la hauteur de base). Pas encore tout testé- Daniel K. Schneider (talk) 10:27, 11 Mai 2021 (CEST)

Création d'autres formes

Il est possible d'importer un polygone au format KML pour définier une zone à découper.

Voici une méthode. Il faut d'abord ouvrir Google Earth, localiser l'endroit à imprimer, puis définir un projet, puis faire le dessin.

(1 Ouvrir Google Earth (version web): https://earth.google.com/

(2) Voici un exemple de la commune de Gais en Appenzell.

(3) Créer un projet dans le menu en haut à gauche

Menu -> Projects -> New Project
Créer un polygone dans google Earth (web version)

Pour définir le polygone:

(1) New feature

  • Draw line or shape

(2) Dessiner

  • Cliquer sur des points
  • Fermer la forme en cliquant sur le premier point

(3) Reéditer le dessin et ajuster

(4) Export as KML file

Ensuite, dans TouchTerrain on peut importer le fichier KML

  • Il faut ouvrir le "Area Selection Box"
  • Choisir le fichier ... c'est tout
Importer un fichier KML dans Touch Terrain

Pour aller plus loin

Plus d'informations et manuel officiel :

Il est possible d'installer une version en local et qui possède des fonctionnalités en plus. Depuis mai 2021, il existe une image docker permettant d'exécuter les carnets Jupyter autonomes de TouchTerrain via un conteneur. Elle nécessite un peu de configuration et un PC (ou Mac ou Linux) un peu lourd, mais elle installera tout pour vous. Si vous n'avez pas essayé la version autonome (desktop), l'auteur recommande d'utiliser cette version dockerisée et le notebook jupyter de démarrage.

Utilisation du service Terrain2STL en ligne

Terrain2STL était par le passé le moyen le plus simple et le plus rapide de se lancer dans l'aventure et constitue une alternative à Touch Terrain. Terrain2STL est un service en ligne qui permet de sélectionner un carré sur Google maps. À partir de ces coordonnées, il extrait une région des données Nasa/cgiar-csi et produit le STL. Citation : «Terrain2STL est un service gratuit, mais si vous voulez aider à soutenir le site, les dons sont les bienvenus. Terrain2STL crée des fichiers STL en utilisant le jeu de données SRTM3 de 2000, qui a une résolution d'environ 90 mètres sur l'équateur.» (Terrain2STL home page, feb 2017)

Procédure:

  • Chercher l'endroit sur Google Maps
  • Ajuster globalement la vue sur la zone
  • Régler Model Details
  • La taille de la boite de sélection se règle avec "Box Width et Box Height". On conseille d'agrandir la fenêtre du navigateur au max. car les sslidersont sensibles.
  • Box Scaling Factor permet d'avoir une boite de sélection plus large
  • Vous pouvez effectuer une rotation
  • On conseille de faire un vertical scaling, par exemple 2 pour un massif plus large.
  • Dans les water and Base Settings, vous pouvez changer l'épaisseur de la base
Interface Terrain2STL

Voici un modèle de La Palma, taille du STL innconnue.

Modèle STL de la Palma, résolution de 90m

Créer un modèle avec QGIS

Si vous désirez créer des modèles avec des données plus précises, par exemple les jeux mis à disposition gratuitement par la confédération Suisse, il faut transformer les données soi-meme avec un logiciel. On conseille d'utiliser QGIS, la meilleure plateforme open source GIS (Geographic Information Systems). Elle tourne sous Win / Mac / Linux / BSD et elle a un plugin DEM vers STL (appelé DEMto3D, préalablement "DEMtoSTL") qui marche bien.

  • On conseille de prendre la dernière version LTS (3.28 Firenez en mai 2023), car la version la plus récente peut nécessiter une mise à jour du plugin (pas faite).
  • Il existe une version standarde Ubuntu 18 (avant-dernière version LTS) qui suffira à nos besoins (apt get install qgis)

Installer le plugin

  • Menu Plugins -> Manage and Install Plugins
  • En français Menu Extensions -> Installer/gérer les extensions

Ensuite:

  • chercher DEMto3D
  • Installer le plugin

On peut aussi mettre à jour un extensions au même endroit.

Dernier test: Avec QGIS "3-28 Firenze et aussi 3-18 Hannover" (mai 2023)

Utiliser le plugin

Dans QGIS

  1. Utiliser le navigateur (Browser) à gauche pour retrouver le dossier qui contient votre fichier DEM. Double-clic dessus pour l'ouvrir
  2. Dans le panneau Layers (fr. Couches), cochez le calque/fichier qui vous intéresse (et aucun autre!)
  3. Menu Raster -> DEMto3D -> DEMto3D Printing (fr. Impression 3D du MDE)
  4. Choisissez le calque à imprimer (si c'est pas fait avant)
  5. Sélectionnez la zone à imprimer. Dans l'exemple ci-dessous, on choisit de prendre le tout, sinon peut soit modifier les coordonnés. (étape no 5. dans la figure dessus: il faut absolument cliquer sur le premier bouton sinon le tout se plante)
  6. Sélectionnez la hauteur des couches pour le slicer. On conseille 0.3 pour une structure large.
  7. Définir soit la largeur, soit la longueur, soit l'échelle du modèle à générer (le max. pour la Prusa Mini est 180mm
  8. Définir l'exagération. Je suggère 1.5 pour les grandes montages, 2 pour les massifs, et 3-4 pour les terrains plats.
  9. Définir la hauteur minimale (height). Un peu moins que le point le plus bas, par exemple 360 au lieu de 360. Aussi, définir la hauteur de la plaque de base, par exemple 1mm ou 2mm.
  10. Exporter

En Anglais:

DEMto3D

En français:

DEMto3D en français

Fusionner des fichiers

Le plugin DEM2STL ne peut travailler avec plusieurs fichiers. Il faut donc les fusionner et c'est assez simple.

  • Les fichiers doivent être dans le même dossier, ouvert dans QGIS
  • Menu -> Raster -> Miscellaneus -> Merge (en français: Menu -> Raster -> Divers -> Fusion)
  • Choisir les input layers (fr. "couches en entrée) tout en haut du panneau Merge (fr. "Fusion") !
  • Run

La copie d'écran ci-dessous montrer la procédure avec la version Anglaise

Merge files with QGIS

Extraire des carrés

(à refaire/retester)

DEM2STL permet aussi d'extraire un carré, mais c'est peu pratique si l'image d'origine est grande comme par exemple le modèle MNT25 de la Suisse. Il faut déposer le zip qq. part dans vos dossier. Pas besoin de dézipper. Cliquer sur le fichier ".asc.ovr". En 2021, je n'ai pas réussi à extraire un carré avec ces données alors que cela marche avec un fichier TIFF, à débogger..... A essayer: extraire avec un polygone.

Menu Raster -> Extraction -> Clip by Extent

Extraire un carré d'une image DEM

Attention: Il faut respecter la syntaxe (xmin, xmax, ymin, ymin). La sélection semble confondre et cela ne marche pas 🙄 A retester en 2023.

  • xmin = 2675.629379360457 (longitude E, gauche, vers l'ouest)
  • xmax = 3433.0198931696664 (longitude E, droite, vers l'est)
  • ymin = -3969.7718103650673 (lattitude N, bas, closer to equator !)
  • ymax = -3384.6976568404925 (lattitude N, haut, closer to north pole)

Faux: 2675.629379360457,3433.0198931696664,-3969.7718103650673,-3384.6976568404925 [EPSG:4326] Juste: ????

EPSG:4326 est une norme pour coordonnés. Une erreur d'encodage ?

Attention, il existe pleins de systèmes de coordonnées:

Le Cervin est à DMS == 45° 58' 49.9332'' N 7° 38' 29.8248'' E == 45.9766° N, 7.6585° E == 45.980537, 7.641618. == UTM 32T 395802.05538874 5091871.0599212

Transformation de données LIDAR

(à développer un jour).

Les données LIDAR, par exemple ceux de swissSURFACE3D sont définies comme des nuages de points, au format LAS. Donc pas de maillage.

(1) Une première stratégie consiste à transformer un fichier *.LAS ou *.LAZ en DEM

(2) Une autre consiste à transformer un fichier LAS en maillage

  • lire ceci par exemple.

(3) Il existe un programme commercial qui fait cela: Equator Studios

(4) La meilleure solution consiste à trouver un autre format,

Imprimer un modèle 3D

Traitement de fichiers STL avant le slicing

Réparation

On conseille fortement de réparer le modèle. Par défaut, Windows, inclut un outil pour faire cela, sinon certains slicers réparent automatiquement un fichier, mais ne sont pas forcément très performants.

Ensuite, vous pouvez ou devez adapter les dimensions du modèle et/ou couper des parties.

Changement de taille

Exemple avec Prusa Slicer pour le modèle de La Palma qui fait 366.92 X 520mm. On réduit à 34% (selon la formule x = largeur voulue / largeur * 100) en utilisant le panneau.

Réduire la taille d'une fichier STL dans Prusa Slicer

Pour changer la taille, on peut simplement utiliser les fonctionnalités du slicer. sinon, il faut utiliser un outil comme Meshmixer ou logiciel de conception.

Rogner un model

Si vous désirez couper une partie du modèle il faut utiliser un logiciel comme Meshmixer ou un logiciel de modélisation. Les programmeurs peuvent prendre OpenScad ou Blockscad par exemple. Voici du code que vous pouvez reprendre

Rogner un modèle STL avec Blockscad, https://www.blockscad3d.com/community/projects/1305902

Réglages de slicing

Il est impératif que la première couche tienne bien.

  • Sur une imprimante qui n'a pas de plateaux plus système de calibration parfaites, on conseille d'imprimer la première couche un peu plus largement et de mettre de la colle
  • Diminuez la vitesse par défaut pour la première couche à 25%, environ 15mm/s

Choses à essayer si le print ne marche pas. Voir aussi Slicer and printer settings for digital elevation models (mes explications en Anglais faites il y a quelques années).

  • Avec un remplissage faible, le plastique risque de ne plus sortir après plusieurs heures d'impression. Augmentez la température de 5 degrés si c'est le cas.
  • Utilisez un remplissage simple, par exemple une grille de lignes droits
  • Si votre modèle comprend beaucoup de surface plates, diminuez l'intensité du ventilateur. Ainsi l'imprimante risque moins de s'accrocher.
  • Vous pouvez diminuer aussi la rétraction.

Références et liens

Liens

Références

  1. Harding, C., Hasiuk, F., & Wood, A. (2021). TouchTerrain—3D Printable Terrain Models. ISPRS International Journal of Geo-Information 2021, Vol. 10, Page 108, 10(3), 108. https://doi.org/10.3390/IJGI10030108