GLB vs glTF: mi a különbség?
GLB vs glTF: ez csomagolás, nem adat. A .gltf olvasható JSON külön fájlokkal, a .glb mindent egyetlen fájlba tömörít. Szállíts GLB-t, szerkeszd a glTF-et, konvertálj veszteségmentesen.
- Khronos glTF 2.0 specifikáció
- Mért fájlméretek
- Veszteségmentes konverzió
GLB vs glTF: a rövid válasz
A glTF a Khronos Group nyílt formátuma 3D jelenetek appokba és a webre juttatásához, a GLB pedig nem külön formátum, hanem annak bináris konténere. A specifikáció mindkettőt definiálja: a .gltf fájl JSON (média típus: model/gltf+json), a .glb fájl (model/gltf-binary) pedig ugyanezt a JSON-t és egy bináris buffert csomagolja egyetlen fájlba.
A GLB vs glTF kérdés tehát a csomagolásról szól, nem a minőségről. A mesh-ek, a PBR anyagok, a textúrák, az animációk, a skinek és a morph targetek mindkettőben ugyanúgy megmaradnak. Ami változik: hány fájlt kell kezelned, meg tudod-e nyitni a jelenetleírást egy szövegszerkesztőben, és mennyi plusz méretet fizetsz, ha bináris adatokat ágyazol a JSON-ba.
Szinte mindenkinek a GLB a válasz: egyetlen fájl, amit fel lehet tölteni, el lehet küldeni e-mailben, vagy be lehet húzni a three.js-be, a Babylon.js-be, a <model-viewer>-be, a Blenderbe, a Unitybe vagy az Unrealbe. A külön fájlos glTF-et akkor válaszd, ha hibakeresel, kézzel szerkeszted az anyagértékeket, vagy sok modell között osztod meg a textúrákat egy CDN-en.
GLB vs glTF összehasonlító táblázat
Mindkettő glTF 2.0, így a legtöbb sor azonos. Az eltérő sorok azok, amelyek eldöntik a GLB vs glTF kérdést a projektednél.
| GLB (.glb) | glTF (.gltf) | |
|---|---|---|
| Geometria típusa | Háromszög mesh-ek (valamint pontok és vonalak), node hierarchia, skinek, morph targetek | Azonos |
| Szín / textúra | PNG vagy JPEG textúrák a bináris chunkon belül; vertex színek | Textúrák külön képfájlokként, vagy base64 data URI-ként a JSON-ban |
| Mértékegységek | Méter, jobbkezes, +Y felfelé, a spec szerint | Azonos |
| Anyagok | PBR metallic-roughness beépítve; továbbiak KHR kiterjesztésekkel | Azonos |
| Fájlméret | A legkisebb egyfájlos forma: 12 bájtos fejléc, egy JSON chunk és egy BIN chunk | Ugyanannyi bájt összesen, mint a külön fájloknál; kb. 33%-kal nagyobb, ha a bináris adat base64-ként van beágyazva |
| Szerkeszthetőség | Bináris; eszköz kell a vizsgálatához | A JSON ember által olvasható és diffelhető szövegszerkesztőben |
| Szoftvertámogatás | three.js, Babylon.js, model-viewer, Blender, Unity, Unreal, Godot, Windows 3D Viewer | Ugyanazok a loaderek; a külső fájloknak a megfelelő relatív mappában kell maradniuk |
| Nyomtatási felhasználás | Nem nyomtatási formátum; az UltiMaker Cura megnyitja, a legtöbb szeletelő nem | Ugyanez; konvertálj STL-re vagy 3MF-re a nyomtatáshoz |
| Fájlok száma | 1 | 1 vagy több (.gltf, .bin, képek) |
Forrás: Khronos glTF 2.0 specifikáció, a fájlkiterjesztésekről, a koordinátarendszerről és a mértékegységekről, valamint a GLB fájlformátumról szóló fejezetek.
Hogyan épül fel egy GLB fájl egy glTF-ből
A GLB egy 12 bájtos fejléccel kezdődik: a glTF magic bájtokkal, a verzióval (2) és a teljes hosszal. Utána jönnek a chunkok. Az első a JSON chunk, pontosan az a jelenetleírás, amit egy .gltf tartalmazna. A második a BIN chunk, ami a vertex pozíciókat, a normálokat, az UV-kat, az indexeket, az animáció kulcsképkockáit és általában magukat a textúra képeket tartalmazza.
A .gltf ezt a JSON-t önálló fájlként tartja meg, és kétféleképpen hivatkozik a bináris adatra: relatív útvonalakkal a mellette lévő .bin és képfájlokra, vagy data URI-okkal, amelyek base64-ként kódolják a bájtokat egyenesen a JSON-ba. Maga a spec is megjegyzi, hogy a base64 33%-kal növeli a payload bájthosszát, a dekódolása pedig plusz feldolgozást igényel. Ez a fő oka, hogy a GLB egyáltalán létezik.
- GLB: fejléc + JSON chunk + BIN chunk, egy fájl
- glTF: JSON, valamint .bin és képek egymás mellett
- Beágyazott glTF: egy fájl, de a base64 egyharmaddal megnöveli
GLB vs glTF fájlméret: egy modell, háromféle csomagolásban
Fogtunk egy textúrázott, AI-generált modellt a galériánkból – egy steampunk robot lovagot 500,000 háromszöggel, 287,963 vertexszel és három 2048 x 2048-as PNG textúrával –, és lemértük az egyes csomagolásokat.
| Csomagolás | Fájlok | Méret |
|---|---|---|
| GLB | 1 | 26.9 MB |
| glTF + .bin + PNG textúrák | 5 (.gltf, .bin, 3 PNG) | összesen kb. 26.9 MB; a .gltf JSON maga kb. 2 KB |
| glTF beágyazott base64 adattal | 1 | kb. 35.9 MB |
| Miből állnak a bájtok | Geometria 15.2 MB, textúrák 11.7 MB |
A csomagolás semmit nem zsugorít. Ahhoz, hogy a modell kisebb legyen, tömörítsd a geometriát (Draco vagy meshopt), kicsinyítsd vagy kódold újra a textúrákat, vagy csökkentsd a háromszögszámot. A GLB tömörítőnk és mesh egyszerűsítőnk ezt a böngészőben elvégzi.
glTF vs GLB a weben, AR-ban és Blenderben
A weben a GLB a gyakorlati alapértelmezés: egy kérés, egy cache bejegyzés, és minden nagyobb loader olvassa. A külön fájlos glTF akkor nyerhet, ha az oldal sok modellt mutat, amelyek ugyanazokat a textúrákat használják, mert a böngésző a közös képet csak egyszer tölti le; a spec saját implementációs megjegyzései is leírják ezt a kompromisszumot.
AR-hez az Android Scene Viewerje fogad glTF-et és GLB-t, az iPhone Quick Look viszont USDZ-t igényel, ezért publikálj mindkettőt, és konvertáld a GLB-t USDZ-re az Apple eszközökhöz. A Blenderben a File > Import > glTF 2.0 bármelyiket beolvassa, az exporter Format menüje pedig kínál glTF Binary (.glb) és glTF Separate (.gltf + .bin + textures) opciót. Válaszd a Binary-t, hacsak nincs okod mást tenni.
3D nyomtatáshoz egyik sem jó átadás. Konvertáld a GLB-t STL-re vagy 3MF-re; a textúrák nem fognak nyomtatódni, de a forma igen.
- Web és megosztás: GLB
- Sok modell közös textúrákkal: külön glTF
- iPhone AR: konvertálj USDZ-re
- Nyomtatás: konvertálj STL-re vagy 3MF-re
GLB vs glTF: mikor melyiket?
Mindkettő helyes glTF 2.0. A munkafolyamat dönt.
Modell megosztása bárkivel
Beágyazás weboldalra
Hibás anyag hibakeresése
baseColorFactor, a metallicFactor vagy a textúra indexeket, javítsd, majd töltsd újra.Termékkatalógus közös textúrákkal
Verziókezelés
Kerüld: a beágyazott glTF
glTF és GLB konvertálása anélkül, hogy bármi eltörne
A konverzió mindkét irányban veszteségmentes, feltéve, hogy minden hivatkozott fájl megvan.
- Tartsd a .gltf, .bin és textúra képeket ugyanazokban a relatív mappákban, amelyekkel exportáltad őket
- Töltsd be az eredményt egy viewerbe, és ellenőrizd, hogy megjelennek a textúrák, mielőtt megosztod
- Ne feledd: a glTF méterben van, egy 30 mm-es figura 0.03 egység, ami egyes eszközökben aprónak tűnik
- Tömörítsd a geometriát és a textúrákat a webhez; az újracsomagolás önmagában semmit nem spórol
- Csak a .gltf fájlt küldöd el; a .bin és a képek nélkül a modell üresen vagy szürkén töltődik be
- Átnevezed a .gltf-et .glb-re; a bináris fejlécet konverternek kell megírnia
- Beágyazott base64 glTF-et használsz nagy modellekhez; ez kb. 33%-ot tesz hozzá a bináris adathoz
- Azt várod, hogy egy szeletelő textúrákat nyomtasson GLB-ből; konvertálj 3MF-re a többszínű nyomtatáshoz
Ingyenes GLB és glTF viewerek és konverterek
Eszközök a GLB vs glTF mindkét oldalához. Mind böngészőben fut, bejelentkezés nélkül, és a fájljaid a készülékeden maradnak.
GYIK
Gyakran ismételt kérdések
GLB vs glTF: melyik a jobb?
Mi a GLB és a glTF közti különbség egy mondatban?
Veszt-e a minőség, ha glTF-et konvertálok GLB-be?
Miért ilyen nagy a GLB-m?
Ki lehet nyomtatni egy GLB vagy glTF fájlt 3D-ben?
Milyen mértékegységet használ a glTF?
Milyen formátumot ad a SupaVoxel?
Megnyitják az iPhone-ok a GLB fájlokat?
Kapcsolódó eszközök és útmutatók
Folytatás
Kezdés ingyen
GLB vagy glTF? Készítsd el a modellt
Fotóból 3D modellt készít, általában egy perc alatt. A GLB letöltés ingyenes az első 3 krediteddel, kártya nélkül; textúrázott modellek fizetős csomaggal.
Bankkártya nem szükséges · 3 ingyenes kredit a kezdéshez