Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
GLB
glTF mit eingepackten Texturen. Eine Datei statt eines Ordners voller Abhängigkeiten.
GLB
GLB ist ein Binärformat, das nur einem Programm etwas sagt, das es kennt. Es speichert Formen und Koordinaten statt Bildpunkte und bleibt deshalb in jeder Größe scharf — ein Logo auf Plakatgröße verliert nichts. Eingesetzt wird es für das Web und die Weitergabe fertiger Dateien.
Die Endung lautet .glb, der volle Name Binary glTF. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.
Khronos Group hat es 2016 veröffentlicht. Die Spezifikation ist glTF 2.0.
Das Alter ist aus einem praktischen Grund interessant: je älter ein Format, desto mehr Programme hatten Zeit, es zu lernen.
Sie ist vollständig veröffentlicht, das Format lässt sich also aus dem Dokument umsetzen statt durch Nachsehen. Deshalb taucht es in so vielen Programmen auf, und deshalb gehen Dateien von vor zwanzig Jahren heute noch auf. Veröffentlicht heißt allerdings nicht lizenzfrei: Wo ein Format einen Codec einpackt, ist die Patentfrage eine eigene, die der Standard nicht mitbeantwortet.
GLB speichert seinen Inhalt exakt. Erneutes Speichern ändert nichts, es lässt sich also beliebig oft öffnen, bearbeiten und wieder ablegen, ohne dass sich Schaden ansammelt — genau das macht es zu einem Arbeitsformat und nicht zu einem Ausgabeformat.
GLB kann eine Animation speichern statt eines stehenden Bildes. Das ist vor dem Umwandeln wichtig: Ein Ziel, das nur ein Bild hält, behält das erste und lässt den Rest fallen — meist ohne es zu sagen.
Blender, three.js und Babylon.js lesen es, und die meisten Programme derselben Art ebenfalls.
Wenn eine Datei nicht aufgeht, liegt es selten am Format — häufiger daran, dass das Programm älter ist als das Format. Die Umwandlung in etwas Älteres ist der verlässliche Weg daran vorbei, und dafür gibt es den Rest dieser Website.
Kein Browser liest es.
Das ist der häufigste Grund, es umzuwandeln: nicht dass das Format schlecht wäre, sondern dass die Stelle, an der die Datei erscheinen soll, es nicht lesen kann.
GLB ist zum Öffnen und Ändern gedacht. Behalte die Datei in diesem Format, solange die Arbeit läuft, und exportiere daraus, wann immer eine fertige Fassung gebraucht wird.
GLB ist glTF, verpackt in einen einzigen Binärcontainer: die JSON-Szenenbeschreibung, der Geometriepuffer und jede Textur, in einer Datei mit kleinem Header. Nichts kommt hinzu und nichts fällt weg — eine GLB entpackt ergibt genau die .gltf, die .bin und die Bilder, die sonst in einem Ordner lägen.
Das ist der ganze Unterschied, und der Grund, warum fast alles, was im Web als 3D veröffentlicht wird, eine GLB ist. Eine .gltf ohne ihre Begleitdateien ist eine Szenenbeschreibung, die auf nicht vorhandene Daten verweist — dieselbe Panne wie ein OBJ ohne dazugehörige MTL.
Ein 3D-Modell hat mehr lose Teile als die meisten Assets: einen Binärpuffer, eine Grundfarben-Textur, eine Normal Map, eine Roughness Map, eine Occlusion Map, eine Emissive Map. Ein einzelnes Objekt kann acht Dateien sein, eine Szene mehrere Dutzend.
Eine Datei beseitigt eine ganze Fehlerklasse — eine fehlende Textur, einen kaputten relativen Pfad, einen Ordner, der eine Ebene zu weit oben gezippt wurde. Sie spart zudem Netzwerk-Roundtrips: Ein Browser, der eine GLB lädt, stellt eine Anfrage, wo das .gltf-Äquivalent acht stellt, und auf einer mobilen Verbindung ist der Unterschied bei der Zeit bis zum ersten Bild größer als der Unterschied in Byte.
Auf Android nimmt Scene Viewer eine GLB entgegen, ebenso das model-viewer-Element, das die meisten Seiten für 3D verwenden. Ein Telefon auf eine Produktseite gerichtet, und das Modell, das im Raum erscheint, stammt aus genau so einer Datei.
iOS ist die Ausnahme, die man kennen sollte: Apples Quick Look verwendet USDZ, ein eigenes Format, weshalb eine Website, die AR auf beiden Plattformen anbieten will, eine GLB und eine USDZ nebeneinander veröffentlicht. Das model-viewer-Element nimmt beide entgegen und wählt je nach Plattform, weshalb Produktseiten zwei Dateien statt einer mitführen.
Texturen dominieren, nicht die Geometrie. Ein Modell mit vier 4K-Texturen ist dreißig Megabyte, bevor überhaupt etwas anderes gezählt wird, und sie auf 1K oder 2K zu reduzieren kostet meist nichts Sichtbares bei der Größe, in der das Modell tatsächlich angezeigt wird. Das zuerst erledigen.
Dann Draco für das Netz, das die Geometrie häufig auf ein Fünftel bis ein Zehntel bringt, und KTX2 mit Basis Universal für die Texturen, wodurch die Grafikkarte sie zusätzlich komprimiert im Speicher halten kann, statt sie erst auszupacken. Zusammen machen beide aus einem vierzig Megabyte großen Export routinemäßig etwas unter drei — beides sind Erweiterungen, ein Betrachter, der sie nicht implementiert, kann die Datei dann nicht mehr öffnen, sie gehören also ans Ende der Pipeline und nicht in die Arbeitsdatei.
Bearbeiten und Nachschauen. Eine .gltf ist lesbares JSON, ein falscher Materialwert oder ein falsch skalierter Knoten lässt sich im Texteditor finden und beheben, und eine Versionsverwaltung kann einen sinnvollen Unterschied zwischen zwei Ständen anzeigen.
Eine GLB ist undurchsichtig. Jede Änderung bedeutet Entpacken, Bearbeiten und Neupacken, und ein Repository voller GLB-Dateien speichert bei jedem Commit ein komplett neues Binärpaket. Die sinnvolle Arbeitsweise ist dieselbe wie überall sonst: die .gltf mit ihren Assets als Arbeitsfassung behalten und die GLB als Build-Schritt für die Auslieferung erzeugen.
Die Umwandlung auf dieser Seite kennt genau ein Merkmal eines Modells: Geometrie, also wo die Dreiecke liegen. Materialien, Texturen, UV-Koordinaten, Normalen, Vertexfarben, Kameras, Lichter, Animationen, Skinning und die Szenenhierarchie selbst haben in der internen Darstellung keinen Platz und gehen bei jeder Umwandlung verloren, in welche Richtung auch immer.
Zwei Einschränkungen betreffen speziell den Umgang mit glTF und GLB als Quelle: Eine .gltf, die auf eine externe .bin verweist, wird abgelehnt — stattdessen die GLB verwenden, die alles in einer Datei trägt. Und Draco-komprimierte Dateien werden nicht gelesen, weil die hier eingesetzten Werkzeuge diese Kompression nicht dekodieren; eine für das Web mit Draco verkleinerte Datei muss vor der Umwandlung wieder in ihre unkomprimierte Form gebracht werden.
GLB und glTF wandeln in beide Richtungen verlustfrei ineinander um, weil es dieselben Daten sind, nur anders verpackt — auf dieser Seite ebenso wie überall sonst. Alles, was eines liest, liest auch das andere, und die Umwandlung ist Ein- oder Auspacken statt Übersetzen.
Von OBJ, FBX oder einem Modellierprogramm braucht das Material meist Nacharbeit: Das physikalisch basierte Vokabular, das GLB verwendet, hat in OBJs MTL keine Entsprechung, ein importiertes Modell kommt also grau und geometrisch korrekt statt texturiert an. Nach STL für den 3D-Druck fällt alles außer der Form weg — Materialien, Texturen, Animation, die Szenenhierarchie —, und das Netz braucht anschließend meist eine Reparatur, bevor ein Slicer es akzeptiert.
| Endung | .glb |
|---|---|
| Medientyp | model/gltf-binary |
| Herausgegeben von | Khronos Group |
| Erstmals veröffentlicht | 2016 |
| Spezifikation | glTF 2.0 |