STL naar GLB omzetten

Hier zet je STL naar GLB 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 GLB werkt anders dan STL. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat GLB 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.

De plekken die om een GLB vragen en een STL weigeren

Drie situaties verklaren bijna deze hele omzetting. Een uploadveld op een advertentie, een documentatieplatform of een contentsysteem dat `.glb` noemt omdat dat is wat zijn viewer-component laadt. Een collega of klant die een onderdeel wil bekijken en geen slicer, geen CAD-pakket en geen zin heeft om iets te installeren. En een augmented-reality- of previewfunctie die om glTF is gebouwd omdat dat de webstandaard is.

In geen van die gevallen bouwt degene die omzet een 3D-toepassing. Ze willen een bestand dat aan de andere kant opent, met de vorm zichtbaar, vanmiddag. Dat is de moeite waard om vast te houden, want de meeste adviezen over glTF zijn geschreven voor mensen die scènes samenstellen en beantwoorden vragen die deze lezer niet heeft.

Eén bestand, met de buffer gepakt in plaats van gecodeerd

Een GLB is hetzelfde glTF-document met zijn vertexdata erachter geplakt: een header van twaalf bytes waarvan de eerste vier `glTF` spellen, dan een JSON-blok, dan een binair blok, elk opgevuld tot een grens van vier bytes. Eén bestand, één verzoek, niets ernaast.

Dat doet ertoe tegenover het alternatief op deze site. Een STL naar `.gltf` omzetten geeft ook één bestand, maar het moet de vertexdata als een base64-data-URI in de JSON dragen, wat vier tekens per drie bytes kost — ongeveer drieëndertig procent — met genest opgemaakte JSON erbovenop. De GLB slaat dezelfde bytes rechtstreeks op, dus is hij merkbaar kleiner voor precies dezelfde geometrie. Gaat het bestand ergens naartoe gedownload worden, dan is dit de versie om te sturen.

De GLB draagt geen materiaal, dus de viewer bepaalt alles

Een STL heeft geen kleur, geen textuur, geen UV-coördinaten en geen vertexkleuren, en de omzetter schrijft een primitive met een positie-accessor en een index-accessor en geen materiaalverwijzing. Wat op het scherm verschijnt komt volledig uit de standaardwaarden van de viewer.

Daarom kan hetzelfde bestand in de ene viewer als een solide, technisch object ogen en in een andere als een grijze klomp. De oplossing is verlichting, geen omzetting: `<model-viewer>` levert neutrale omgevingsverlichting en een `shadow-intensity`-attribuut, en beide toevoegen verandert het resultaat. In three.js doet een omgevingskaart plus een halve-bol-licht hetzelfde werk. Heeft het onderdeel echt kleur nodig, voeg dan achteraf een materiaal toe aan de glTF met gltf-transform — een kleine wijziging aan een document dat verder compleet is.

Z-boven in de STL, Y-boven in de viewer

Dit is degene waardoor mensen denken dat de omzetting mislukt is. CAD-pakketten en de hele 3D-printwereld werken Z-boven: het bouwplatform is het XY-vlak en hoogte is Z. glTF specificeert Y als boven, en elke viewer volgt dat. Er wordt in de omzetting niets geroteerd, want een rotatie verzinnen zou gissen zijn naar welke conventie de bron volgde.

Een onderdeel geëxporteerd uit Fusion, SolidWorks, FreeCAD of een slicer komt dus negentig graden gekanteld op zijn rug in de viewer aan. Corrigeer het in de scène en niet in het bestand: `<model-viewer>` neemt een `orientation="-90deg 0 0"`-attribuut, en three.js heeft één regel nodig die `object.rotation.x` zet. Dat in de viewer doen houdt de GLB gelijk aan de STL, wat ertoe doet als dezelfde geometrie ook naar een printer gaat.

Millimeters in de STL tegen meters in de viewer

Geen van beide formaten declareert een eenheid. STL wordt door elke slicer ooit geschreven als millimeters behandeld; glTF wordt zo geschreven alsof één eenheid één meter is. De getallen gaan onaangeraakt over, dus een beugel van 60 mm wordt een object van zestig eenheden, wat een viewer voor meters weergeeft als een beugel van zestig meter, vanaf grote afstand gekaderd.

Deel door 1000 in de scène, en controleer tegen een afmeting die je kunt verifiëren in plaats van op het oog. `<model-viewer>` heeft een `scale`-attribuut; three.js heeft `object.scale.setScalar(0.001)`. Oogt de viewer correct zonder schalen, dan was de STL waarschijnlijk niet in millimeters, wat de moeite waard is om te weten voor hij naar een printer gaat.

De STL wordt gelast voor de GLB geschreven wordt

Een STL slaat elke driehoek op als drie onafhankelijke vertices zonder enige deling, dus een kubus komt binnen als zesendertig posities waar acht zouden volstaan. De lezer voegt eerst samenvallende vertices samen, vergeleken op zes decimalen, want twee driehoeken die elkaar bij een rand raken zijn het regelmatig oneens in de laatste bit van een float.

Voor een leveringsbestand is dat geen bijzaak. De ongelaste vorm zou vier tot zes keer zoveel vertices in de buffer plaatsen en dus in de download, en het zou ook zachte schaduw breken, want een viewer die normalen middelt heeft gedeelde vertices nodig om over te middelen. Het resultaat is een GLB waarvan de geometrie zowel kleiner is als zich beter gedraagt dan een naïeve herschrijving zou opleveren.

Eén mesh, één primitive, één draw call

Alles wat in de STL gevonden wordt, wordt geschreven als één mesh met één primitive, want een STL heeft geen groepen om te bewaren. Dat is het goedkoopste model dat mogelijk is voor een renderer — één draw call, geen materiaalwissels — wat de juiste vorm is voor een onderdeel op een productpagina of in een previewvenster.

De primitive gebruikt overal uint32-indices en float32-posities. Smallere indextypes bestaan en zouden op een klein model wat besparen, maar een mesh boven 65.535 vertices heeft dan stilzwijgend een ander type nodig, wat een makkelijk te verprutsen voorwaarde is voor een paar kilobyte. De positie-accessor draagt `min` en `max` zoals de specificatie vereist, wat een viewer in staat stelt het model bij het laden te kaderen in plaats van ingezoomd op niets te openen.

De GLB versturen naar iemand zonder slicer

Dit is het stilletjes nuttige geval. Een collega, een klant of een klant moet een onderdeel zien en heeft er geen software voor — een STL sturen betekent uitleggen wat er geïnstalleerd moet worden, en een schermafbeelding sturen betekent dat ze het niet kunnen draaien. Een GLB opent in een browsergebaseerde viewer zonder installatie, en elke huidige telefoon en desktop kan er een renderen via een pagina.

Wat mee te sturen: de echte afmetingen, in een zin, want het bestand draagt ze niet en de viewer toont welke schaal je ook instelt. En een opmerking over oriëntatie als die ertoe doet. Twee regels context maken van een grijs object dat in een viewer zweeft een onderdeel waar iemand op kan reageren.

Hoe groot de GLB is naast de STL

Meestal aanzienlijk kleiner. De STL is vijftig bytes per driehoek zonder deling; de GLB slaat elke vertex eenmaal op als twaalf bytes en elke index als vier, dus een mesh waarvan de vertices elk door vijf of zes driehoeken gebruikt worden, comprimeert al aanzienlijk in geometrische zin voor er compressie wordt toegepast.

De gratis grens is 100 MB, wat ongeveer twee miljoen STL-driehoeken is. Ruim daarvoor wordt een model al ongemakkelijk om in een browser te laden — een paar honderdduizend driehoeken is een verstandige bovengrens voor iets dat een bezoeker op een telefoon opent. Is de STL dichter dan dat, decimeer dan voor het omzetten; gltf-transform kan ook Draco-compressie op de resulterende GLB toepassen, al kan een Draco-gecomprimeerd bestand op deze site niet worden teruggezet.

Waar de STL wordt omgezet, en wat de machine verlaat

Niets. De omzetting is gewoon JavaScript in dit tabblad, zonder WebAssembly-module om te downloaden, geen upload, geen account en geen dagelijkse limiet. Het netwerktabblad tijdens een omzetting is de controle.

Dat is het relevante punt voor een onderdeel dat voor een advertentie of klantbeoordeling wordt voorbereid, want het model is vaak nog onuitgebracht en vaak van iemand anders. Een omzetting die de geometrie nooit verzendt, haalt de vraag helemaal weg in plaats van hem met een privacyverklaring te beantwoorden.

Zo zet je STL naar GLB om

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

STL of GLB: wat er verandert

STL vergeleken met GLB
STLGLB
Volledige naamStereolithographyBinary glTF
Bestandsextensie.stl.glb
Mediatypemodel/stlmodel/gltf-binary
Voor het eerst gepubliceerd19872016
Uitgegeven door3D SystemsKhronos Group
SpecificatieglTF 2.0
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogen3MF, OBJ, PLYGLTF, OBJ

Het resultaat openen

Blender leest zowel STL als GLB, 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, GLB 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.

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

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

Van STL naar GLB: 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 GLB 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 GLB?

STL en GLB 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 GLB-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 Binary glTF normaal weergeeft.

Meer over deze formaten