Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir STL en GLTF 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.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
STL en GLTF
Aucun navigateur ne rend un STL et aucun navigateur ne rend un glTF non plus — les deux ont besoin d’un runtime. Ce qui diffère, c’est la qualité du chemin. three.js livre un chargeur STL, donc la réponse naïve est de servir le STL directement et d’en finir, et pour un outil interne ponctuel c’est une réponse raisonnable.
Cela cesse d’être raisonnable quand la page est publique et que le modèle est le contenu. Un STL est la manière la moins efficace de faire passer un mesh sur une connexion qui existe, il ne porte pas de bornes donc la caméra doit être calculée après le parsing, et chaque triangle arrive avec ses trois sommets que le GPU doit dédupliquer ou non. glTF a été conçu pour ce transfert exact et corrige les trois.
Un STL binaire fait exactement 84 + 50n octets pour n triangles, quelle que soit la forme. Cinquante de ces octets sont douze pour une normale de face, trente-six pour trois sommets complets, et deux inutilisés. Rien n’est partagé : un cube est trente-six enregistrements de sommets pour huit coins distincts.
La conversion arrondit les coordonnées à six décimales pour bâtir une clé et effondre chaque coin à la même position en un sommet. Sur une surface fermée, chaque sommet sert typiquement cinq ou six triangles, donc les données de sommet chutent d’à peu près ce facteur avant d’être écrites en float32. Ajoutez douze octets d’indices uint32 par triangle et la géométrie glTF arrive bien en dessous du STL pour tout mesh qui est réellement fermé.
Une scène, un nœud, un mesh, une primitive en mode triangle, un accesseur de position VEC3 float32 et un accesseur d’indices SCALAR uint32. Le bloc asset déclare la version 2.0. Le buffer est embarqué comme URI de données base64, donc le fichier est autonome.
L’accesseur POSITION porte min et max, ce que la spécification exige et qui est la différence pratique entre un modèle qui apparaît et un qui n’apparaît pas. model-viewer et three.js dérivent tous deux leur distance de caméra initiale de ces six nombres ; un fichier écrit sans eux s’ouvre zoomé sur rien, et cette défaillance est indistinguishable d’un chargement cassé jusqu’à ce que vous inspectiez le JSON.
Aucun attribut NORMAL n’est écrit, et la spécification glTF demande aux visualiseurs de calculer des normales de face plates quand un mesh n’en a pas. Sur un modèle organique importé d’un outil de sculpture, c’est un défaut et les gens demandent comment le corriger. Sur une pièce sortie d’une CAO en STL, c’est la vérité.
Un STL n’a pas de surfaces courbes. Il a les triangles que l’exportateur a produits à la tolérance de corde réglée, et un rendu lissé de ceux-ci est un mensonge flatteur sur la géométrie qu’une imprimante reproduira réellement. Si vous voulez que l’aperçu soit plus lisse, la correction honnête est en amont — ré-exportez le STL avec une tolérance plus fine pour qu’il y ait plus de triangles — plutôt que de moyenner les normales pour cacher celles que vous avez.
STL ne déclare pas d’unité et les mondes de l’ingénierie et de l’impression lisent ses nombres comme des millimètres. glTF 2.0 définit son unité linéaire comme le mètre. La conversion copie les coordonnées inchangées, parce que remettre à l’échelle par un facteur que la source n’a jamais énoncé serait une supposition.
Donc une pièce de 60 mm devient une pièce de 60 mètres en termes glTF. Rien ne semble faux isolément — la caméra cadre d’après les bornes et le modèle remplit la vue — mais ce sera faux au moment où elle se trouvera à côté de quoi que ce soit d’autre dans une scène, et l’éclairage physique se comporte différemment à cette échelle. Réglez une échelle uniforme de 0,001 sur le nœud dans votre visualiseur, ou appliquez-la dans gltf-transform une fois à la compilation.
Parce qu’un STL n’a ni pièces, ni groupes, ni objets, le glTF contient exactement une primitive. C’est la chose la moins chère possible à rendre et cela veut dire qu’un modèle issu d’un STL ne souffre jamais du problème d’appels de dessin qu’un export de CAO à trois cents groupes crée.
Il n’a aussi aucun matériau, aucune texture, aucune coordonnée UV et aucune couleur de sommet, parce qu’un STL n’en avait pas. Votre visualiseur applique son rendu par défaut, qui est d’ordinaire un matériau physiquement basé gris moyen. Lui attribuer quelque chose de mieux dans three.js est une ligne, et cela vaut la peine : une pièce technique se lit bien mieux avec un matériau légèrement métallique et une carte d’environnement qu’avec le rendu par défaut.
Le .gltf écrit ici embarque son buffer comme URI de données base64, donc il n’y a pas de .bin à servir à côté et pas de chemin relatif qui puisse se casser. Base64 coûte quatre caractères par trois octets, donc cette commodité représente environ 33 pour cent d’octets en plus, en plus du JSON joliment indenté.
Pour un fichier que vous allez inspecter, comparer, ou passer à gltf-transform à la compilation, prenez le glTF. Pour le fichier que le visiteur télécharge effectivement, prenez le GLB : même géométrie, mêmes bornes, buffer binaire, une seule requête. Convertir un STL dans l’un ou l’autre est la même opération ici, et l’extension est toute la différence.
Binaire et ASCII STL partagent une extension et le fichier ne dit pas lequel il est. Le test habituel — vérifier si le fichier commence par le mot « solid » — n’est pas fiable, parce que l’en-tête de quatre-vingts octets d’un STL binaire peut contenir n’importe quel texte et plusieurs exportateurs y mettent « solid ».
Le test fiable est l’arithmétique : un STL binaire fait exactement 84 + 50n octets pour le nombre de triangles de son en-tête, et rien d’autre ne fait cela. C’est ce que ce convertisseur utilise. Si la longueur ne correspond pas, le fichier est décodé en texte et ses lignes de sommet sont lues. Dans les deux cas le modèle arrive à la même forme soudée avant que le glTF ne soit écrit.
Nulle part. La paire tourne comme du JavaScript ordinaire dans la page — pas de moteur WebAssembly à télécharger, pas de requête qui transporte le modèle, pas de file. Cela compte plus que d’habitude pour cette paire, parce que les STL que les gens convertissent pour un aperçu web sont fréquemment une pièce de client ou un produit non sorti, et un service d’impression qui fait un devis sur une géométrie téléversée a une vraie raison de se demander où elle est allée.
Le plafond gratuit est de 100 Mo, ce qui, à cinquante octets par triangle, représente un modèle à deux millions de triangles. Les fichiers de cette taille valent la peine d’être décimés avant la conversion plutôt qu’après : le glTF sera proportionnellement énorme, et un visualiseur de navigateur sur un téléphone n’appréciera quel que soit le format sous lequel il arrive.
| STL | GLTF | |
|---|---|---|
| Nom complet | Stereolithography | GL Transmission Format |
| Extension de fichier | .stl | .gltf |
| Type de média | model/stl | model/gltf+json |
| Première publication | 1987 | 2015 |
| Publié par | 3D Systems | Khronos Group |
| Spécification | — | glTF 2.0 |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Aucun navigateur | Aucun navigateur |
| Envisagé à la place | 3MF, OBJ, PLY | GLB, OBJ |
Blender lit aussi bien STL que GLTF : vous pouvez comparer le résultat à l’original sans second logiciel.
Les deux visent des usages différents : STL l’impression 3D, GLTF le web et la remise d’un fichier fini. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
GLTF vient de Khronos Group et date de 2015, décrit par glTF 2.0. Blender, three.js et Babylon.js le lisent.
STL a été publié en 1987 et GLTF en 2015. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.
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.
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.
STL et GLTF 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.
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 GL Transmission Format.