GLB vs glTF: na czym polega różnica?
GLB vs glTF to kwestia opakowania, nie danych: .gltf to czytelny JSON z osobnymi plikami, a .glb pakuje wszystko w jeden. Wysyłaj GLB, edytuj glTF, konwertuj bezstratnie.
- Specyfikacja Khronos glTF 2.0
- Zmierzone rozmiary plików
- Konwersja bezstratna
GLB vs glTF: krótka odpowiedź
glTF to otwarty format Khronos Group do dostarczania scen 3D do aplikacji i do sieci, a GLB nie jest osobnym formatem, tylko jego binarnym kontenerem. Specyfikacja definiuje oba: plik .gltf to JSON (typ MIME model/gltf+json), a plik .glb (model/gltf-binary) pakuje ten sam JSON plus jeden bufor binarny w jeden plik.
Pytanie GLB vs glTF dotyczy więc opakowania, nie jakości. Siatki, materiały PBR, tekstury, animacje, skóry i morph targety przetrwają identycznie w obu. Zmienia się liczba plików, którymi zarządzasz, możliwość otwarcia opisu sceny w edytorze tekstu oraz to, ile dodatkowego rozmiaru płacisz, jeśli osadzasz dane binarne w JSON-ie.
Dla prawie wszystkich odpowiedź brzmi GLB: jeden plik do wysłania, wysłania mailem lub wrzucenia do three.js, Babylon.js, <model-viewer>, Blendera, Unity lub Unreala. Wybierz glTF z osobnymi plikami, gdy debugujesz, ręcznie edytujesz wartości materiałów albo udostępniasz tekstury między wieloma modelami na CDN.
Tabela porównawcza GLB vs glTF
Oba to glTF 2.0, więc większość wierszy jest identyczna. Różnią się te wiersze, które decydują o wyborze GLB vs glTF w Twoim projekcie.
| GLB (.glb) | glTF (.gltf) | |
|---|---|---|
| Typ geometrii | Siatki trójkątów (także punkty i linie), hierarchia węzłów, skóry, morph targety | Identycznie |
| Kolor / tekstura | Tekstury PNG lub JPEG zapisane wewnątrz bloku binarnego; kolory wierzchołków | Tekstury jako osobne pliki obrazów albo data URI base64 w JSON-ie |
| Jednostki | Metry, układ prawoskrętny, +Y w górę, zgodnie ze specyfikacją | Identycznie |
| Materiały | Wbudowany PBR metallic-roughness; więcej przez rozszerzenia KHR | Identycznie |
| Rozmiar pliku | Najmniejsza forma jednoplikowa: 12-bajtowy nagłówek plus blok JSON i blok BIN | Ta sama łączna liczba bajtów co osobne pliki; około 33% więcej, jeśli dane binarne są osadzone jako base64 |
| Łatwość edycji | Binarny; do podejrzenia potrzebne narzędzie | JSON jest czytelny dla człowieka i daje się diffować w edytorze tekstu |
| Wsparcie programów | three.js, Babylon.js, model-viewer, Blender, Unity, Unreal, Godot, Windows 3D Viewer | Te same loadery; pliki zewnętrzne muszą zostać we właściwym folderze względnym |
| Zastosowanie w druku | To nie format do druku; UltiMaker Cura go otworzy, większość slicerów nie | To samo; do druku przekonwertuj na STL lub 3MF |
| Liczba plików | 1 | Od 1 do wielu (.gltf, .bin, obrazy) |
Źródło: specyfikacja Khronos glTF 2.0, sekcje o rozszerzeniach plików, układzie współrzędnych i jednostkach oraz formacie pliku GLB.
Jak z glTF powstaje plik GLB
Plik GLB zaczyna się od 12-bajtowego nagłówka: bajty magiczne glTF, wersja (2) i całkowita długość. Potem następują bloki. Pierwszy to blok JSON, dokładnie ten sam opis sceny, który zawierałby .gltf. Drugi to blok BIN, w którym mieszczą się pozycje wierzchołków, normalne, UV, indeksy, klatki kluczowe animacji i — zwykle — same obrazy tekstur.
Plik .gltf trzyma ten JSON jako osobny plik i odwołuje się do danych binarnych na jeden z dwóch sposobów: ścieżkami względnymi do plików .bin i obrazów leżących obok albo data URI, które kodują bajty base64 prosto w JSON-ie. Sama specyfikacja zauważa, że base64 zwiększa długość ładunku w bajtach o 33%, a jego dekodowanie kosztuje dodatkowe przetwarzanie. To główny powód, dla którego GLB istnieje.
- GLB: nagłówek + blok JSON + blok BIN, jeden plik
- glTF: JSON plus .bin i obrazy obok siebie
- glTF z osadzonymi danymi: jeden plik, ale base64 dodaje jedną trzecią
Rozmiar GLB vs glTF: jeden model spakowany na trzy sposoby
Wzięliśmy teksturowany model wygenerowany przez AI z naszej galerii — steampunkowego rycerza-robota z 500,000 trójkątów, 287,963 wierzchołkami i trzema teksturami PNG 2048 x 2048 — i zmierzyliśmy każde opakowanie.
| Opakowanie | Pliki | Rozmiar |
|---|---|---|
| GLB | 1 | 26.9 MB |
| glTF + .bin + tekstury PNG | 5 (.gltf, .bin, 3 pliki PNG) | około 26.9 MB łącznie; sam JSON .gltf to około 2 KB |
| glTF z osadzonymi danymi base64 | 1 | około 35.9 MB |
| Z czego składają się bajty | Geometria 15.2 MB, tekstury 11.7 MB |
Opakowanie niczego nie zmniejsza. Aby model był mniejszy, skompresuj geometrię (Draco lub meshopt), zmniejsz lub przekoduj tekstury albo zredukuj liczbę trójkątów. Nasz kompresor GLB i upraszczacz siatki robią to w przeglądarce.
glTF vs GLB w sieci, w AR i w Blenderze
W sieci GLB jest praktycznym domyślnym wyborem: jedno żądanie, jeden wpis w cache i każdy liczący się loader go czyta. Osobne pliki glTF mogą wygrać na stronie, która pokazuje wiele modeli dzielących te same tekstury, bo przeglądarka pobiera wspólny obraz tylko raz; same notatki implementacyjne specyfikacji opisują ten kompromis.
W AR Scene Viewer Androida przyjmuje glTF i GLB, natomiast Quick Look na iPhone'ie wymaga USDZ, więc publikuj oba i konwertuj GLB na USDZ dla urządzeń Apple. W Blenderze File > Import > glTF 2.0 czyta każdy z nich, a menu Format eksportera oferuje glTF Binary (.glb) i glTF Separate (.gltf + .bin + tekstury). Wybierz Binary, chyba że masz powód, by zrobić inaczej.
Do druku 3D żaden z nich nie jest właściwym formatem przekazania. Przekonwertuj GLB na STL lub 3MF; tekstury się nie wydrukują, ale kształt tak.
- Sieć i udostępnianie: GLB
- Wiele modeli ze wspólnymi teksturami: osobny glTF
- AR na iPhone'ie: konwertuj na USDZ
- Druk: konwertuj na STL lub 3MF
GLB vs glTF: kiedy używać którego
Oba są poprawnym glTF 2.0. Wybieraj według swojego workflow.
Udostępnianie modelu komukolwiek
Osadzanie na stronie internetowej
Debugowanie zepsutego materiału
baseColorFactor, metallicFactor lub indeksy tekstur, popraw i wczytaj ponownie.Katalog produktów ze wspólnymi teksturami
Kontrola wersji
Unikaj: glTF z osadzonymi danymi
Konwersja glTF i GLB bez psucia czegokolwiek
Konwersja jest bezstratna w obie strony, pod warunkiem że wszystkie przywoływane pliki są obecne.
- Trzymaj .gltf, .bin i obrazy tekstur w tych samych względnych folderach, z którymi je wyeksportowano
- Wczytaj wynik w przeglądarce i sprawdź, czy tekstury się pokazują, zanim go udostępnisz
- Pamiętaj, że glTF jest w metrach: figurka 30 mm to 0.03 jednostki, co w niektórych narzędziach wygląda na maleńkie
- Kompresuj geometrię i tekstury pod sieć; samo przepakowanie nic nie oszczędza
- Wysyłaj tylko plik .gltf; bez .bin i obrazów model wczyta się pusty lub szary
- Zmieniaj nazwę .gltf na .glb; binarny nagłówek musi zapisać konwerter
- Używaj glTF z osadzonym base64 do dużych modeli; dodaje około 33% do danych binarnych
- Oczekuj, że slicer wydrukuje tekstury z GLB; do wydruków wielokolorowych przekonwertuj na 3MF
Darmowe przeglądarki i konwertery GLB i glTF
Narzędzia dla obu stron GLB vs glTF. Wszystkie działają w Twojej przeglądarce bez logowania, a pliki zostają na Twoim urządzeniu.
FAQ
Najczęściej zadawane pytania
GLB vs glTF: który jest lepszy?
Jaka jest różnica między GLB a glTF w jednym zdaniu?
Czy konwersja glTF na GLB traci jakość?
Dlaczego mój GLB jest taki duży?
Czy mogę wydrukować w 3D plik GLB lub glTF?
Jakich jednostek używa glTF?
Jaki format dostanę w SupaVoxel?
Czy iPhone'y otwierają pliki GLB?
Powiązane narzędzia i poradniki
Kontynuuj
Zacznij za darmo
GLB vs glTF — już wiesz? Stwórz model
Zamień zdjęcie w model 3D — zwykle w mniej niż minutę. Pobieranie GLB jest darmowe w ramach pierwszych 3 kredytów i nie wymaga karty; modele z teksturami są dostępne w płatnym planie.
Bez karty kredytowej · 3 darmowe kredyty na start