Comprendre le fichier STL : le format de maillage 3D standard pour l’impression 3D

Découvrez le format de fichier STL, le format de maillage 3D standard largement utilisé dans les flux de travail d’impression 3D et la modélisation géométrique.

Résumé

STL (StereoLithography) est un format d’échange de maillage qui représente la surface d’un modèle 3D sous forme d’une tessellation de facettes triangulaires ; une complexité de surface accrue nécessite généralement davantage de triangles pour approximer la forme. [5] STL est couramment utilisé dans les chaînes de traitement d’impression 3D, au format ASCII ou binaire, le binaire étant largement employé car il est plus compact. [1] Le STL standard est sans unité et ne prend pas en charge de manière standard les couleurs ou les textures, ce qui peut entraîner une perte d’échelle et d’apparence lors des échanges. [4][1]

Image STL 1

Vue d’ensemble — Ce qu’est un fichier STL (et ce qu’il n’est pas)

Un fichier STL encode un maillage triangulaire destiné à l’échange géométrique vers des outils en aval, tels que les slicers utilisés dans les flux de fabrication additive. Au lieu de stocker l’intention CAO paramétrique ou basée sur des fonctions, STL ne stocke qu’un ensemble de triangles approximant la surface extérieure d’un modèle. [5] Le format existe en deux variantes (ASCII et binaire), mais toutes deux véhiculent essentiellement le même concept de maillage. [1]

Dans un usage classique, un modèle issu de la CAO ou d’une numérisation est tessellé en facettes, puis traité par un logiciel de tranchage afin de générer les trajectoires de fabrication. L’utilité de STL provient de sa large implémentation et de sa simplicité d’interprétation en tant que liste de triangles, mais il constitue aussi une réduction : les formats exclusivement basés sur un maillage (dont .stl) ne préservent pas la géométrie exacte de représentation des frontières (B-Rep), de sorte que les opérations au niveau des faces disponibles en CAO peuvent ne plus être possibles après l’exportation. [8] Les surfaces courbes étant approximées par des triangles plans, l’augmentation du nombre de triangles améliore la fidélité géométrique tout en accroissant la complexité de calcul et de gestion. [5]

Historique et statut de la documentation

STL a été développé par 3D Systems en 1987 et s’est associé aux premiers flux de travail de stéréolithographie. [6] Le format a été documenté pour la première fois par 3D Systems dans la StereoLithography Interface Specification en 1988, puis une deuxième édition a été publiée en 1989. [1] La Bibliothèque du Congrès décrit STL comme étant issu de Charles (Chuck) Hull de 3D Systems et le caractérise comme propriétaire à l’origine, mais ouvertement documenté dans la pratique, sans structure formelle de gouvernance moderne permettant d’imposer un comportement uniforme entre les implémentations. [1]

Identification du fichier — Extensions, types de média et variantes

L’extension de fichier conventionnelle est .stl, et le type de média enregistré inclut l’extension stl. [3] En pratique, la même extension est utilisée pour les encodages ASCII et binaire ; l’identification par la seule extension ne permet donc pas de déterminer la variante employée par un fichier. [1]

Le type de média Internet (souvent évoqué dans les termes de Multipurpose Internet Mail Extensions (MIME)) est model/stl. [3] Le registre IANA indique que model/stl a été enregistré le 2018-03-06 et mis à jour pour la dernière fois le 2022-09-20, et la Bibliothèque du Congrès précise que l’enregistrement a été effectué en préparation de l’encapsulation de modèles STL dans les flux de travail Digital Imaging and Communications in Medicine (DICOM). [3][1]

Modèle de données et sémantique (triangles, normales, unités, métadonnées)

Au niveau du modèle de données, STL représente une surface comme une collection de facettes triangulaires (un maillage triangulaire). Chaque facette est généralement décrite par trois sommets et une normale de triangle associée, mais la représentation reste limitée à la surface : le fichier ne garantit pas à lui seul que le maillage est fermé, de type variété (manifold) ou étanche, même lorsque ces propriétés sont requises par les opérations de tranchage ou de fabrication en aval. L’approximation de surface de STL constitue son compromis central : les surfaces présentant une courbure plus élevée ou davantage de détails nécessitent généralement une tessellation plus fine (davantage de triangles) afin de réduire l’effet de facettage visible. [5]

L’orientation des facettes est une convention sémantique essentielle pour distinguer l’« intérieur » de l’« extérieur ». Une convention courante veut que la normale de la facette pointe vers l’extérieur et que les trois sommets d’un triangle soient listés dans le sens antihoraire lorsque la facette est observée depuis l’extérieur, conformément à la règle de la main droite. [4] Lorsque les exportateurs ou les processeurs enfreignent ou ignorent ces conventions, les logiciels en aval peuvent déduire des régions intérieures/extérieures incorrectes, ce qui contribue à des artefacts de tranchage ou à des coques inversées.

Les coordonnées STL sont sans unité : le format ne contient aucune information d’échelle et les coordonnées sont exprimées en unités arbitraires. [4] Par conséquent, les importateurs et les slicers appliquent souvent des unités supposées ; par exemple, le guide utilisateur de Slicer 2 indique que les fichiers STL ne contiennent pas d’unités et que l’application utilise par défaut les millimètres. [7] STL n’offre pas non plus de prise en charge standard des métadonnées descriptives ; dans la variante binaire, le format commence par une ligne de 80 caractères parfois utilisée comme description, mais cela ne constitue pas des métadonnées standardisées. [2] Le STL standard ne prend pas non plus en charge de manière standard les couleurs ou les textures, ce qui limite sa capacité à transporter les informations d’apparence tout au long d’une chaîne de traitement. [1]

Ce que STL ne peut pas représenter (comportement standard)

  • Couleur/texture (le STL standard ne prend pas en charge de manière standard les couleurs ou les textures). [1]
  • Unités/échelle (les coordonnées sont arbitraires ; de nombreux outils supposent des valeurs par défaut telles que les millimètres). [4][7]
  • Scène / objets multiples (STL ne peut définir qu’un seul objet, et non une scène comportant plusieurs objets). [1]
  • Métadonnées enrichies (aucune métadonnée descriptive standard ; l’en-tête binaire est parfois employé de manière informelle). [2]

STL binaire — Structure au niveau des octets

Le STL binaire est un encodage orienté implémentation comportant des enregistrements de taille fixe, ce qui le rend simple à analyser lorsque l’endianness et les tailles de champ sont respectées. Un STL binaire commence par un en-tête de 80 caractères, suivi d’un nombre de triangles stocké sous forme d’un entier 32 bits petit-boutiste. [2] Chaque enregistrement de triangle (facette) occupe 50 octets et se compose de douze flottants 32 bits petit-boutistes : trois flottants pour le vecteur normal de la facette et neuf flottants pour les coordonnées des trois sommets. [2] L’enregistrement se termine par un entier non signé de 2 octets couramment appelé « nombre d’octets d’attribut ». [2] Des descriptions des pratiques historiques indiquent que ce nombre d’octets d’attribut doit être défini à zéro ; lorsqu’il ne l’est pas, ou lorsque les lecteurs l’interprètent de façon incohérente, des problèmes d’interopérabilité peuvent survenir même si les données de sommets et de normales sont par ailleurs correctement formées. [4]

Structure d’un enregistrement STL binaire

Décalage/champ Type Taille (octets) Notes
En-tête du fichier Données de caractères 80 En-tête de 80 caractères ; parfois utilisé comme description, mais ne constituant pas des métadonnées standardisées. [2]
Nombre de triangles Entier non signé (petit-boutiste) 4 Nombre de triangles 32 bits petit-boutiste. [2]
Normale de facette Flottant 32 bits × 3 (petit-boutiste) 12 Partie des « douze flottants 32 bits » par facette (normale + sommets). [2]
Sommet 1 Flottant 32 bits × 3 (petit-boutiste) 12 Position du premier sommet (x, y, z) sous forme de flottants. [2]
Sommet 2 Flottant 32 bits × 3 (petit-boutiste) 12 Position du deuxième sommet (x, y, z) sous forme de flottants. [2]
Sommet 3 Flottant 32 bits × 3 (petit-boutiste) 12 Position du troisième sommet (x, y, z) sous forme de flottants. [2]
Nombre d’octets d’attribut Entier non signé 2 Le « nombre d’octets d’attribut » termine l’enregistrement de triangle de 50 octets ; il doit souvent être nul en pratique. [2][4]

Image STL 2

STL ASCII — Grammaire et remarques pratiques d’analyse

Le STL ASCII est un encodage lisible par l’humain destiné à représenter la même sémantique de triangles et de normales que le STL binaire, généralement à l’aide d’un bloc solid contenant un ou plusieurs blocs facet. Les STL ASCII et binaires sont tous deux des variantes reconnues, bien que le binaire soit plus courant en pratique en raison de sa compacité. [1] Conceptuellement, un fichier ASCII exprime une liste de facettes dans laquelle chaque facette fournit une facet normal et une outer loop de trois lignes vertex, puis se ferme avec endfacet et se termine par endsolid.

Un fragment minimal et illustratif (créé par l’auteur) est présenté ci-dessous ; comme pour le STL binaire, une interprétation cohérente dépend des conventions d’orientation utilisées pour les normales et l’ordre des sommets (règle de la main droite, sens antihoraire lorsqu’ils sont vus depuis l’extérieur). [4]

solid examplepart
  facet normal 0 0 1
    outer loop
      vertex 0 0 0
      vertex 1 0 0
      vertex 0 1 0
    endloop
  endfacet
endsolid example
part

Défaillances d’interopérabilité, validation et réparation

Les problèmes d’interopérabilité STL surviennent souvent à l’interface entre un modèle source géométrique et son maillage tessellé. Une analyse universitaire des problèmes de qualité STL inclut un résumé de 2003, « Analysis of STL files », indiquant que la tessellation CAO utilisée pour générer des STL peut produire des défauts tels que des interstices ou des trous conduisant à des boucles ouvertes. [10] Ces défauts sont importants, car le tranchage repose généralement sur des sections cohérentes d’une surface fermée ; des triangles manquants, des fissures ou des auto-intersections peuvent empêcher une classification fiable intérieur/extérieur pendant le tranchage.

Les problèmes de normales et d’orientation constituent un autre mode de défaillance fréquent. Comme de nombreuses chaînes de traitement considèrent la normale de triangle et l’ordre des sommets comme des indicateurs du côté « extérieur » d’une facette, une application incohérente de la convention de normale orientée vers l’extérieur et de l’ordre antihoraire peut produire des normales inversées, des coques inversées ou des régions ambiguës. [4] En pratique, certains logiciels recalculent les normales à partir de l’ordre des sommets, tandis que d’autres se fient à la normale stockée ; un écart entre les deux peut donc se propager différemment selon les outils.

L’ambiguïté liée à l’échelle et aux champs facultatifs complique encore les échanges. STL transporte des coordonnées dans des unités arbitraires sans échelle intégrée, et les slicers peuvent utiliser des unités supposées par défaut ; Slicer 2, par exemple, utilise les millimètres par défaut et indique explicitement que les fichiers STL ne contiennent pas d’unités. [4][7] L’analyse binaire peut aussi être perturbée lorsque le nombre d’octets d’attribut n’est pas traité comme prévu ; les descriptions historiques indiquent qu’il doit être fixé à zéro, mais tous les producteurs ne suivent pas la même convention. [4]

Liste de contrôle de validation STL avant exportation / avant tranchage

  1. Vérifiez que le maillage est de type variété (manifold) et étanche (surface fermée sans trous non intentionnels), car STL ne garantit pas lui-même ces propriétés et la tessellation peut introduire des interstices. [10]
  2. Vérifiez la cohérence de l’orientation des facettes (normales des triangles orientées vers l’extérieur et enroulement cohérent des sommets conformément à la règle de la main droite) afin d’éviter les régions inversées. [4]
  3. Vérifiez la concordance des unités dans toute la chaîne de traitement (hypothèses de CAO/exportation par rapport aux valeurs par défaut d’importation du slicer), car STL utilise des unités arbitraires et les slicers peuvent supposer les millimètres. [4][7]
  4. Examinez les compromis de densité de triangles (grossièreté de la tessellation par rapport au facettage et à la charge de traitement), puisque les surfaces sont approximées par des triangles et que la complexité accroît généralement le nombre de triangles. [5]
  5. Pour le STL binaire, vérifiez que les enregistrements par triangle sont correctement formés et que le nombre d’octets d’attribut est géré de manière cohérente, en gardant à l’esprit l’attente courante selon laquelle il est nul. [4]

Alternatives et conseils de sélection (STL vs STEP vs 3MF vs AMF/OBJ)

STL reste courant comme format d’échange de maillage au plus petit dénominateur commun vers les flux de travail de tranchage, mais ses limites motivent le recours à des formats alternatifs lorsque des sémantiques plus riches sont nécessaires : STL est sans unité, ne peut pas représenter des scènes à plusieurs objets et ne prend pas en charge de manière standard les couleurs/textures. [4][1] Pour l’ingénierie et l’éditabilité en aval, un échange B-Rep tel que STEP est souvent préférable, car les formats exclusivement basés sur un maillage (dont .stl) ne contiennent pas de géométrie B-Rep précise. [8] Pour le conditionnement et l’extensibilité en impression 3D, 3MF se distingue du flux plat de triangles de STL en exigeant un conteneur ZIP et en limitant les méthodes de compression (Deflate (8) ou stocké (0)) selon les règles Open Packaging Conventions (OPC). [9]

STL vs alternatives

Format Géométrie & scène Unités & apparence Conteneur & notes
STL Maillage (facettes triangulaires) ; objet unique uniquement. [1] Unités : non (unités arbitraires). [4] Apparence : aucune couleur/texture standard. [1] Fichier plat (ASCII ou binaire). Utilisation typique : échange étendu de maillages vers les slicers. Limite principale : sans unité, exclusivement basé sur un maillage, sémantique minimale. [4]
STEP B-Rep (géométrie précise). [8] Scène/assemblages : aucune donnée fiable trouvée. Unités : aucune donnée fiable trouvée. Apparence : aucune donnée fiable trouvée. Conditionnement/conteneur : aucune donnée fiable trouvée. Utilisation typique : échange d’ingénierie préservant l’intention B-Rep. Limite principale : peut ne pas être accepté par les flux de travail de slicers exclusivement basés sur un maillage. [8]
OBJ Maillage ; prise en charge des scènes : aucune donnée fiable trouvée. Unités : aucune donnée fiable trouvée. Apparence : aucune donnée fiable trouvée. Conteneur : aucune donnée fiable trouvée. Utilisation typique : échange de maillages dans les graphiques et certaines chaînes d’impression. Limite principale : aucune donnée fiable trouvée.
3MF Description d’impression basée sur un maillage ; prise en charge des scènes : aucune donnée fiable trouvée. Unités : aucune donnée fiable trouvée. Apparence : aucune donnée fiable trouvée. Doit utiliser ZIP ; la méthode de compression peut être Deflate (8) ou stocké (0). [9] Utilisation typique : échange conditionné de fabrication 3D. Limite principale : exige la gestion d’un conteneur basé sur ZIP. [9]
AMF Type de géométrie : aucune donnée fiable trouvée. Prise en charge des scènes : aucune donnée fiable trouvée. Unités : aucune donnée fiable trouvée. Apparence : aucune donnée fiable trouvée. Conteneur : aucune donnée fiable trouvée. Utilisation typique : aucune donnée fiable trouvée. Limite principale : aucune donnée fiable trouvée.

Image STL 3

Questions-réponses (FAQ)

Qu’est-ce qu’un format de fichier STL dans les flux de travail d’impression 3D ?

Un fichier STL est une représentation maillée qui approxime la surface d’un modèle au moyen de facettes triangulaires, les surfaces plus complexes nécessitant généralement davantage de triangles. [5] Dans les flux de travail d’impression 3D, STL se présente couramment au format ASCII ou binaire et est utilisé comme étape d’échange entre la sortie de CAO/tessellation et le logiciel de tranchage. [1]

STL binaire vs STL ASCII — quelle est la différence et pourquoi est-elle importante ?

STL possède deux variantes, ASCII et binaire, et de nombreux outils privilégient le binaire car il est plus compact. [1] Cette différence est importante sur le plan opérationnel, car le STL binaire possède une structure fixe au niveau des octets (notamment un en-tête de 80 caractères, un nombre de triangles 32 bits petit-boutiste et des enregistrements de triangles de taille fixe), permettant une analyse déterministe lorsqu’elle est correctement implémentée. [2]

Un fichier STL contient-il des unités (mm/pouces), et pourquoi les modèles sont-ils importés à la mauvaise échelle ?

STL ne contient pas d’information d’échelle ; ses coordonnées sont exprimées en unités arbitraires. [4] Les importateurs appliquent donc des hypothèses, et Slicer 2 indique explicitement que les fichiers STL ne contiennent pas d’unités et utilise les millimètres par défaut, ce qui peut produire des écarts d’échelle lorsque l’exportateur et l’importateur supposent des unités différentes. [7]

Qu’est-ce que le type MIME model/stl et quand a-t-il été enregistré ?

model/stl est le type de média Internet enregistré pour STL, associé à l’extension de fichier .stl. [3] IANA le répertorie comme enregistré le 2018-03-06 et mis à jour pour la dernière fois le 2022-09-20. [3]

Expert — Comment un triangle STL binaire est-il encodé au niveau des octets ?

Un STL binaire commence par un en-tête de 80 caractères et un nombre de triangles 32 bits petit-boutiste. [2] Chaque enregistrement de triangle occupe 50 octets et comprend douze flottants 32 bits petit-boutistes (trois pour la normale et neuf pour trois sommets), suivis d’un nombre d’octets d’attribut sous forme d’entier non signé de 2 octets. [2]

Expert — Pourquoi les exportations STL contiennent-elles parfois des trous ou une géométrie non-manifold, et que traite la « réparation » ?

La génération de STL repose couramment sur la tessellation d’un modèle CAO, et un résumé de 2003, « Analysis of STL files », décrit des défauts tels que des interstices ou des trous conduisant à des boucles ouvertes. [10] La « réparation » désigne généralement des étapes de traitement du maillage qui tentent de résoudre ces problèmes (par exemple, fermer les trous et restaurer une topologie cohérente) afin que le tranchage puisse dériver des sections cohérentes d’une surface étanche de type variété (manifold).

Sources

  1. Library of Congress — Famille de formats de fichier STL (STereoLithography)
  2. Library of Congress — Format de fichier binaire STL (STereoLithography)
  3. IANA — Type de média model/stl
  4. Fabbers — Format de fichier STL (description et notes)
  5. 3D Systems Quickparts — Qu’est-ce qu’un fichier STL ?
  6. Documentation threedy — STL
  7. ORNL Slicer 2 — Guide utilisateur (PDF)
  8. Support Stratasys — Ajustement des paramètres d’impression FDM (notes sur les formats de maillage et B-Rep)
  9. 3MF Consortium — Spécification de base 3MF v1.3.0 (PDF)
  10. BibSonomy — entrée/résumé « Analysis of STL files » (2003)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

→ Sommaire