GLB-Optimizer
Mach eine GLB- oder glTF-Datei kleiner und günstiger zu rendern. Wirf eine hinein und wähle, was passieren soll: Daten entfernen, die nichts referenziert, Geometrie verschweißen und vereinfachen, Meshes zusammenlegen, um Draw Calls zu sparen, Texturen skalieren und neu kodieren und das Ganze mit Meshopt komprimieren. Du bekommst nach jedem Schritt eine Größenangabe, eine Vorschau des Ergebnisses vor der Entscheidung, und nichts wird hochgeladen. Optimieren und Vorschau sind kostenlos, der Download des Ergebnisses gehört zum Standard- und Pro-Tarif.
Nur einen Bruchteil der Bytes ausliefern.
Entferne alles, worauf nichts verweist, verschweiße und vereinfache die Geometrie, kodiere die Texturen neu und packe dann alles mit Meshopt. Nach jedem Schritt siehst du die Dateigröße und kannst das Ergebnis vor der Übernahme in der Vorschau prüfen.
84% smaller. Our sample character with 10 clips baked in.
Meshopt, Quantize und warum es hier kein Draco gibt
Meshopt (EXT_meshopt_compression) ist die Voreinstellung und die richtige Wahl für alles, was im Browser läuft. Es erreicht Größen vergleichbar mit Draco und dekodiert um ein Mehrfaches schneller, was zählt, weil das Dekodieren stattfindet, während dein Spieler auf einen Ladebildschirm starrt. three.js, Babylon.js und PlayCanvas lesen es alle, und der Decoder ist klein genug, um nicht ins Gewicht zu fallen.
Quantize braucht gar keine Erweiterung. Es speichert Positionen, Normalen und UVs in kleineren Zahlentypen, was jeder glTF-Loader ohne Decoder liest. Die Ersparnis ist bescheidener, aber die Datei bleibt schlichtes glTF, und das ist das Sicherste, was du einer Pipeline übergeben kannst, die du nicht kontrollierst.
Draco-Dateien öffnen hier problemlos, du kannst also eine dekomprimieren oder auf Meshopt umstellen. Draco zu schreiben ist eine andere Sache, und dieses Tool tut es nicht. Der einzige Draco-Encoder, der im Browser läuft, ist ein asm.js-Build, der schon zum Initialisieren Minuten braucht, und die gepflegten Pakete liefern nur Node-Builds. Einen Button auszuliefern, der deinen Tab einfriert, wäre schlimmer, als ihn nicht zu haben. Wenn du ausdrücklich Draco-Ausgabe brauchst, erledigt das die glTF-Transform CLI auf deinem Rechner in einem Befehl:
npx @gltf-transform/cli draco input.glb output.glbWas jeder Schritt tatsächlich macht
Ungenutzte Daten entfernen führt Prune und Dedup aus. Exporter lassen regelmäßig Materialien zurück, die niemand nutzt, doppelte Texturen unter zwei Namen und leere Knoten. Bei einer Datei, die durch zwei oder drei Werkzeuge gegangen ist, holt allein das oft ein spürbares Stück heraus, und es kann das Aussehen des Modells nicht verändern.
Vertices verschweißen führt Vertices zusammen, die Position und Normale teilen, und macht aus einer Dreieckssuppe ein indiziertes Mesh. Die meisten Exporter tun das bereits, die anderen lassen dich für drei Kopien jeder geteilten Ecke zahlen.
Meshes nach Material zusammenlegen ist die Lösung gegen Draw Calls. Besteht dein Modell aus zweihundert getrennten Objekten, die alle ein Material nutzen, macht die GPU zweihundert Dinge statt einem. Das Zusammenlegen plättet die Hierarchie, deshalb ist es standardmäßig aus: Bewegt dein Spiel einzelne Teile oder ist das Modell gerigt, brauchst du diese Hierarchie.
Geometrie vereinfachen dezimiert das Mesh mit dem Meshopt-Simplifier auf den von dir gesetzten Dreiecksanteil. Das ist der richtige Hebel für gescannte oder CAD-Modelle, die mit Hunderttausenden Dreiecken ankommen, die niemand bestellt hat. Unter etwa 40 % beginnt es bei organischen Formen sichtbar zu werden, bei harten Oberflächen weniger.
Animations-Keyframes ausdünnen tastet Animationsspuren neu ab und verwirft Keyframes, die auf einer Geraden zwischen ihren Nachbarn liegen. Bei einem Clip, der mit 60 fps aus einem Werkzeug exportiert wurde, das jedes Frame gebacken hat, kann das der Großteil der Datei sein.
Texturen skaliert und kodiert neu. WebP ist etwa ein Drittel so groß wie das entsprechende PNG, und jeder aktuelle Browser liest es. Eine Begrenzung auf 1024 ist bei einem Spielmodell meist unsichtbar und oft der einzelne größte Gewinn beim Download.
Downloadgröße ist nicht dasselbe wie Speicher
Kompression verkleinert die Datei. Sie ändert nichts an dem Videospeicher, den die Texturen nach dem Upload belegen, denn JPEG, PNG und WebP werden auf der GPU alle zu rohen Pixeln entpackt. Eine Textur mit 2048×2048 belegt rund 22 MB im VRAM, egal ob sie als 4 MB oder 200 KB heruntergeladen wurde.
Wenn dir der GLB-Viewer sagt, dass der Texturspeicher dein Problem ist und nicht die Dateigröße, ist die Lösung KTX2, das bis in den Speicher GPU-komprimiert bleibt. Beides ergänzt sich: KTX2 für das, was die GPU hält, Meshopt für das, was das Netz überträgt.
Häufige Fragen
Wie komprimiere ich eine GLB-Datei?
Zieh sie oben hinein, lass die Voreinstellungen stehen und klick auf Optimieren. Die Voreinstellungen räumen ungenutzte Daten weg, verschweißen Vertices und wenden Meshopt-Kompression an, die sichere Kombination für ein Web-Spiel. Die Liste pro Schritt zeigt, woher die Ersparnis kam.
Wie viel kleiner wird meine Datei?
Das hängt ganz davon ab, was drin ist. Ein meshlastiges Modell ohne Kompression verliert mit Meshopt oft 60 bis 80 Prozent. Eine Datei, die vor allem aus PNG-Texturen besteht, bewegt sich kaum, bis du diese nach WebP wandelst. Eine Datei, die vor allem Animationsdaten enthält, reagiert auf das Ausdünnen von Keyframes und sonst nichts. Die Aufschlüsselung pro Schritt sagt dir, welcher Fall vorliegt.
Beschädigt das Optimieren das Modell?
Ungenutzte Daten entfernen, Verschweißen, Keyframes ausdünnen und Meshopt-Kompression sind optisch allesamt verlustfrei. Vereinfachung ist es nicht: Sie entfernt Dreiecke, und das sieht man bei aggressiven Einstellungen. Texturen zu verkleinern und nach JPEG zu wandeln ist ebenfalls verlustbehaftet. Die Vorschau zeigt die tatsächliche Ausgabe, du kannst also vor dem Herunterladen hinsehen.
Öffnen Unity oder Godot das Ergebnis?
Die Meshopt-Unterstützung hängt vom Importer und seiner Version ab. Muss die Datei also in eine Engine statt in einen Browser, wähle Quantize, das keine Erweiterung braucht und überall funktioniert. Meshopt ist die bessere Wahl, wenn das Ziel eine Webseite ist.
Kann es eine bereits komprimierte Datei öffnen?
Ja. Mit Draco und Meshopt komprimierte Eingaben werden beim Laden dekodiert, du kannst also eine Draco-Datei dekomprimieren, auf Meshopt umstellen oder mit anderen Einstellungen neu komprimieren.
Wird mein Modell hochgeladen?
Nein. Die gesamte Pipeline läuft in einem Web Worker in deinem Browser, Encoder inklusive. Sobald die Seite geladen ist, funktioniert sie offline.