STL (format de fichier) - STL (file format)
Extension de nom de fichier |
.stl
|
---|---|
Type de média Internet | |
Développé par | Systèmes 3D |
Première version | 1987 |
Type de format | Stéréolithographie |
STL est un format de fichier natif du logiciel de CAO de stéréolithographie créé par 3D Systems . STL a plusieurs backronyms tels que "Standard Triangle Language" et "Standard Tessellation Language". Ce format de fichier est pris en charge par de nombreux autres logiciels ; il est largement utilisé pour le prototypage rapide , l'impression 3D et la fabrication assistée par ordinateur . Les fichiers STL décrivent uniquement la géométrie de surface d'un objet tridimensionnel sans aucune représentation de la couleur, de la texture ou d'autres attributs de modèle CAO courants. Le format STL spécifie à la fois les représentations ASCII et binaires . Les fichiers binaires sont plus courants, car ils sont plus compacts.
Un fichier STL décrit une surface triangulée brute et non structurée par la normale unité et les sommets (ordonnés par la règle de la main droite ) des triangles à l'aide d'un système de coordonnées cartésiennes en trois dimensions . Dans la spécification d'origine, toutes les coordonnées STL devaient être des nombres positifs, mais cette restriction n'est plus appliquée et les coordonnées négatives sont couramment rencontrées dans les fichiers STL aujourd'hui. Les fichiers STL ne contiennent aucune information d'échelle et les unités sont arbitraires.
ASCII STL
Un fichier ASCII STL commence par la ligne
solid name
où nom est une chaîne facultative (bien que si nom est omis, il doit toujours y avoir un espace après le solide). Le fichier se poursuit avec un nombre quelconque de triangles, chacun représenté comme suit :
facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloop endfacet
où chaque n ou v est un nombre à virgule flottante au format signe- mantisse -"e"-signe- exposant , par exemple, "2.648000e-002". Le dossier se termine par
endsolid name
La structure du format suggère que d'autres possibilités existent (par exemple, des facettes avec plus d'une "boucle", ou des boucles avec plus de trois sommets). En pratique, cependant, toutes les facettes sont de simples triangles.
Les espaces blancs (espaces, tabulations, sauts de ligne) peuvent être utilisés n'importe où dans le fichier, sauf dans les chiffres ou les mots. Les espaces entre "facet" et "normal" et entre "outer" et "loop" sont obligatoires.
STL binaire
Étant donné que les fichiers ASCII STL peuvent être très volumineux, une version binaire de STL existe. Un fichier STL binaire a un en-tête de 80 caractères (qui est généralement ignoré, mais ne doit jamais commencer par "solide" car cela peut conduire certains logiciels à supposer qu'il s'agit d'un fichier STL ASCII). À la suite de l'en-tête se trouve un entier non signé little-endian de 4 octets indiquant le nombre de facettes triangulaires dans le fichier. Viennent ensuite les données décrivant chaque triangle à son tour. Le fichier se termine simplement après le dernier triangle.
Chaque triangle est décrit par douze nombres à virgule flottante de 32 bits : trois pour la normale, puis trois pour la coordonnée X/Y/Z de chaque sommet – tout comme avec la version ASCII de STL. Après ceux-ci suit un entier non signé de 2 octets ("court") qui est le "compte d'octets d'attribut" - dans le format standard, cela devrait être zéro car la plupart des logiciels ne comprennent rien d'autre.
Les nombres à virgule flottante sont représentés comme des nombres à virgule flottante IEEE et sont supposés être little-endian , bien que cela ne soit pas indiqué dans la documentation.
UINT8[80] – Header - 80 bytes UINT32 – Number of triangles - 4 bytes foreach triangle - 50 bytes: REAL32[3] – Normal vector - 12 bytes REAL32[3] – Vertex 1 - 12 bytes REAL32[3] – Vertex 2 - 12 bytes REAL32[3] – Vertex 3 - 12 bytes UINT16 – Attribute byte count - 2 bytes end
Couleur en STL binaire
Il existe au moins deux variantes non standard du format STL binaire pour ajouter des informations de couleur :
- Les progiciels VisCAM et SolidView utilisent les deux octets « nombre d'octets d'attribut » à la fin de chaque triangle pour stocker une couleur RVB 15 bits :
- les bits 0 à 4 sont le niveau d'intensité pour le bleu (0 à 31),
- les bits 5 à 9 sont le niveau d'intensité du vert (0 à 31),
- les bits 10 à 14 sont le niveau d'intensité pour le rouge (0 à 31),
- le bit 15 est 1 si la couleur est valide, ou 0 si la couleur n'est pas valide (comme avec les fichiers STL normaux).
- Le logiciel Materialise Magics utilise l'en-tête de 80 octets en haut du fichier pour représenter la couleur globale de la pièce entière. Si la couleur est utilisée, alors quelque part dans l'en-tête devrait se trouver la chaîne ASCII "COLOR=" suivie de quatre octets représentant le rouge, le vert, le bleu et le canal alpha (transparence) dans la plage 0-255. Il s'agit de la couleur de l'objet entier, à moins qu'elle ne soit remplacée à chaque facette. Magics reconnaît également une description matérielle; une caractéristique de surface plus détaillée. Juste après la spécification "COLOR=RGBA" devrait se trouver une autre chaîne ASCII ",MATERIAL=" suivie de trois couleurs (3×4 octets) : la première est une couleur de réflexion diffuse , la deuxième est une couleur de surbrillance spéculaire et la troisième est une couleur ambiante lumière . Les paramètres matériels sont préférés à la couleur. La couleur par facette est représentée dans les deux octets du "nombre d'octets d'attribut" comme suit :
- les bits 0 à 4 sont le niveau d'intensité pour le rouge (0 à 31),
- les bits 5 à 9 sont le niveau d'intensité du vert (0 à 31),
- les bits 10 à 14 sont le niveau d'intensité pour le bleu (0 à 31),
- le bit 15 est 0 si cette facette a sa propre couleur unique, ou 1 si la couleur par objet doit être utilisée.
L'ordre rouge/vert/bleu au sein de ces deux octets est inversé dans ces deux approches. Ainsi, alors que ces formats auraient facilement pu être compatibles, l'inversion de l'ordre des couleurs signifie qu'elles ne sont pas – et pire encore, un fichier STL générique le lecteur ne peut pas automatiquement les distinguer. Il n'y a pas non plus de moyen pour que les facettes soient sélectivement transparentes car il n'y a pas de valeur alpha par facette - bien que dans le contexte des machines de prototypage rapide actuelles, cela ne soit pas important.
Unités en STL binaire
Les unités de coordonnées ne sont pas spécifiées dans la norme STL. Une idée est d'ajouter une chaîne ASCII "UNITS=xx" quelque part dans l'en-tête, où "xx" sont deux octets représentant les unités utilisées, lors de l'écriture de ce fichier. Les options possibles sont :
ASCII | Hex | La description |
---|---|---|
mm | 6j 6j | Millimètres |
cm | 63 6j | Centimètres |
m | 20 6j | Mètres. Le premier octet est un espace ' ', ASCII 32=0x20 |
pi | 66 74 | Pieds décimaux |
dans | 69 69 | Pouces décimaux |
ment | 6c 79 | Années lumière |
La facette normale
Dans les versions ASCII et binaires de STL, la facette normale doit être un vecteur unitaire pointant vers l'extérieur de l'objet solide. Dans la plupart des logiciels, cela peut être réglé sur (0,0,0), et le logiciel calculera automatiquement une normale en fonction de l'ordre des sommets du triangle en utilisant la " règle de la main droite ", c'est-à-dire que les sommets sont répertoriés en contre-horloge -ordre sage de l'extérieur. Certains chargeurs STL (par exemple le plugin STL pour Art of Illusion) vérifient que la normale dans le fichier est en accord avec la normale qu'ils calculent en utilisant la règle de la main droite et avertissent l'utilisateur lorsque ce n'est pas le cas. D'autres logiciels peuvent ignorer complètement la facette normale et n'utiliser que la règle de la main droite. Bien qu'il soit rare de spécifier une normale qui ne peut pas être calculée à l'aide de la règle de la main droite, pour être entièrement portable, un fichier doit à la fois fournir la normale de la facette et ordonner les sommets de manière appropriée. Une exception notable est SolidWorks , qui utilise la normale pour les effets d'ombrage .
Utilisation en impression 3D
Les imprimantes 3D construisent des objets en solidifiant ( SLA , SLS , SHS , DMLS , EBM , DLP ) ou en imprimant (3DP, MJM, FDM , FFF , PJP, MJS) une couche à la fois. Cela nécessite une série de contours 2D fermés (couches horizontales) qui sont remplis de matériau solidifié lorsque les couches sont fusionnées. Un format de fichier naturel pour une telle machine serait une série de polygones fermés (couches ou tranches) correspondant à différentes valeurs Z. Cependant, comme il est possible de faire varier les épaisseurs de couche pour une construction plus rapide mais moins précise, il était plus facile de définir le modèle à construire comme un polyèdre fermé qui peut être tranché aux niveaux horizontaux nécessaires. Une facette normale incorrecte peut affecter la façon dont un fichier est découpé et rempli. Une tranche à une valeur Z différente peut être choisie pour manquer une mauvaise facette ou le fichier doit être renvoyé au programme de CAO pour apporter des corrections, puis régénérer le fichier STL.
Le format de fichier STL semble capable de définir un polyèdre avec n'importe quelle facette polygonale, mais en pratique, il n'est jamais utilisé que pour les triangles, ce qui signifie qu'une grande partie de la syntaxe du protocole ASCII est superflue.
Pour former correctement un volume 3D, la surface représentée par tous les fichiers STL doit être fermée (pas de trous ou de vecteur normal inversé) et connectée, où chaque bord fait partie d'exactement deux triangles et ne se coupe pas. Étant donné que la syntaxe STL n'applique pas cette propriété, elle peut être ignorée pour les applications où le vide n'a pas d'importance. La surface manquante n'a d'importance que dans la mesure où le logiciel qui découpe les triangles l'exige pour s'assurer que les polygones 2D résultants sont fermés. Parfois, de tels logiciels peuvent être écrits pour nettoyer de petites divergences en déplaçant des sommets proches les uns des autres afin qu'ils coïncident. Les résultats ne sont pas prévisibles, peut être suffisant de la surface doit être réparée à l'aide d'un autre programme. Les imprimantes 3D vectorielles nécessitent un fichier .STL propre et l'impression d'un fichier de données incorrect ne se remplira pas ou peut arrêter l'impression.
Utilisation dans d'autres domaines
Le format de fichier STL est simple et facile à produire. Par conséquent, de nombreux systèmes de conception assistée par ordinateur peuvent sortir le format de fichier STL. Bien que la sortie soit simple à produire, les informations de connectivité de maillage sont ignorées car l'identité des sommets partagés est perdue.
De nombreux systèmes de fabrication assistée par ordinateur nécessitent des modèles triangulés. Le format STL n'est pas la méthode la plus efficace en termes de mémoire et de calcul pour transférer ces données, mais STL est souvent utilisé pour importer la géométrie triangulée dans le système CAM . Le format est couramment disponible, donc le système CAM l'utilisera. Afin d'utiliser les données, le système CAM peut avoir à reconstruire la connectivité. Comme les fichiers STL n'enregistrent pas la dimension physique d'une unité, un système de FAO la demandera. Les unités typiques sont le mm et le pouce.
STL peut également être utilisé pour échanger des données entre des systèmes CAD/CAM et des environnements informatiques tels que Mathematica .
Représentation de surfaces courbes
Il n'est pas possible d'utiliser des triangles pour représenter parfaitement des surfaces courbes. Pour compenser, les utilisateurs enregistrent souvent d'énormes fichiers STL pour réduire l'imprécision. Cependant, les formats natifs associés à de nombreux logiciels de conception 3D utilisent des surfaces mathématiques pour préserver les détails sans perte dans les petits fichiers. Par exemple, Rhino 3D et Blender implémentent NURBS pour créer de véritables surfaces courbes et les stocker dans leurs formats de fichiers natifs respectifs, mais doivent générer un maillage triangulaire lors de l'exportation d'un modèle au format STL.
Histoire
STL a été inventé par Albert Consulting Group pour 3D Systems en 1987. Le format a été développé pour les premières imprimantes 3D commerciales de 3D Systems. Depuis sa sortie initiale, le format est resté relativement inchangé pendant 22 ans.
En 2009, une mise à jour du format, baptisée STL 2.0, a été proposée. Il a évolué vers le format de fichier de fabrication additive .
Voir également
- Format de fabrication 3D (3MF), un standard pour la fabrication de fichiers 3D
- Additive Manufacturing File Format (AMF), une norme avec prise en charge de la couleur, de plusieurs matériaux et des constellations
- PLY (format de fichier) , un format de fichier alternatif
- Voxel
- Fichier Wavefront .obj , un format de fichier de définition de géométrie 3D avec l' extension de fichier .obj
- X3D , une norme ISO libre de droits pour l'infographie 3D
Les références
Liens externes
- Le format STL - Format de données standard pour les fabricants