GLTF

Was ist eine GLTF-Datei?

Das 3D-Format fürs Web. Geometrie, Material und Animation in einer JSON-Datei.

Was GLTF ist

GLTF ist ein reines Textformat, das sich in jedem Editor öffnen lässt. 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 .gltf, der volle Name GL Transmission Format. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.

Woher GLTF kommt

Khronos Group hat es 2015 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.

Die Spezifikation ist öffentlich

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.

Es wird nichts weggeworfen

GLTF 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.

Es kann mehr als ein Einzelbild halten

GLTF 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.

Was GLTF öffnet

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.

Im Browser öffnen

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.

Es ist ein Arbeitsformat

GLTF 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.

Gebaut für die Auslieferung, nicht für die Modellierung

Jedes andere 3D-Format auf dieser Seite ist entweder ein Austauschformat für Modellierprogramme oder ein Erfassungsformat für Scanner. glTF ist keins von beidem: Die Khronos Group entwarf es 2015, um eine fertige Szene an einen Renderer zu liefern, in einer Form, die eine Grafikkarte fast unmittelbar verwenden kann.

Genau das meinten die Entwickler mit dem Beinamen JPEG des 3D. Niemand bearbeitet ein JPEG im Fotostudio; es ist das, was am Ende herauskommt. glTF trägt Geometrie, Materialien, Texturen, Animationen, Kameras und Lichter so angeordnet, dass ein Betrachtungsprogramm sie mit minimalem Zwischenschritt laden und zeichnen kann.

Oben JSON, darunter binäre Daten

Eine .gltf-Datei ist JSON und lesbar — öffnet man sie, sieht man die Knotenhierarchie, die Materialdefinitionen und die Animationskanäle in benannten Feldern. Diese Lesbarkeit ist ein echter Vorteil, wenn etwas nicht stimmt.

Was im JSON nicht steckt, ist die Masse. Eckpunktpositionen, Normalen, Texturkoordinaten und Animations-Keyframes liegen in einem separaten Binärpuffer, meist einer .bin-Datei daneben, und Texturen sind gewöhnliche PNG- oder JPEG-Dateien, auf die per Pfad verwiesen wird. Ein Modell ist damit eher ein Ordner als eine Datei — genau das Problem, das GLB löst.

Materialien sind physikalisch basiert, und daran liegt die stimmige Optik

glTF nutzt ein Metallic-Roughness-Materialmodell: Jede Oberfläche gibt an, wie metallisch sie ist, wie rau, ihre Grundfarbe, und optional Normal-, Occlusion- und Emissive-Karten. Jeder moderne Renderer versteht dieses Vokabular, sodass dasselbe Modell in einem Browser, einer Spiel-Engine, einem Augmented-Reality-Betrachter am Telefon und einem Produktkonfigurator konsistent aussieht.

Das ist der schärfste Unterschied zu OBJ, dessen begleitende MTL-Datei ein Beleuchtungsmodell aus den frühen Neunzigerjahren beschreibt, ohne Platz für Rauheit oder Metallizität. Aus einem Modellierprogramm heraus nach glTF exportiert, bleibt die Materialbeschreibung erhalten; nach OBJ exportiert geht sie in jedem nennenswerten Sinn verloren. Der Umwandler auf dieser Seite überträgt davon allerdings nur Geometrie — Eckpunkte und Dreiecke, sonst nichts —, und das gilt für jedes Format-Paar hier, auch für den Weg nach glTF: Materialien, Farben, Texturen und Animation kommen bei keiner der hier angebotenen Umwandlungen mit.

Animation und Rigging reisen mit

glTF trägt Skelettanimation: eine Gelenkhierarchie, Skinning-Gewichte und keyframebasierte Kanäle für Verschiebung, Drehung und Skalierung. Es trägt außerdem Morph-Targets für Mimik und Formüberblendungen.

Nichts sonst in gängiger Nutzung im Web tut das. OBJ hat gar keine Animation, STL und PLY ebenso wenig, und FBX hat davon reichlich, ist aber proprietär und undokumentiert. Muss sich ein Modell auf einer Webseite bewegen, ist glTF nicht eine der Optionen — es ist die einzige.

Wo man ihm begegnet

Zuerst in Web-Betrachtern: three.js, Babylon.js und das model-viewer-Element nehmen glTF nativ entgegen, und der weit überwiegende Teil des 3D-Contents auf Webseiten ist darunter eine glTF-Datei. Produktkonfiguratoren und E-Commerce-Betrachter sind die kommerzielle Anwendung.

Danach Augmented Reality auf Android, das glTF direkt über Scene Viewer nutzt, sowie Modellbibliotheken — Sketchfab, Poly Haven, die eigenen Beispielmodelle von Khronos —, die darin veröffentlichen, weil es das Format ist, das überall ohne Umwandlung funktioniert. Blender, Unity, Unreal, Godot, Substance und Cinema 4D importieren und exportieren es allesamt.

Erweiterungen, vor allem Draco

Die Spezifikation kennt einen definierten Erweiterungsmechanismus, und zwei zählen in der Praxis. Draco komprimiert die Geometrie, oft auf ein Fünftel bis ein Zehntel ihrer Größe, was für eine Webseite den Unterschied zwischen sofortigem Laden und sichtbarem Warten ausmacht. KTX2 mit Basis Universal tut dasselbe für Texturen und lässt die Grafikkarte sie zusätzlich komprimiert im Speicher halten.

Der Haken ist, dass eine Erweiterung, die ein Betrachter nicht implementiert, die Datei dort unbrauchbar macht. Draco-komprimiertes glTF öffnet sich in manchen älteren Werkzeugen nicht, weshalb es eine Optimierung für den Auslieferungszeitpunkt ist und nichts, das man auf ein Master-Modell anwendet. Die unkomprimierte Fassung behalten und erst beim Ausliefern komprimieren.

Umwandeln, hin und zurück

Aus OBJ, STL oder PLY konvertiert die Geometrie sauber, und Materialien gibt es größtenteils gar nicht erst umzuwandeln — ein bloßes Netz kommt als bloßes Netz mit einem Standard-Grau an, und alles, was aussehen soll wie etwas, braucht danach zugewiesene Materialien.

Nach OBJ oder STL ist Verlust proportional zu dem zu erwarten, was die glTF getragen hat. Animation, Rigging, Kameras, Lichter, die Szenenhierarchie und die physikalisch basierten Materialien haben in keinem der beiden eine Entsprechung, und STL verwirft zusätzlich Texturkoordinaten und Farbe. Nur dann nach unten umwandeln, wenn tatsächlich eines dieser Formate gebraucht wird — ein 3D-Drucker für STL, ein älteres Modellierwerkzeug für OBJ.

Die Eckdaten auf einen Blick

Kennungen und Herkunft des Formats GLTF.
Endung.gltf
Medientypmodel/gltf+json
Herausgegeben vonKhronos Group
Erstmals veröffentlicht2015
SpezifikationglTF 2.0