Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
Hier zet je GLB 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.
Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.
Ze worden een voor een omgezet en samen in één ZIP gedownload.
GLB naar GLTF
Ze leest de geometrie uit de GLB en schrijft daaromheen een nieuwe glTF. Dat is een heropbouw, geen herverpakking. Tools die herverpakken — gltf-pipeline met --binary=false, of gltf-transform — houden het oorspronkelijke document intact en verplaatsen alleen de buffer uit de binaire container, zodat materialen, textuurverwijzingen en animatiekanalen letterlijk behouden blijven.
Hier niet. De omzetter loopt door de scenegraaf, haalt puntposities en driehoeksindices eruit, en bouwt een nieuw document met één mesh per primitief en één node per mesh. Wil je de baseColorFactor bewerken en terugopslaan, dan is dit het verkeerde gereedschap en gltf-transform het juiste. Wil je zien wat er in het bestand zit, lees dan verder.
Beide zijn glTF 2.0, de Khronos Group-specificatie gepubliceerd in juni 2017 met de binaire container er meteen bij. Een .gltf is JSON, met de vertexdata in een .bin-bestand ernaast of ingesloten als data-URI. Een .glb is dezelfde JSON met dezelfde buffer, samengevoegd in één binair bestand achter een header van twaalf bytes.
Binnen een GLB staat de inhoud in blokken: een JSON-blok en een binair blok, elk opgevuld tot een grens van vier bytes. Dat is het volledige verschil tussen de twee extensies. Er verandert niets aan het model tussen die twee — precies waarom een omzetter die het model herbouwt, zoals deze, méér doet dan de extensiewijziging suggereert.
Altijd één bestand. De vertexdata wordt base64-gecodeerd in een data-URI op het enige buffer-item, dus er is geen los .bin-bestand om kwijt te raken en geen relatief pad dat breekt als je het bestand verplaatst.
Base64 kost vier tekens voor elke drie bytes, dus de ingesloten buffer is ongeveer 33 procent groter dan de binaire vorm die hij codeert, en de JSON eromheen is netjes ingesprongen bovenop dat alles. Voor een bestand dat je in een editor gaat openen is dat een goede ruil. Voor een bestand dat je aan een browser gaat serveren niet, en de GLB die je al hebt is dan het betere artefact.
De lijst is lang: PBR-materialen, basiskleur-, normaal-, occlusion-, emissive- en metallic-roughnesstexturen, samplers en afbeeldingen, UV-coördinaten, vertexnormalen, vertexkleuren, tangenten, morph targets, skins en gewrichten, animatiesamplers en -kanalen, camera’s, lichten, en elke extensie die het bestand declareert.
Wat overblijft zijn puntposities, driehoeksindices en meshnamen. Dat is geen beperking van het glTF-formaat, dat al het bovenstaande probleemloos kan bevatten; het is een beperking van deze omzetter, die geometrie overdraagt tussen zes formaten die het verder over vrijwel niets eens zijn.
Een glTF-scène plaatst regelmatig één mesh meerdere keren met verschillende matrices — vier wielen die naar één wielmesh verwijzen is het standaardvoorbeeld. De omzetter loopt door de scenegraaf, vermenigvuldigt elke node-matrix met die van de ouder, en past de resulterende wereldmatrix toe op de punten voordat ze weggeschreven worden.
Het gevolg: de vorm die je ziet klopt, de structuur niet. Vier wielen komen aan als vier meshes met vier sets punten op vier plekken, in plaats van één mesh vier keer geïnstantieerd.
Draco-gecomprimeerde geometrie stopt met een genoemde foutmelding in plaats van een kapot bestand. KHR_draco_mesh_compression slaat vertexdata op in een gecomprimeerde stream die een eigen decoder nodig heeft, en die is hier niet meegeleverd. Exporteer opnieuw vanuit Blender of gebruik gltf-transform met Draco uitgeschakeld.
Primitieven die geen driehoekslijsten zijn, worden stilzwijgend overgeslagen in plaats van verminkt. Een GLB met alleen lijngeometrie — een wireframe-overlay, een debugpad — levert de melding op dat er geen driehoeksgeometrie is gevonden, en dat klopt gewoon.
Open de uitvoer en de accessors-array beantwoordt de meeste vragen waarvoor mensen een GLB omzetten. Elke mesh draagt bij aan een VEC3-float-accessor voor posities en een SCALAR-unsigned-int-accessor voor indices; deel het aantal indices door drie voor het aantal driehoeken, en lees het aantal punten rechtstreeks van de positie-accessor af.
De POSITION-accessor draagt ook min en max, verplicht door de specificatie en gebruikt door viewers om het model in beeld te vatten. Die zes getallen zijn de bounding box, en het snelste bewijs dat een model dat iemand je stuurde duizend keer te groot is of nergens bij de oorsprong staat.
Gaat het bestand op een webpagina, bewaar dan de GLB. Hij is kleiner, is één verzoek, en three.js, Babylon.js en model-viewer laden hem rechtstreeks. Omzetten naar glTF voor levering maakt het bestand groter en, via deze omzetter, strippen de materialen die het de moeite van tonen waard maakten.
Moet je iets wijzigen en terugopslaan, gebruik dan gltf-transform of de glTF-exporter van Blender. Moet je snel een bestand inspecteren zonder iets te installeren, of een tekstartefact voor een diff, dan is deze pagina de kortste route.
De omzetting is gewone JavaScript in de pagina — geen WebAssembly-module om te downloaden, geen upload, geen wachtrij. Het gratis plafond is 100 MB, een zeer grote GLB naar de maatstaven van iets bedoeld voor het web.
Omdat de uitvoer zijn buffer als base64 in netjes ingesprongen JSON insluit, verwacht dat de .gltf groter is dan de .glb waar hij vandaan komt, zelfs nadat de materialen zijn weggevallen — de geometrie vormt bij de meeste modellen het gros van het bestand, en base64 zwelt dat verder op.
| GLB | GLTF | |
|---|---|---|
| Volledige naam | Binary glTF | GL Transmission Format |
| Bestandsextensie | .glb | .gltf |
| Mediatype | model/gltf-binary | model/gltf+json |
| Voor het eerst gepubliceerd | 2016 | 2015 |
| Uitgegeven door | Khronos Group | Khronos Group |
| Specificatie | glTF 2.0 | glTF 2.0 |
| Licentie | Open standaard | Open standaard |
| Stand van zaken | Actueel | Actueel |
| Opent in een browser | Geen browser | Geen browser |
| In plaats daarvan overwogen | OBJ | OBJ |
De animatie blijft. GLB en GLTF dragen allebei meerdere frames, dus het resultaat beweegt nog steeds.
Blender, three.js en Babylon.js lezen zowel GLB als GLTF, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.
GLB is het formaat van Khronos Group, verschenen in 2016. Het is vastgelegd in glTF 2.0, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.
GLTF komt van Khronos Group en stamt uit 2015, vastgelegd in glTF 2.0. Blender, three.js en Babylon.js lezen het formaat.
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.
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.
GLB 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.
De animatie blijft. GLB en GLTF dragen allebei meerdere frames, dus het resultaat beweegt nog steeds.