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 = 24uint32 length // Gesamtlänge der Datei56// Chunk 0 (Pflicht)7uint32 chunkLength8uint32 chunkType = 0x4E4F534A // "JSON"9ubyte[] chunkData // UTF-8, mit Leerzeichen (0x20) auf 4 Byte aufgefüllt1011// Chunk 1 (optional)12uint32 chunkLength13uint32 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 …