Convertir STL en OBJ

Vous pouvez convertir STL en OBJ gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.

  • Où cela s’exécute Dans votre navigateur. Le fichier n’est pas téléversé.
  • Reconstruit OBJ ne fonctionne pas comme STL. Il ne s’agit donc pas de la dégradation progressive d’un codec avec perte : ce que OBJ sait exprimer est reproduit fidèlement, et ce qui n’y a pas d’équivalent ne subsiste pas du tout.
  • Limite de taille Jusqu’à 100 Mo par fichier, gratuitement et sans compte.
  • Bon à savoir La géométrie seule. Les matériaux, les couleurs, les textures et l’animation ne suivent pas, et un modèle placé plusieurs fois revient avec chaque copie figée à sa propre position.

Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.

Sortir un STL du monde de l’impression pour pouvoir le modifier

Le STL existe pour être tranché. Il porte des triangles et rien d’autre, ce qui est précisément ce qu’un slicer veut et précisément ce qu’une application de modélisation ne veut pas — pas de groupes à isoler, pas de matériaux à assigner, pas de noms à chercher, et surtout, pas de sommets partagés. Tout ce que fait un modélisateur commence par sélectionner une partie du mesh, et un STL ne lui donne rien à sélectionner.

L’OBJ est le genre de fichier opposé : texte, indexé, groupé, importé universellement, et suffisamment ancien pour qu’un logiciel de 1998 le lise. Ce n’est pas un meilleur format que le STL en soi ; c’est le format que chaque outil d’une chaîne de modélisation traite comme le défaut, ce qui est exactement ce que vous voulez quand l’étape suivante est le logiciel de quelqu’un d’autre.

Le soudage est ce qui rend le mesh sélectionnable

Un cube en STL est douze triangles avec trente-six sommets, parce que chaque triangle porte ses trois coins indépendamment et que les huit coins réels sont écrits quatre ou cinq fois chacun. Importé tel quel, chaque triangle est sa propre île : Select Linked ramasse une face, loop select ne trouve aucune boucle, la subdivision produit des trous, et l’ombrage lissé n’a pas de normales partagées à moyenner, donc la surface reste facettée quoi que vous fassiez.

Le lecteur ici fusionne les sommets coïncidents avant toute écriture. La clé de comparaison est arrondie à six décimales, parce que deux triangles qui partagent une arête divergent en général sur le dernier bit d’un flottant — six décimales est bien en dessous de toute tolérance imprimable et bien au-dessus du bruit. Le cube sort avec huit sommets et douze faces, ce qui est un mesh au sens où un modélisateur l’entend : connecté, sélectionnable en boucle, subdivisible, et ombrable de manière lisse.

Ce que contient réellement le fichier OBJ

Une ligne de commentaire, une ligne `o` qui nomme le groupe unique, puis une ligne `v` par sommet et une ligne `f` par triangle. C’est tout le fichier. Les indices sont en base un, comme l’OBJ l’exige, et comptent à travers le fichier plutôt que par groupe.

Il n’y a pas de lignes `vt` parce qu’un STL n’a pas de coordonnées de texture, pas de lignes `vn` parce que les normales se déduisent, pas de ligne `usemtl` parce qu’il n’y a pas de matériau, et pas de référence `mtllib` parce qu’il n’y a pas de bibliothèque de matériaux. Tout ce qui ouvre de l’OBJ le lira ; il n’y a rien d’inhabituel dans le fichier sur lequel un importateur pourrait être en désaccord.

Le groupe unique, et le découpage des pièces ensuite

Un STL n’a pas la notion d’objet, donc l’OBJ a un groupe et il s’appelle `mesh_1`. Un modèle qui était composé d’un corps, d’un couvercle et d’une poignée arrive comme un seul groupe contenant trois coques déconnectées.

Chaque application de modélisation sait découper cela. Blender le fait avec Separate By Loose Parts en mode édition ; MeshLab a Split in Connected Components ; Maya et 3ds Max ont tous deux l’équivalent. Ce qu’aucun ne peut faire, c’est retrouver les noms, parce que le STL ne les avait jamais eus. Si les noms comptent et que vous avez le choix de la source, le 3MF et l’OBJ les conservent tous deux et le STL jamais.

Aucune normale n’est écrite, et c’est la bonne décision

Un STL stocke une normale de face par triangle. Elle n’est pas écrite dans l’OBJ, et rien n’est perdu : une normale de face est entièrement déterminée par l’ordre de winding de ses trois coins, et chaque application la recalcule à l’import. Plusieurs slicers ignorent la valeur stockée, précisément parce que beaucoup d’auteurs la calculent mal.

L’absence de normales de sommet est plus intéressante. Sans elles, l’importateur calcule les siennes, ce qui pour un mesh soudé veut dire moyenner sur les sommets partagés — donc le modèle arrive prêt à être ombré lisse ou plat selon votre choix, avec le choix vivant dans votre application plutôt que figé dans le fichier. Sur un export CAO converti, ajouter un edge-split ou un seuil d’arête nette vous donne en une étape les chanfreins francs et les cylindres lisses.

Comment le lecteur décide si votre STL est binaire ou texte

Les deux dialectes sont convertis et le fichier ne dit pas lequel il est. Le test habituel — le fichier commence-t-il par le mot `solid` ? — est faux, parce qu’un STL binaire peut contenir n’importe quoi dans son en-tête de quatre-vingts octets et plusieurs exportateurs y mettent `solid`, ce qui produit un fichier qui ressemble à du texte et ne l’est pas.

Le test fiable est arithmétique : un STL binaire fait exactement 84 + 50n octets pour le nombre de triangles déclaré dans son en-tête, et rien d’autre ne fait cela. C’est ce qui est vérifié ici. Si l’arithmétique ne tient pas, le fichier est décodé en texte et chaque ligne `vertex` est lue. Un fichier qui n’est ni l’un ni l’autre — tronqué, ou un STL de nom seulement — s’arrête avec un message plutôt que de produire un mesh vide.

La taille de l’OBJ à côté du STL dont il vient

Deux effets tirent dans des directions opposées. Le soudage retire l’essentiel de la duplication : un mesh typique a chaque sommet partagé par cinq ou six triangles, donc la liste des sommets rétrécit d’à peu près ce facteur. Le texte dilate ce qui reste : un flottant de quatre octets devient dix à quinze caractères de décimal, et les lignes de face ajoutent les leurs.

Le résultat tombe en général dans la même fourchette, avec l’OBJ un peu en avance sur le STL binaire — une augmentation plutôt qu’une multiplication. Le plafond gratuit ici est de 100 Mo, ce qui représente environ deux millions de triangles STL, et un mesh de cette densité dépasse de toute façon ce que la plupart des sessions de modélisation veulent. Si le STL est très gros, décimer avant la conversion est plus rapide que décimer après.

Importer l’OBJ converti dans Blender ou MeshLab

Deux réglages méritent d’être vérifiés à l’entrée. L’axe vertical : l’OBJ n’a pas de convention et l’importateur de Blender part par défaut sur Y-haut, alors qu’un STL issu d’une CAO ou d’un workflow d’impression est presque toujours Z-haut, donc le modèle arrive couché sur la face à moins que vous ne le corrigiez. Et l’échelle : aucun format ne déclare d’unité, et si le STL était en millimètres, une scène Blender en mètres traitera une pièce de 60 mm comme soixante mètres.

Après l’import, le premier geste utile sur tout mesh CAO converti est Merge By Distance avec un seuil très petit, qui rattrape ce que le soudage à six décimales n’a pas pu attraper parce que la géométrie source divergait réellement. Regardez ensuite les statistiques : si le nombre de sommets est proche de trois fois le nombre de faces, le soudage n’a pas pris et quelque chose dans la source est inhabituel.

Des triangles jusqu’en bas, et ce que cela change pour l’édition

Le mesh est soudé et il reste entièrement en triangles, parce que c’est tout ce que le STL a jamais contenu. Les quads et les n-gons ne peuvent pas être récupérés — l’information sur les paires de triangles qui formaient un quad n’est pas dans le fichier et ne peut pas être déduite de manière fiable. La sculpture, les opérations booléennes, la décimation et la mesure marchent très bien sur des triangles.

Ce qui ne marche pas bien, c’est la modélisation par subdivision de surface et tout workflow qui s’appuie sur un edge flow propre, qui veulent des quads. Si vous comptez continuer à travailler sur ce modèle plutôt que d’y faire une seule modification, la retopologie est l’étape suivante honnête : Quadriflow Remesh dans Blender, ZRemesher dans ZBrush ou InstantMeshes vous donneront un mesh quads en une passe, et l’OBJ converti est une entrée parfaitement valable pour n’importe lequel d’eux.

Où la conversion STL se passe

Dans cet onglet de navigateur, en JavaScript pur. Aucun module WebAssembly n’est téléchargé, rien n’est téléversé, il n’y a pas de compte et pas de quota quotidien. Ouvrir l’onglet réseau et convertir quelque chose est la manière de le confirmer.

Les STL sont souvent la conception de quelqu’un d’autre — une pièce de client, une géométrie de fournisseur, un composant sous accord — et le travail de modélisation sur cette page est exactement la situation où cela est vrai. Une conversion qui n’envoie jamais le fichier écarte la question au lieu d’y répondre.

Comment convertir STL en OBJ

  1. Déposez votre fichier STL sur cette page, ou cliquez pour en choisir un.
  2. Choisissez OBJ comme destination. La conversion se fait dans votre navigateur et le fichier n’est pas téléversé.
  3. Téléchargez le fichier OBJ terminé.

STL et OBJ : ce qui change

STL face à OBJ
STLOBJ
Nom completStereolithographyObjet Wavefront
Extension de fichier.stl.obj
Type de médiamodel/stlmodel/obj
Première publication19871992
Publié par3D SystemsWavefront Technologies
LicenceStandard ouvertStandard ouvert
Situation actuelleActuelActuel
S’ouvre dans un navigateurAucun navigateurAucun navigateur
Envisagé à la place3MF, PLYGLTF, PLY

Ouvrir le résultat

Blender lit aussi bien STL que OBJ : vous pouvez comparer le résultat à l’original sans second logiciel.

À quoi sert chaque format

Les deux visent des usages différents : STL l’impression 3D, OBJ l’échange entre programmes et la retouche. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.

OBJ vient de Wavefront Technologies et date de 1992. Blender, MeshLab et Maya le lisent.

De STL à OBJ : questions fréquentes

Mon fichier STL est-il téléversé quelque part ?

Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.

Convertir STL en OBJ est-il gratuit ?

Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.

Y a-t-il une perte de qualité en convertissant STL en OBJ ?

STL et OBJ décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. La géométrie seule. Les matériaux, les couleurs, les textures et l’animation ne suivent pas, et un modèle placé plusieurs fois revient avec chaque copie figée à sa propre position.

Dois-je installer quelque chose pour ouvrir un fichier OBJ ?

Pas pour la conversion : elle se fait dans le navigateur que vous avez déjà ouvert. Pour ouvrir le résultat, il vous faut ensuite le logiciel avec lequel votre appareil affiche habituellement Wavefront Object.

En savoir plus sur ces formats