Was bewirkt das Komprimieren einer GLB-Datei eigentlich?
Eine GLB zu komprimieren heißt, ihre Texturen und ihre Geometrie neu zu kodieren, sodass dasselbe Modell weniger Bytes belegt. Den größten Teil der Einsparung bringen die Texturen: In acht Khronos-Beispielmodellen, die wir vermessen haben, machten die Bilder in jeder Datei, die überhaupt Texturen enthielt, den Großteil aus. Dieser GLB-Kompressor verkleinert diese Bilder, bereinigt die Geometrie und schreibt eine neue .glb – alles in Ihrem Browser.
Eine kleinere GLB lädt auf einer Produktseite schneller, bleibt unter den Upload-Limits von 3D-Plattformen und Marktplätzen und braucht auf Smartphones weniger Speicher. An Form, Materialien oder Animationen des Modells muss sich dafür nichts ändern.
Wo die Bytes in einer GLB stecken
Eine GLB enthält drei Arten von Daten: Texturen (die Bilder, die um das Modell gelegt werden), Geometrie (Eckpunktpositionen, Normalen und Dreieckslisten) und Animation. Texturen liegen als vollständige Bilddateien in der GLB, oft als PNGs mit 2048 × 2048 Pixeln – deshalb kann ein Modell mit nur wenigen Hundert Dreiecken trotzdem 8 MB wiegen. Öffnen Sie Ihre Datei im GLB-Viewer, um vor dem Komprimieren ihre Aufschlüsselung zu sehen.
Verlustfreie Bereinigung vs. verlustbehaftete Komprimierung
Manche Schritte ändern nichts Sichtbares: doppelte Daten entfernen, Materialien und Texturen löschen, die nirgends verwendet werden, und exakt identische Eckpunkte zusammenführen. Die größeren Einsparungen sind verlustbehaftet: kleinere Texturen, als WebP oder JPEG neu kodierte Texturen und Eckpunktpositionen, die mit weniger Bits gespeichert werden. Verlustbehaftet heißt nicht sichtbar schlechter, aber genau diesen Teil sollten Sie prüfen – dafür gibt es den Vorher/Nachher-Schalter.
GLB-Datei in 3 Schritten komprimieren
Ihre .glb oder .gltf ablegen
Klicken Sie auf „3D-Datei auswählen“ oder ziehen Sie eine .glb auf die Arbeitsfläche. Bei einer .gltf wählen Sie diese zusammen mit ihrer .bin-Datei und den Texturdateien aus oder ziehen den ganzen Ordner hinein; das Ergebnis ist immer eine einzelne .glb. Der Seitenbereich listet jede Textur mit Größe, Format und Bytes auf.
„Web“, „Kompatibel“ oder „Benutzerdefiniert“ wählen
„Web“ erzeugt die kleinste Datei für Browser, „Kompatibel“ hält die Datei frei von neuen Erweiterungen, und mit „Benutzerdefiniert“ legen Sie Texturgröße, Format und Qualität selbst fest. Die Texturtabelle zeigt, was aus jeder Textur wird, bevor Sie irgendetwas anklicken.
Vergleichen, dann herunterladen
Klicken Sie auf „GLB komprimieren“. Sobald die Komprimierung fertig ist, wechselt die Ansicht auf „Nachher“, und die Kamera bleibt, wo Sie sie gelassen haben. Drücken Sie B oder nutzen Sie den Vorher/Nachher-Schalter zum Vergleichen und klicken Sie dann auf „Komprimierte .glb herunterladen“.
Eine .glb auswählen oder eine .gltf samt ihren Dateien.
Die Voreinstellung passend zum nächsten Einsatzort des Modells wählen.
„Vorher“ und „Nachher“ vergleichen, dann herunterladen.
Texturen: Wo die meisten Bytes stecken
Jede Textur in einer GLB ist eine vollständige Bilddatei, und die GPU entpackt sie zu rohen Pixeln, sobald das Modell angezeigt wird: Eine Textur mit 2048 × 2048 Pixeln belegt ohne Mipmaps rund 16 MB Grafikspeicher, ganz gleich, wie klein ihr PNG war. Wenn Sie eine GLB komprimieren, entscheiden die Textureinstellungen also sowohl über die Downloadgröße als auch darüber, wie aufwendig das Modell darzustellen ist.
Texturen verkleinern: 4096, 2048, 1024 oder 512?
Halbiert man Breite und Höhe einer Textur, bleibt ein Viertel der Pixel übrig. Auf einer Webseite, wo ein Modell meist nur einen Teil des Bildschirms füllt, reichen für die meisten Produkte 1024 px; 2048 px lohnen sich für Hero-Aufnahmen und Nahansichten, und 512 px genügen für kleine Requisiten. Dieser GLB-Kompressor skaliert Texturen immer nur herunter, nie hoch, und behält ihr Seitenverhältnis bei. Um eine einzelne Textur von Hand zu skalieren, nutzen Sie Bild skalieren.
WebP vs. PNG vs. JPEG in einer GLB
PNG und JPEG gehören zu glTF selbst, daher liest sie jedes Programm, das GLB-Dateien öffnet. WebP ergibt meist die kleinsten Dateien, aber eine GLB, die es verwendet, deklariert die Erweiterung EXT_texture_webp, und das Programm, das sie öffnet, muss diese unterstützen. JPEG kann keine Transparenz speichern, deshalb behält dieses Tool eine Textur als PNG, sobald ihre Pixel nicht vollständig deckend sind. Die Vor- und Nachteile der Formate im Allgemeinen finden Sie unter PNG zu WebP.
Normal-Maps brauchen eine schonendere Komprimierung
Eine Normal-Map speichert Oberflächenrichtungen in ihren Farben, und die blockigen Artefakte, die eine verlustbehaftete Komprimierung hinterlässt, zeigen sich als Beleuchtungsfehler statt als Farbrauschen. Beide Voreinstellungen geben Normal-Maps eine höhere Mindestqualität (0,9). WebP und JPEG speichern Farbe außerdem mit reduzierter Auflösung, was in Normal-Maps etwas Präzision kostet, ebenso in Texturen, die Rauheit, Metallizität und Okklusion in getrennten Kanälen bündeln. Wenn diese Präzision wichtig ist, wählen Sie „Benutzerdefiniert“ und behalten das Originalformat bei.
Texturen mit Transparenz
Blätter, Decals und Glas sind oft auf einen Alphakanal angewiesen. WebP behält ihn; JPEG kann das nicht, daher wird eine transparente Textur, die eigentlich zu JPEG werden sollte, stattdessen als PNG gespeichert. In unseren Messungen behielten Lantern und ToyCar aus diesem Grund jeweils ein oder zwei Texturen als PNG.
Geometriekomprimierung: meshopt, Quantisierung und Draco
Geometrie ist meist der kleinere Teil einer GLB, doch bei dichten Meshes, Scans und animierten Figuren kann sie den Großteil der Datei ausmachen. Die Voreinstellung „Web“ komprimiert sie mit meshopt; die anderen Voreinstellungen lassen die Kodierung, wie sie ist, und bereinigen die Geometrie nur.
Was die meshopt-Komprimierung macht
meshopt ordnet zunächst Eckpunkte und Dreiecke so um, dass benachbarte Daten beieinanderliegen, speichert dann Positionen, Normalen und Texturkoordinaten als kleine Ganzzahlen statt als 32-Bit-Gleitkommazahlen (Quantisierung, deklariert als KHR_mesh_quantization) und packt das Ergebnis schließlich mit EXT_meshopt_compression. Im Browser lässt es sich sehr schnell dekodieren, und three.js, model-viewer und Babylon.js lesen es alle.
Eckpunkte verschmelzen und Duplikate entfernen
Exporter schreiben denselben Eckpunkt oft mehrfach, duplizieren ganze Accessors oder hinterlassen Materialien und Texturen, die nirgends verwendet werden. Identische Eckpunkte zusammenzuführen und ungenutzte Daten zu entfernen ist verlustfrei und läuft in jeder Voreinstellung; allein das sparte beim kleinen Fox-Modell 32 % ein.
Warum Draco-Modelle ihre Geometrie behalten
Draco ist eine weitere Erweiterung zur Geometriekomprimierung und packt oft dichter als meshopt. Um Draco wieder zu schreiben, braucht es den Draco-Encoder, und wenn wir die Geometrie dekodiert und ohne Draco gespeichert haben, wurde ein Test-Mesh 4- bis 13-mal größer. Nutzt eine GLB also bereits Draco, kodiert dieses Tool nur ihre Texturen neu und lässt alle anderen Bytes, die Draco-Geometrie eingeschlossen, genau so, wie sie waren. Die Ergebniskarte weist darauf hin, wenn das passiert ist.
Welche Voreinstellung sollten Sie wählen?
Bevor Sie Ihre GLB komprimieren, überlegen Sie, wo das Modell als Nächstes landet: Davon hängt die richtige Voreinstellung ab, denn die kleinsten Einstellungen setzen auf glTF-Erweiterungen, die nicht jedes Programm liest. Der Hinweis unter den Voreinstellungen nennt die Erweiterungen, die die aktuellen Einstellungen hinzufügen.
Für Web-Viewer: three.js, model-viewer, Babylon.js
Wählen Sie Web. Diese Voreinstellung skaliert Texturen auf höchstens 1024 px, speichert sie als WebP und komprimiert die Geometrie mit meshopt. Browserbasierte Viewer und Engines auf Basis von three.js oder Babylon.js lesen alle drei Erweiterungen, die sie verwendet, und die Dateien sind die kleinsten, die dieses Tool erzeugt: 48 % bis 98,8 % kleiner bei den Khronos-Beispielen.
Für Blender, Unity und Desktop-Viewer
Wählen Sie Kompatibel. Diese Voreinstellung behält Texturen bis 2048 px, schreibt deckende als JPEG und transparente als PNG und fügt überhaupt keine Erweiterungen hinzu. Desktop-Programme und die Importer von Game-Engines unterstützen WebP und meshopt uneinheitlich; eine Datei ohne diese Erweiterungen ist daher die sichere Wahl, wenn Sie die Software auf der anderen Seite nicht in der Hand haben.
Wann „Benutzerdefiniert“ sinnvoll ist
Mit „Benutzerdefiniert“ behalten Sie Texturen in Originalgröße, bewahren das Originalformat für präzise Datentexturen, heben oder senken die Qualität oder schalten meshopt ab. Die Texturtabelle aktualisiert sich bei jeder Änderung, sodass Sie sehen, was passieren wird, bevor Sie komprimieren.
Echte Ergebnisse mit Khronos-Beispielmodellen
Um zu zeigen, was Sie erwarten können, haben wir mit dieser Seite GLB-Dateien aus der Sammlung Khronos glTF Sample Assets komprimiert: acht Originale, in Chrome auf einem Desktop-Computer. Mit der Voreinstellung „Web“ wurden die acht Dateien im Durchschnitt um 86 % und im Median um 96 % kleiner; die größte Einsparung gab es bei Avocado, von 7,73 MB auf 0,09 MB, weil seine drei PNG-Texturen mit 2048 × 2048 Pixeln fast die ganze Datei ausmachten. Jedes Modell brauchte etwa eine Sekunde.
„Kompatibel“ spart weniger, weil es Texturen bei 2048 px belässt und auf WebP verzichtet, verkleinerte aber trotzdem vier der acht Modelle um 83 % bis 93 %. Am wenigsten sparten die Modelle mit der meisten Geometrie (ToyCar hat rund 109.000 Dreiecke) oder mit transparenten Texturen, die PNG bleiben.
Nachgemessen: Original vs. „Web“ vs. „Kompatibel“
| Modell | Original | Mit „Web“ | Mit „Kompatibel“ |
|---|---|---|---|
| Avocado | 7,73 MB | 0,09 MB (−98,8 %) | 0,57 MB (−92,6 %) |
| WaterBottle | 8,55 MB | 0,12 MB (−98,6 %) | 0,88 MB (−89,7 %) |
| BoomBox | 10,12 MB | 0,22 MB (−97,8 %) | 1,12 MB (−89,0 %) |
| Corset | 12,87 MB | 0,51 MB (−96,0 %) | 2,15 MB (−83,3 %) |
| Lantern | 9,12 MB | 0,36 MB (−96,0 %) | 5,49 MB (−39,8 %) |
| SheenChair | 3,93 MB | 0,97 MB (−75,3 %) | 1,72 MB (−56,3 %) |
| ToyCar | 5,17 MB | 1,30 MB (−74,9 %) | 3,92 MB (−24,2 %) |
| Fox | 0,16 MB | 0,08 MB (−48,0 %) | 0,11 MB (−31,9 %) |
Macht die Komprimierung mein Modell kaputt?
Das Komprimieren einer GLB ändert, wie die Daten gespeichert sind, nicht, was das Modell ist. Meshes, Materialien, Knotennamen, Animationen und andere glTF-Funktionen bleiben erhalten; prüfen sollten Sie, welche Erweiterungen die neue Datei voraussetzt und wie die Texturen aus der Nähe aussehen.
Erweiterungen, die die Ausgabe voraussetzen kann
Die Voreinstellung „Web“ kann EXT_texture_webp, EXT_meshopt_compression und KHR_mesh_quantization hinzufügen, jeweils als erforderlich markiert, damit ein Programm, das sie nicht lesen kann, das meldet, statt ein fehlerhaftes Modell anzuzeigen. „Kompatibel“ fügt keine hinzu. Eine GLB, die bereits andere Erweiterungen nutzte, behält sie; erkennt dieses Tool eine davon nicht, kodiert es nur noch die Texturen neu, damit nichts umgeschrieben wird, was es nicht versteht.
Animationen, Skins und Morph-Targets
Animationen, Figuren mit Skinning und Morph-Targets überstehen die Komprimierung. meshopt komprimiert auch die Keyframes von Animationen, und die Quantisierung behält genug Präzision für Modelle normaler Größe; bei sehr großen Szenen oder technischen Modellen in Millimetern vergleichen Sie das Ergebnis mit eingeschaltetem Drahtgitter oder schalten meshopt unter „Benutzerdefiniert“ ab.
KTX2-Texturen bleiben, wie sie sind
Texturen, die bereits als KTX2 (KHR_texture_basisu) gespeichert sind, sind für die GPU komprimiert und bleiben im Speicher klein. Dieses Tool lässt sie unverändert, statt sie wieder in gewöhnliche Bilder umzuwandeln.
Warum Ihre GLB nach dem Komprimieren immer noch groß ist
Wenn Sie eine GLB komprimieren und die Einsparung gering ausfällt, zeigt der Seitenbereich meist, warum. Vielleicht ist die Datei bereits komprimiert: Texturen, die schon kleine WebP- oder JPEG-Bilder sind, schrumpfen selten weiter, und das Tool behält eine Originaltextur immer dann, wenn die Neukodierung sie nicht verkleinert. Wäre das Ergebnis überhaupt nicht kleiner, gibt es bewusst nichts zum Herunterladen.
Dichte Scans und Photogrammetrie
Gescannte Objekte und Photogrammetrie-Modelle bringen oft Hunderttausende oder Millionen Dreiecke mit, und dann füllt die Geometrie die Datei, nicht die Texturen. meshopt hilft, doch die eigentliche Lösung sind weniger Dreiecke: Reduzieren Sie das Mesh in einem 3D-Editor, etwa mit dem Decimate-Modifier von Blender, und komprimieren Sie das Ergebnis dann hier.
.gltf mit externen Dateien komprimieren
Eine .gltf hält Geometrie und Texturen in separaten Dateien. Wählen Sie alle aus oder ziehen Sie den Ordner hinein, und das Tool packt alles in eine komprimierte .glb. Eine .gltf, die Draco nutzt, muss zuerst als .glb exportiert werden, weil Draco-Daten nur innerhalb einer GLB unverändert erhalten bleiben.
Die Entsprechung für die Kommandozeile
Diese Seite führt die Open-Source-Bibliothek glTF Transform in Ihrem Browser aus. Wenn Sie viele Dateien in einer Build-Pipeline komprimieren möchten, erledigt deren Kommandozeilen-Tool eine ähnliche Aufgabe, zum Beispiel gltf-transform optimize input.glb output.glb --compress meshopt --texture-compress webp --texture-size 1024.
Ihr Modell verlässt Ihr Gerät nie
Viele Online-GLB-Kompressoren laden die Datei auf einen Server hoch, und manche begrenzen, wie viele Dateien Sie pro Woche komprimieren dürfen. Hier läuft die ganze Arbeit in einem Hintergrund-Worker in Ihrem Browser-Tab: Das Modell wird von Ihrer Festplatte gelesen, im Arbeitsspeicher komprimiert und direkt als Download wieder gespeichert. Das zählt bei unveröffentlichten Produkten, Kundenprojekten und allem, was unter eine Geheimhaltungsvereinbarung (NDA) fällt. Schließen Sie den Tab, und nichts bleibt zurück. Weitere Tools, die genauso arbeiten, finden Sie unter alle unsere kostenlosen Tools.