STL naar GLTF omzetten

Hier zet je STL naar GLTF om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Opnieuw opgebouwd GLTF werkt anders dan STL. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat GLTF kan uitdrukken wordt getrouw weergegeven, en wat daar geen equivalent heeft blijft helemaal weg.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.
  • Goed om te weten Alleen de meetkunde. Materialen, kleuren, texturen en animatie gaan niet mee, en een model dat meerdere keren geplaatst is komt terug met elke kopie vastgezet op zijn eigen plek.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Een STL voor een bezoeker tonen betekent hem eerst omzetten

Geen browser rendert een STL en geen browser rendert een glTF rechtstreeks — beide hebben een runtime nodig. Wat verschilt, is de kwaliteit van het pad. three.js levert een STL-loader mee, dus het naïeve antwoord is de STL rechtstreeks te serveren, en voor een eenmalig intern hulpmiddel is dat een redelijk antwoord.

Het houdt op redelijk te zijn zodra de pagina publiek is en het model de inhoud is. Een STL is de minst efficiënte manier om een mesh over een verbinding te sturen die er is, hij draagt geen grenzen dus de camera moet ze na het parsen berekenen, en elk driehoekje komt met zijn eigen drie vertices die de GPU al dan niet moet ontdubbelen. glTF is voor precies deze overdracht ontworpen en lost alle drie op.

Lassen is waar de grootte-winst van STL naar glTF vandaan komt

Een binaire STL is precies 84 + 50n bytes voor n driehoeken, ongeacht de vorm. Vijftig van die bytes zijn twaalf voor een vlaknormaal, zesendertig voor drie volledige vertices, en twee ongebruikt. Er wordt niets gedeeld: een kubus is zesendertig vertex-records voor acht afzonderlijke hoeken.

De omzetting rondt coördinaten af tot zes decimalen om een sleutel te bouwen en laat elke hoek op dezelfde positie samenvallen in één vertex. Op een gesloten oppervlak bedient elke vertex doorgaans vijf of zes driehoeken, dus de vertexdata daalt met ongeveer die factor voordat hij als float32 wordt weggeschreven.

Wat de glTF bevat en hoe een viewer hem kadreert

Eén scène, één node, één mesh, één primitive in driehoeksmodus, een float32 VEC3-positieaccessor en een uint32 SCALAR-indexaccessor. Het asset-blok declareert versie 2.0. De buffer wordt ingesloten als base64-data-URI, dus het bestand is op zichzelf staand.

De POSITION-accessor draagt min en max, wat de specificatie vereist en het praktische verschil is tussen een model dat verschijnt en een dat dat niet doet. model-viewer en three.js leiden hun beginnende cameraafstand allebei af uit die zes getallen; een bestand zonder ze geschreven opent uitgezoomd naar niets.

Vlakke schaduw is het juiste aanzien voor een omgezette STL

Er wordt geen NORMAL-attribuut geschreven, en de glTF-specificatie draagt viewers op om vlakke vlaknormalen te berekenen wanneer een mesh er geen heeft. Op een organisch model uit een sculptprogramma is dat een gebrek en vragen mensen hoe ze het verhelpen. Op een onderdeel dat als STL uit CAD kwam, is het de waarheid.

Een STL heeft geen gebogen oppervlakken. Hij heeft de driehoeken die de exporter produceerde bij welke koordetolerantie dan ook, en een vloeiend geschaduwde render daarvan is een vleiende leugen over de geometrie die een printer echt zal reproduceren. Wil je de preview vloeiender laten ogen, is de eerlijke oplossing stroomopwaarts.

Millimeters tegen meters: de schaalval in STL naar glTF

STL declareert geen eenheid en de techniek- en printwereld leest zijn getallen als millimeters. glTF 2.0 definieert zijn lineaire eenheid als de meter. De omzetting kopieert de coördinaten ongewijzigd over, omdat herschalen met een factor die de bron nooit noemde, gokken zou zijn.

Een beugel van 60 mm wordt dus een beugel van 60 meter in glTF-termen. Niets oogt fout in isolatie, maar het gaat fout zodra het naast iets anders in een scène staat. Zet een uniforme schaal van 0,001 op de node in je viewer, of pas het toe in gltf-transform tijdens de build.

Eén STL, één mesh, één draw call, geen materiaal

Omdat een STL geen onderdelen, groepen of objecten heeft, bevat de glTF precies één primitive. Dat is het goedkoopste dat te renderen valt, en het betekent dat een uit STL afgeleid model nooit het draw-call-probleem krijgt dat een CAD-export met driehonderd groepen veroorzaakt.

Het heeft ook geen materiaal, geen textuur, geen UV-coördinaten en geen vertexkleuren, omdat een STL daar geen van bevatte. Je viewer past zijn standaard toe, meestal een middengrijs physically-based materiaal. Iets beters toewijzen in three.js is één regel, en de moeite waard.

De base64-buffer van de glTF, en wanneer je de GLB neemt

De .gltf hier ingesloten buffer als base64-data-URI, dus er is geen .bin om ernaast te serveren en geen relatief pad dat kan breken. Base64 kost vier tekens per drie bytes, dus dat gemak is ongeveer 33 procent meer bytes, bovenop mooi opgemaakte JSON.

Voor een bestand dat je gaat inspecteren, diffen of tijdens de build aan gltf-transform voeren, neem je de glTF. Voor het bestand dat de bezoeker daadwerkelijk downloadt, neem je de GLB: dezelfde geometrie, dezelfde grenzen, binaire buffer, één verzoek.

Beide STL-dialecten zetten om, en hoe ze uit elkaar worden gehouden

Binaire en ASCII-STL delen een extensie en het bestand zegt niet welke van de twee het is. De gangbare test — controleren of het bestand begint met het woord "solid" — is onbetrouwbaar, want de tachtig-byte header van een binaire STL kan willekeurige tekst bevatten en meerdere schrijvers zetten daar "solid" neer.

De betrouwbare test is rekenkundig: een binaire STL is precies 84 + 50n bytes voor het driehoekaantal in zijn header, en verder niets. Klopt de lengte niet, dan wordt het bestand als tekst gedecodeerd en worden de vertexregels gelezen.

Waar de STL blijft terwijl hij glTF wordt

Nergens. Het paar draait als gewone JavaScript in de pagina — geen WebAssembly-engine om te downloaden, geen verzoek dat het model draagt, geen wachtrij. Dat doet er meer toe dan gewoonlijk bij dit paar, want de STL’s die mensen voor een webpreview omzetten, zijn vaak het onderdeel van een klant of een onuitgebracht product.

Het gratis plafond is 100 MB, wat bij vijftig bytes per driehoek een model van twee miljoen driehoeken is. Bestanden van die omvang zijn het waard om vooraf te decimeren in plaats van erna: de glTF wordt evenredig enorm.

Zo zet je STL naar GLTF om

  1. Sleep je STL-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies GLTF als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare GLTF-bestand.

STL of GLTF: wat er verandert

STL vergeleken met GLTF
STLGLTF
Volledige naamStereolithographyGL Transmission Format
Bestandsextensie.stl.gltf
Mediatypemodel/stlmodel/gltf+json
Voor het eerst gepubliceerd19872015
Uitgegeven door3D SystemsKhronos Group
SpecificatieglTF 2.0
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogen3MF, OBJ, PLYGLB, OBJ

Het resultaat openen

Blender leest zowel STL als GLTF, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.

Waarvoor elk formaat bedoeld is

De twee mikken op ander werk: STL op 3D-printen, GLTF op het web en een af bestand overdragen. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.

GLTF komt van Khronos Group en stamt uit 2015, vastgelegd in glTF 2.0. Blender, three.js en Babylon.js lezen het formaat.

STL verscheen in 1987 en GLTF in 2015. Het oudste is doorgaans het veiligste bestand om te overhandigen; het nieuwste doet hetzelfde werk met minder bytes.

Van STL naar GLTF: veelgestelde vragen

Wordt mijn STL-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt.

Is STL naar GLTF omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk.

Gaat er kwaliteit verloren bij het omzetten van STL naar GLTF?

STL en GLTF beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. Alleen de meetkunde. Materialen, kleuren, texturen en animatie gaan niet mee, en een model dat meerdere keren geplaatst is komt terug met elke kopie vastgezet op zijn eigen plek.

Moet ik iets installeren om een GLTF-bestand te openen?

Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat GL Transmission Format normaal weergeeft.

Meer over deze formaten