Das „JPEG für 3D“

📦glTF zerlegt – am echten Modell

glTF 2.0 (GL Transmission Format) ist der offene Khronos-Standard für 3D-Szenen im Web. Es gibt ihn als.gltf (JSON + separate .bin- und Bilddateien) oder als.glb – alles in einer Binärdatei. Hier wird die GLB-Datei der Ferienwohnung direkt im Browser Byte für Byte gelesen.
GLB-Aufbau laut Spezifikation
1// GLB = 12 Byte Header + Chunks (alle Zahlen uint32, little-endian)
2uint32 magic = 0x46546C67 // "glTF"
3uint32 version = 2
4uint32 length // Gesamtlänge der Datei
5
6// Chunk 0 (Pflicht)
7uint32 chunkLength
8uint32 chunkType = 0x4E4F534A // "JSON"
9ubyte[] chunkData // UTF-8, mit Leerzeichen (0x20) auf 4 Byte aufgefüllt
10
11// Chunk 1 (optional)
12uint32 chunkLength
13uint32 chunkType = 0x004E4942 // "BIN\0"
14ubyte[] chunkData // mit Nullbytes auf 4 Byte aufgefüllt
Warum „JPEG für 3D“?
Wie JPEG für Fotos ist glTF ein Auslieferungsformat, kein Arbeitsformat: Es speichert, was ein Renderer braucht (Geometrie, PBR-Materialien, Szenengraph, Animationen, Kameras) – nicht die Bearbeitungshistorie aus Blender.
GPU-fertige Daten
Die Zahlen im BIN-Chunk haben bereits das Format, das WebGL erwartet (Float32, Uint16/Uint32). Der Loader muss sie nicht umrechnen, sondern reicht Ausschnitte des ArrayBuffers direkt an gl.bufferData.
Erweiterungen
Über extensionsUsed kommen Zusatzfunktionen hinzu, z. B. KHR_draco_mesh_compression (Geometriekompression), KHR_texture_basisu (KTX2-Texturen) oder – wie hier – KHR_materials_specular.
apartment.glb wird geladen und zerlegt …