UltKit

STL, OBJ ou 3MF : quel format de fichier 3D choisir ?

Choisissez STL pour une impression monochrome qu’il suffit de trancher, OBJ quand le modèle porte des textures destinées au rendu ou à un moteur de jeu, et 3MF quand votre trancheur le prend en charge et que vous voulez conserver les unités, les couleurs et plusieurs pièces. Le format détermine les métadonnées qui accompagnent le maillage ; il ne garantit jamais que le maillage lui-même soit sain.

Jonas WeberJonas WeberRédacteur en chef performance web
Mis à jour 12 min de lecture
Une imprimante 3D de bureau dans un caisson transparent sur un bureau blanc, avec un ordinateur portable affichant un modèle 3D et des pièces imprimées colorées, dont une carte en relief et un engrenage rouge

STL : une liste de triangles, rien de plus

Le STL a été conçu en 1987 pour les premières machines de stéréolithographie de 3D Systems, et sa conception le montre. Un fichier est une simple liste de triangles, chacun décrit par une normale de facette et trois sommets. Il n'y a pas de table de sommets partagée : un sommet commun à six triangles est donc écrit six fois. Il n'y a pas non plus de champ d'unité : une coordonnée de 25 peut désigner des millimètres, des pouces ou des mètres, et presque tous les trancheurs supposent des millimètres. La couleur, la texture et le nom des pièces n'ont pas leur place dans le format de base, ce qui explique pourquoi tous les trancheurs, logiciels de CAO et services d'impression le lisent encore.

Le STL existe en deux encodages. Le STL ASCII écrit tout en texte, avec des lignes comme facet normal, outer loop et vertex 12.5 0 3.2 : on peut l'ouvrir dans un éditeur de texte et lire les valeurs. Le STL binaire commence par un en-tête de 80 octets et un compteur de triangles sur 4 octets, puis stocke chaque triangle sous forme de douze flottants de 4 octets plus un champ d'attribut de 2 octets : exactement 50 octets par triangle. Cette règle rend le poids facile à prévoir. Un modèle d'un million de triangles pèse environ 50 Mo en binaire, et la version ASCII du même maillage est généralement quatre à six fois plus lourde, car chaque chiffre devient un caractère.

La simplicité fait à la fois la force et le piège du format. Un STL ne dit pas s'il était destiné à former une pièce ou trois, s'il a été exporté en pouces, ni si ses triangles délimitent réellement un volume plein. Le trancheur le déduit des coordonnées brutes, et quand il se trompe, vous obtenez une pièce 25,4 fois trop petite ou une paroi manquante. Pour une pièce d'une seule couleur que vous avez conçue et exportée en millimètres, rien de tout cela n'a d'importance, et le STL reste le format le moins susceptible d'être refusé.

OBJ : polygones, UV et fichier de matériaux annexe

L'OBJ vient de Wavefront Technologies, dont le logiciel Advanced Visualizer l'utilisait à la fin des années 1980 ; il s'est répandu dans les années 1990 comme le format texte que presque tous les programmes 3D savaient échanger. Contrairement au STL, il conserve une liste de sommets et construit les faces à partir d'indices : un sommet partagé n'est stocké qu'une fois, et les faces peuvent être des triangles, des quadrilatères ou des polygones plus grands. Les lignes commençant par v contiennent les positions, vt les coordonnées de texture (UV), vn les normales et f les faces. Les groupes (g) et les objets (o) nomment les parties, si bien que l'OBJ conserve sa structure lors d'un aller-retour par Blender, Maya ou ZBrush.

L'apparence se trouve en dehors du fichier .obj. Une ligne mtllib désigne un fichier .mtl associé, et les lignes usemtl affectent des matériaux aux faces. Le fichier .mtl stocke des couleurs comme Kd (diffuse) et pointe vers les images de texture avec des entrées comme map_Kd wood.png. Un OBJ texturé comprend donc au moins trois fichiers : la géométrie, la bibliothèque de matériaux et une ou plusieurs images, tous référencés par des chemins relatifs. Si vous n'envoyez que le .obj, le destinataire voit un modèle gris. Cette séparation est utile dans les chaînes de production de jeux et d'effets visuels, où les artistes changent les textures sans toucher à la géométrie, et c'est la cause la plus fréquente d'un modèle téléchargé qui s'affiche mal.

L'OBJ partage le point faible du STL sur l'échelle : il stocke des nombres bruts sans unité. La plupart des outils de modélisation écrivent en mètres ou en centimètres, alors que les trancheurs lisent des millimètres : un OBJ issu d'une boutique de ressources de jeu peut donc arriver avec un facteur 10 ou 1 000 d'écart. Pour l'impression, l'OBJ n'apporte rien d'utile au trancheur, sauf la couleur par sommet dans quelques outils ; si vous devez imprimer une ressource artistique, le plus simple est de garder les textures pour le rendu et d'envoyer au trancheur un maillage propre. Dans l'autre sens, convertir un STL en OBJ est le chemin le plus court d'un modèle d'impression vers un flux de rendu ou de jeu.

3MF : un paquet ZIP conçu pour l’impression

Le 3MF a été publié en 2015 par le 3MF Consortium, un groupe lancé par Microsoft avec des entreprises de l'impression et de la CAO. Un fichier .3mf est une archive ZIP, le même conteneur que celui abordé dans ZIP, RAR ou 7z. Renommez-le en .zip et vous trouverez un fichier XML 3D/3dmodel.model avec le maillage, un fichier de types de contenu, des fichiers de relations et souvent des miniatures et la configuration du trancheur. Chaque modèle déclare son unité (micron, millimètre, centimètre, pouce, pied ou mètre) : le problème d'échelle qui touche le STL et l'OBJ n'existe tout simplement pas. Les couleurs, les matériaux de base, plusieurs objets et leur placement sur le plateau font partie de la spécification.

La spécification exige aussi que les maillages soient étanches (manifold) et orientés de façon cohérente : chaque arête partagée par exactement deux triangles, tous tournés vers l'extérieur. Les exporteurs qui respectent les règles ne peuvent pas écrire la géométrie ouverte et auto-intersectée qu'un STL accepte sans broncher. La prise en charge est large parmi les outils actuels. PrusaSlicer, Bambu Studio, OrcaSlicer et UltiMaker Cura lisent le 3MF, PrusaSlicer et Bambu Studio enregistrent tout leur projet en .3mf avec les réglages d'impression et les couleurs peintes, et l'application 3D Builder de Microsoft sous Windows l'ouvre directement. Le point faible, ce sont les anciens micrologiciels, les portails de fermes d'impression et les importateurs de CAO qui attendent encore du STL ; dans ce cas, convertissez le 3MF en STL en acceptant que les extras restent de côté.

from ↓ · to →UnitsColorTexturesPlusieurs piècesRéglages d'impressionRègle manifold
STL– STL to Units: no– STL to Color: no– STL to Textures: no– STL to Plusieurs pièces: no– STL to Réglages d'impression: no– STL to Règle manifold: no
OBJ– OBJ to Units: noOBJ to Color: yesOBJ to Textures: yesOBJ to Plusieurs pièces: yes– OBJ to Réglages d'impression: no– OBJ to Règle manifold: no
3MF3MF to Units: yes3MF to Color: yes3MF to Textures: yes3MF to Plusieurs pièces: yes3MF to Réglages d'impression: yes3MF to Règle manifold: yes
supported not offeredLes lignes sont les formats, les colonnes ce que le fichier lui-même peut contenir. La couleur et les textures de l'OBJ nécessitent le fichier .mtl et les images séparés ; les textures du 3MF viennent de son extension de matériaux. Quelques outils écrivent la couleur dans les octets inutilisés du STL binaire, mais aucune norme ne le couvre.
Une rangée d'imprimantes 3D à cadre ouvert sur des établis en bois, la plus proche avec plusieurs pièces cylindriques bleues sur son plateau
Photo : Unsplash

Choisir le format selon l’usage

Le bon format dépend de la destination du fichier, pas de la date de sortie du format. Si la prochaine étape est un trancheur et que la pièce est d'une seule couleur, le STL convient, et c'est toujours le format que comprennent tous les forums, bibliothèques de modèles et services d'impression. Si la prochaine étape est un moteur de rendu, un moteur de jeu ou l'outil de modélisation d'un autre artiste, l'OBJ conserve les UV, les normales et les groupes nommés que le STL perd, et sa forme texte permet d'inspecter facilement les problèmes.

Le 3MF se justifie quand le fichier contient plus que la géométrie. Une impression multicolore peinte dans Bambu Studio, un plateau de douze pièces disposées pour un même travail, une pièce conçue en pouces ou un projet que vous voulez rouvrir avec la même hauteur de couche et le même remplissage exigent le 3MF, car aucun autre format présenté ici ne peut contenir ces informations. Si vous avez plusieurs destinations, gardez la version la plus riche comme copie maîtresse et exportez-en des versions plus simples avec un convertisseur de modèles 3D plutôt que d'enchaîner les conversions.

STL pour les impressions simples

Une pièce, une couleur, exportée en millimètres. S'ouvre dans tous les trancheurs, boîtes de dialogue d'import CAO et formulaires d'envoi de services d'impression.

OBJ pour les modèles texturés

UV, normales et groupes nommés pour Blender, Maya, Unity ou Unreal. Fournissez le fichier .mtl et les images de texture avec lui.

3MF pour les trancheurs récents

Vraies unités, couleurs, plusieurs objets et réglages d'impression dans un seul ZIP. Format de projet natif de PrusaSlicer et Bambu Studio.

Cinq problèmes courants des fichiers 3D

La plupart des impressions ratées et des imports défaillants attribués au format sont en réalité des problèmes du maillage, ou de ce que le programme récepteur en a supposé. Le STL est le plus exposé, car il ne contient aucune métadonnée pour repérer les erreurs ; l'OBJ partage les problèmes d'échelle et de fichiers manquants ; le 3MF en évite la plupart par conception, même si un exporteur négligent peut écrire un mauvais maillage. Ouvrez les lignes ci-dessous pour voir à quoi ressemble chaque problème et d'où il vient en général.

Maillage non manifold

Arêtes partagées par un seul triangle ou par trois ou plus, espaces entre les surfaces, ou parois d'épaisseur nulle. Le trancheur affiche des couches manquantes, des trous aléatoires ou un avertissement sur des arêtes ouvertes. La cause se situe dans la modélisation ou l'export, souvent après la fusion de pièces qui ne font que se toucher.

Normales inversées

Certains triangles sont tournés vers l'intérieur. Les moteurs de rendu affichent des zones noires ou transparentes, et les trancheurs peuvent considérer la région comme du vide. Une commande de recalcul des normales dans Blender, Meshmixer ou l'outil de réparation du trancheur règle le problème.

Confusions entre millimètres et pouces

Une pièce dessinée en pouces arrive 25,4 fois trop petite dans un trancheur qui suppose des millimètres ; des centimètres lus comme des millimètres donnent une erreur d'un facteur 10. Le STL et l'OBJ ne peuvent pas enregistrer l'unité : vous la définissez à l'export ou à la conversion.

Fichier .mtl ou textures manquants

Un OBJ qui s'affiche en gris ou en magenta a perdu sa bibliothèque de matériaux ou ses images, ou bien les chemins du .mtl pointent vers un dossier de l'ordinateur de l'artiste d'origine. Gardez tous les fichiers dans un même dossier et compressez-les ensemble.

STL ASCII énormes

Un scan détaillé enregistré en STL ASCII peut dépasser plusieurs centaines de mégaoctets, ce qui ralentit les trancheurs et dépasse les limites d'envoi. Réexporter le même maillage en STL binaire le réduit à environ un cinquième sans modifier un seul triangle.

Quelle taille atteint chaque format

Le poids découle de la structure. Le STL binaire est fixé à 50 octets par triangle : on peut donc le calculer avant l'export. Le STL ASCII répète chaque sommet en texte et se situe en général quatre à six fois au-dessus du binaire. L'OBJ stocke chaque sommet partagé une seule fois et y renvoie par indice : pour un maillage fermé typique, il est donc plus léger que le STL ASCII et à peu près dans la fourchette du STL binaire, plus lourd s'il contient aussi des UV et des normales. Le 3MF stocke du XML indexé puis le compresse dans le ZIP, ce qui en fait généralement le plus léger des trois pour la même géométrie.

Les chiffres ci-dessous sont typiques d'un maillage fermé d'environ 500 000 triangles, comme une figurine détaillée. Les fichiers réels varient selon la précision des coordonnées et l'exporteur : considérez-les comme des ordres de grandeur, utiles quand un service d'impression limite les envois ou qu'un STL exporté depuis un 3MF devient plusieurs fois plus lourd.

STL binaire (500 000 triangles × 50 octets)
≈ 25 Mo
STL ASCII, même maillage, valeur typique
≈ 100–150 Mo
OBJ sans UV, valeur typique
≈ 15–30 Mo
3MF après compression ZIP, valeur typique
≈ 5–12 Mo

Ce que la conversion corrige, et ce qu’elle ne corrigera jamais

Une conversion lit les triangles d'un conteneur et les écrit dans un autre. Tout ce que le format cible peut exprimer est conservé ; le reste est abandonné. C'est pourquoi la conversion de STL en OBJ ne perd rien côté géométrie, que celle de 3MF en STL perd les couleurs, les unités et la disposition du plateau, et que celle d'OBJ en STL perd les textures et les noms de pièces. Dans les outils 3D d'UltKit, les choix supplémentaires sont explicites : Unités du modèle indique au convertisseur l'échelle de la source, Axe vertical gère la différence entre Y vers le haut et Z vers le haut des moteurs de jeu et des trancheurs, et Fusionner en un seul maillage décide si les pièces distinctes restent séparées.

Ce que aucune conversion ne fait, c'est réparer un maillage. Si un STL a un trou, l'OBJ que vous en tirez a le même trou, et un exporteur 3MF le refusera ou l'écrira quand même. La réparation est une étape distincte, dans un outil de maillage ou le correcteur intégré du trancheur, et elle se fait de préférence une seule fois, dans votre fichier maître, avant tout autre export. Il en va de même pour l'échelle : la conversion ne peut pas savoir qu'une pièce était prévue en pouces si vous ne le lui dites pas. Le niveau de détail fonctionne pareil : un STL à faible nombre de polygones donne un OBJ ou un 3MF à faible nombre de polygones, donc réexportez depuis le modèle source quand la qualité compte.

Ce que fait un changement de format

  • Place les mêmes triangles dans un conteneur qu'un autre programme accepte
  • Applique l'unité choisie dans Unités du modèle, ce qui corrige une erreur d'échelle de 25,4 ou de 10
  • Fait pivoter le modèle entre Y vers le haut et Z vers le haut avec Axe vertical
  • Réduit un STL ASCII en écrivant du binaire à la place
  • Conserve ou fusionne les pièces distinctes, selon Fusionner en un seul maillage

Ce qu'il laisse exactement tel quel

  • Trous, arêtes ouvertes et géométrie non manifold
  • Normales inversées ou incohérentes
  • Pièces auto-intersectées et parois d'épaisseur nulle
  • Détails perdus lors du premier export du maillage
  • Couleurs et textures quand le format cible n'a pas de place pour elles

Tableau de décision : STL, OBJ ou 3MF

Deux autres formats reviennent chaque fois que cette question est posée. Le STEP (ISO 10303) stocke des solides et des surfaces exacts plutôt que des triangles : c'est le format à utiliser quand une pièce doit retourner dans Fusion 360, SolidWorks ou FreeCAD pour être modifiée. Le GLB, forme binaire du glTF 2.0 du Khronos Group, regroupe un maillage avec ses matériaux et ses textures dans un seul fichier en mètres, et c'est le format pour présenter un modèle sur le web ou en réalité augmentée sous Android.

Pour les trois formats traités dans cet article, le tableau ci-dessous résume le choix selon la destination. Si deux lignes conviennent, choisissez le format qui contient le plus d'informations et exportez le plus simple plus tard ; passer de 3MF à STL est facile, alors que reconstituer des couleurs ou des unités perdues est un travail manuel.

Choisir selon la destination du fichier
SituationMeilleur formatPourquoi
Pièce d'une seule couleur destinée à n'importe quel trancheurSTL (binaire)Prise en charge universelle ; le trancheur n'a besoin de rien d'autre
Envoi vers une bibliothèque de modèles ou un service d'impressionSTL, plus 3MF s'il est proposéLe STL est toujours accepté ; le 3MF conserve les unités et les couleurs
Impression multicolore ou multimatériau3MFSeul format ici qui stocke les couleurs et les matériaux par pièce pour les trancheurs
Plateau de plusieurs pièces avec réglages d'impression3MFStocke le placement des objets et les réglages du trancheur dans un seul fichier
Pièce conçue en pouces3MFDéclare l'unité : rien n'est mis à l'échelle par 25,4
Modèle texturé pour Blender, Unity ou UnrealOBJ (+ .mtl et images)Conserve les UV, les normales et les affectations de matériaux
Vérification rapide dans un éditeur de texteOBJ ou STL ASCIITexte brut lisible ligne par ligne
Ancien micrologiciel ou logiciel qui ne liste que le STLSTLRetirez les extras et envoyez le maillage

À retenir

  • Le STL ne stocke que des triangles : pas d'unité, pas de couleur, et 50 octets par triangle en binaire.
  • L'OBJ ajoute les UV, les normales et les groupes nommés, mais ses couleurs et ses textures dépendent d'un fichier .mtl et de fichiers image distincts.
  • Le 3MF est un ZIP de XML qui enregistre les unités, les couleurs, plusieurs objets et les réglages d'impression, et qui exige des maillages fermés.
  • Utilisez le STL pour les impressions simples d'une seule couleur, l'OBJ pour les modèles texturés dans les chaînes artistiques et de jeu, et le 3MF dès que votre trancheur le prend en charge.
  • Convertir change le conteneur, pas le maillage : réparez les trous et les normales dans un outil de maillage, et définissez vous-même l'unité.
PartagerXFacebookWhatsAppTelegram

Questions fréquentes

Le 3MF va-t-il remplacer le STL ?

Lentement, pour les flux d'impression. PrusaSlicer et Bambu Studio enregistrent déjà les projets en 3MF, mais le STL reste le format que tous les outils et toutes les bibliothèques de modèles acceptent. Les deux formats vont donc coexister pendant des années.

Un STL binaire peut-il stocker des couleurs ?

Pas de façon standard. Quelques programmes écrivent la couleur dans le champ d'attributs de 2 octets de chaque triangle, mais la plupart des slicers l'ignorent. Utilisez donc le 3MF ou l'OBJ quand la couleur compte.

Pourquoi mon OBJ s’affiche-t-il en gris après le téléchargement ?

Le fichier .mtl ou les images de texture ont été oubliés, ou bien les chemins indiqués dans le .mtl pointent vers des dossiers qui n'existent pas sur votre ordinateur. Placez le .obj, le .mtl et les images dans un même dossier, puis rechargez le modèle.

STL ASCII ou binaire : lequel donne une impression plus précise ?

Aucun des deux n'imprime plus précisément en pratique. Les deux décrivent les mêmes triangles : le binaire stocke les coordonnées en flottants 32 bits et l'ASCII sous forme de texte. Les fichiers binaires sont en général plusieurs fois plus légers.

Peut-on reconvertir un OBJ en STL pour l’imprimer ?

Oui. Les triangles sont conservés tels quels, tandis que les UV, les matériaux et les textures sont supprimés, car le STL ne peut pas les contenir. Vérifiez ensuite l'échelle, car les fichiers OBJ issus d'outils de modélisation sont souvent en mètres ou en centimètres.

Quel format utiliser pour partager un modèle à imprimer par d’autres ?

Proposez un STL pour une compatibilité maximale et, si le modèle comporte plusieurs pièces, des couleurs ou a été conçu en pouces, ajoutez à côté un 3MF afin que ceux qui ont un slicer récent profitent de la configuration complète.

À lire aussi