Proč záleží na volbě exportního formátu
Volba exportního formátu výrazně ovlivňuje kvalitu, věrnost materiálů, velikost souboru, kompatibilitu, rychlost načítání i možnosti animace. Tři nejrozšířenější formáty – OBJ, FBX a glTF – cílí na odlišné potřeby. Zatímco OBJ je jednoduchý “mesh + MTL” standard bez pokročilých funkcí, FBX je historicky robustní výměnný formát pro DCC (Maya, 3ds Max, Blender) s bohatým systémem animací a rigů, a glTF 2.0 je moderní, runtime-friendly formát optimalizovaný pro web, mobil a XR s fyzikálně založenými materiály (PBR) a bohatým ekosystémem rozšíření.
Přehled formátů: silné a slabé stránky
| Vlastnost | OBJ (.obj + .mtl) | FBX (.fbx) | glTF 2.0 (.gltf/.glb) |
|---|---|---|---|
| Geometrie | Trojúhelníky/quad; bez hierarchie; 1–n UV (implementačně omezené) | Mesh + hierarchie; podp. NURBS/shape (často bake na triangly) | Triangly; hierarchie uzlů; instancing; morph targets |
| Materiály | MTL (Lambert/Phong), bez PBR | Široká škála shaderů; různé DCC interpretace | PBR Metal-Rough (standard); rozšíření KHR_materials_* |
| Textury | Odkazy v MTL (externí soubory) | Vložené/externí; někdy proprietární komprese | Externí (GLTF) nebo zabalené (GLB); KTX2/BasisU komprese |
| Animace | Ne (jen statické) | Rigging, skinning, blendshapes, constrainty | Skinning, morph targets, klíčové snímky |
| Kosti/rig | Ne | Ano (bohaté) | Ano (standardizované pro runtime) |
| Světla/kamery | Ne | Ano | Přes rozšíření (KHR_lights_punctual), kamery standardně |
| Velikost/načtení | Velké soubory, pomalejší IO | Střední, někdy nadbytečná metadata | Velmi efektivní binární GLB, rychlé načtení |
| Interoperabilita | Všude čitelné, jednoduché | Široce podporované v DCC; verze mohou kolidovat | Standard pro web/mobil/XR; rostoucí podpora DCC |
| Use-case | Statické modely, archivace jednoduchých meshů | Pipeline mezi DCC, komplexní animace/rigy | Distribuce do runtime (WebGL/WebGPU, herní enginy, XR) |
OBJ: kdy dává smysl “nejjednodušší možný” formát
OBJ je textový popis geometrie s doprovodným .mtl. Výhody: extrémní kompatibilita, snadná editovatelnost, vhodný pro statické modely bez nároků na pokročilé materiály. Nevýhody: žádná animace, žádné PBR, omezená definice normal map (tangent space není standardizován), často jen jeden UV set, nerozlišuje instancing, neřeší jednotky a osy. U složitých scén roste velikost a doba importu. Pokud exportujete produkt do CAD/3D tisku či jednoduché vizualizace bez animací, OBJ může stačit – jinak bývá limitující.
FBX: tradiční práce v DCC, bohaté animace a úskalí verzí
FBX je de facto standard mezi DCC nástroji (Maya, 3ds Max, Blender) pro směnu animovaných assetů, rigů, constraintů a shape keys. Silné stránky: hierarchie, skinning, blendshapes, kamery, světla, někdy i částice (často nutný bake). Slabiny: verzování (ASCII vs. binární; “FBX 2011/2013/2016/2018” – různé importéry/enginy preferují specifickou revizi), nekonzistentní interpretace materiálů a jednotek napříč nástroji, občasné potíže s tangent space a smoothing groups. Doporučení: péct constrainty a simulace do klíčů, triangulovat před exportem, sjednotit jednotky (cm vs. m) a osy (Y-up/Z-up), zmrazit transformace a validovat v cílovém engine.
glTF 2.0 / GLB: “JPEG 3D” pro web, mobil a XR
glTF 2.0 je otevřený standard optimalizovaný pro distribuci do runtime. Varianta .gltf odkazuje na externí binární/texture soubory, .glb vše balí do jednoho binárního kontejneru (ideální pro distribuční kanály). Silné stránky: nativní PBR (metal-rough), precizní definice tangent space (MikkTSpace), skinning a morph targets, rozšíření pro světla, objemové/transmisní efekty, a standardizovaná komprese (Draco pro geometrii, KTX2/BasisU pro textury). Slabiny: menší bohatost rig constraintů (vše je zamýšleno jako “runtime-ready” – komplexní chování péct do klíčů), některé DCC funkce se převádějí na bake.
Materiály a PBR: Phong vs. metal-rough
- OBJ/MTL: jednoduché difúzní/specular parametry, bez normalizovaných PBR kanálů; nelze věrně přenést moderní shadery.
- FBX: přenese materiály, ale interpretace se liší dle importéru; často nutný ruční lookdev po importu.
- glTF: standardní metal-rough workflow (albedo, metallic-roughness, normal, occlusion, emissive); rozšíření KHR_materials_clearcoat, transmission, ior, sheen, specular aj. zajišťují vysokou vizuální věrnost napříč enginy.
Animace, skinning a morph targets
Pro komplexní rigging (constraints, IK řetězce, řídicí křivky) je FBX stále velmi silný – ale i zde se doporučuje bake animací na klíčové snímky a validace v cílovém engine. glTF spolehlivě přenáší skeletal animace a morph targets (blendshapes) pro runtime. OBJ animace nepřenáší vůbec.
Komprese, velikost a výkon
- OBJ: textový formát – velké soubory; lze komprimovat zipem, ale i tak pomalý parse.
- FBX: binární FBX je menší než ASCII; přesto obsahuje metadata, která runtime nepotřebuje.
- glTF: GLB + Draco (geometrie) a KTX2/BasisU (textury) poskytují špičkový poměr kvalita/velikost a rychlé streamované načítání.
Jednotky, osy a tangent space: časté zdroje chyb
- Jednotky: sjednoťte (m vs. cm). FBX často implicitně používá centimetry; glTF definuje metry.
- Osy: DCC nástroje se liší (Y-up vs. Z-up; pravotočivá vs. levotočivá soustava). Při exportu nastavte korektní up-axis a aplikujte “freeze transforms”.
- Tangent space: pro normal mapy preferujte MikkTSpace (glTF standard). U FBX si zkontrolujte, že importér generuje kompatibilní tangenty.
Workflow doporučení pro jednotlivé scénáře
- Web/AR/VR distribuce: glTF/GLB s Draco + KTX2, PBR materiály, instancing, LOD chain, oddělené collision meshe; validace přes glTF Validator.
- Filmové a DCC pipeline: FBX pro přenos animací/rigů mezi nástroji; pečení constraintů, sjednocení jednotek, triangulace před exportem, verze FBX podle cíle.
- Jednoduché statické katalogy: u minimálních požadavků OBJ stačí, ale pro online náhledy je vhodnější glTF kvůli PBR a velikosti.
- Herní runtime (Unity/Unreal): import glTF je stále častější (pluginy/nativně), FBX má tradiční podporu; pro mobil preferujte glTF kvůli asset pipeline s KTX2.
Rozšíření glTF, která stojí za pozornost
- KHR_draco_mesh_compression: komprese geometrie (zásadní pro sítě a mobil).
- KHR_texture_basisu + KHR_texture_transform: univerzální texturová komprese a UV transformace.
- KHR_materials_clearcoat, sheen, transmission, ior, specular, volume: pokročilé PBR efekty pro realističtější materiály.
- KHR_lights_punctual: bodová/směrová/spot světla.
- EXT_meshopt_compression: alternativní efektivní komprese a optimalizace vertex indexů.
Migrace mezi formáty: na co si dát pozor
- OBJ → glTF: přemapujte materiály na PBR (albedo/roughness/metallic/normal/ao/emissive), vygenerujte tangenty, sjednoťte UV.
- FBX → glTF: bake constrainty a simulační křivky do klíčů, triangulace, převod shaderů na PBR; ověřte, že skinning a morph targets se mapují korektně.
- glTF → FBX: ztráty u některých PBR rozšíření; materiály mohou vyžadovat ruční lookdev v DCC.
LOD, instancing a scene graph
Pro reálný runtime výkon jsou zásadní úrovně detailu (LOD) a instancing. glTF nativně umožňuje efektivní reprezentaci instancí (opakované použití node/mesh). LOD lze řešit buď engine-specificky, nebo přes doplňková rozšíření/smluvené konvence. FBX i OBJ LODy přímo nedefinují, obvykle se řídí importérem/enginovým toolingem.
Integrita dat: validace a testy
- Validace: u glTF používejte oficiální validator; u FBX testujte import v cílové verzi engine/DCC.
- Vizualizační testy: kontrola shadingu (normal map, roughness/metallic), tangenty, UV seam, mikropovrch.
- Animace: porovnejte křivky, IK rozpad, skin váhy, pivoty, smyčky.
Rozhodovací strom: co zvolit
- Potřebujete animaci/rig? Ano → zvažte FBX (DCC exchange) nebo glTF (runtime). Ne → pokračujte.
- Cíl je web/mobil/XR runtime? Ano → glTF/GLB (PBR, komprese, rychlé načítání). Ne → pokračujte.
- Jednoduchý statický model pro nejširší kompatibilitu? Ano → OBJ (s vědomím limitů materiálů). Ne → glTF pro moderní shadery a velikost.
- DCC–DCC přenos komplexních rigů/constraintů? Ano → FBX s pečením animací a správnou verzí.
Best practices pro spolehlivý export
- Triangulace před exportem pro konzistentní shading a UV seam.
- Freeze/Reset transforms, sjednocené jednotky a osy.
- Tangenty podle MikkTSpace; synchronizujte normal map (OpenGL vs. DirectX konvence – invertování zeleného kanálu dle engine).
- Jednotné UV, žádné překryvy u PBR (pokud nejsou záměrné); rozumná texel density.
- LOD řetězce a instancing pro velké scény.
- Komprese: u glTF aktivujte Draco a KTX2; testujte artefakty a výkon.
- Bake constraintů, simulací a procedur na klíčové snímky pro přenositelnost.
Doporučení podle cílové platformy
- Web/WebXR: glTF/GLB + Draco + KTX2; PBR standard; validace a performance budget.
- Mobilní hry/AR: glTF/GLB, důraz na velikost a počet draw calls (instancing, merge), LOD.
- AAA pipeline: FBX mezi DCC a engine, ale stále častěji glTF pro distribuční fázi assetů.
- Archivace/statické zobrazení: OBJ pro jednoduchost, glTF pro budoucí-proof PBR.
Závěr
Neexistuje “jeden nejlepší” formát pro všechny situace. OBJ vítězí jednoduchostí u statických modelů, FBX je osvědčený pro komplexní DCC výměnu s animacemi a rigy, a glTF/GLB je moderní standard pro distribuované runtime scénáře s PBR a kompresí. Klíčem je sladit formát s cílovou platformou, způsobem nasazení a požadavky na vizuální věrnost, velikost a rychlost načítání, a dodržet osvědčené postupy pro export a validaci.