GLB naar GLTF omzetten

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.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Opnieuw opgebouwd GLTF werkt anders dan GLB. 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.

Wat deze omzetting van GLB naar glTF werkelijk doet

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.

Waarom een GLB en een glTF hetzelfde formaat zijn in ander jasje

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.

Het glTF-bestand dat je terugkrijgt, en hoe de buffer wordt opgeslagen

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.

Alles wat een GLB bevat dat deze glTF niet zal hebben

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.

Node-transformaties worden vastgezet als een GLB glTF wordt

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.

GLB-bestanden die deze omzetter weigert, en wat de melding betekent

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.

Het resultaat lezen: wat de glTF-JSON je over de GLB vertelt

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.

Wanneer je je GLB helemaal niet naar glTF moet omzetten

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.

Groottelimieten en waar een GLB hier verwerkt wordt

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.

Zo zet je GLB naar GLTF om

  1. Sleep je GLB-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.

GLB of GLTF: wat er verandert

GLB vergeleken met GLTF
GLBGLTF
Volledige naamBinary glTFGL Transmission Format
Bestandsextensie.glb.gltf
Mediatypemodel/gltf-binarymodel/gltf+json
Voor het eerst gepubliceerd20162015
Uitgegeven doorKhronos GroupKhronos Group
SpecificatieglTF 2.0glTF 2.0
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenOBJOBJ

Wat behouden blijft

De animatie blijft. GLB en GLTF dragen allebei meerdere frames, dus het resultaat beweegt nog steeds.

Het resultaat openen

Blender, three.js en Babylon.js lezen zowel GLB als GLTF, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.

Waarvoor elk formaat bedoeld is

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.

Van GLB naar GLTF: veelgestelde vragen

Wordt mijn GLB-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 GLB 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 GLB naar GLTF?

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.

Blijft de animatie behouden van GLB naar GLTF?

De animatie blijft. GLB en GLTF dragen allebei meerdere frames, dus het resultaat beweegt nog steeds.

Meer over deze formaten