glTF is a 3D file format maintained by the Khronos Group. It is an all-purpose transmission format, but it has been adopted by Google as the format of choice for Augmented Reality (AR) on Android's Scene Viewer.
GLB is a binary container format of glTF. It bundles all the textures and mesh data into a single file.
USDZ is a 3D file format created by Pixar. It has been adopted by Apple as their format for AR applications on iOS AR Quick Look.
When possible, Sketchfab automatically converts every downloadable model to glTF and USDZ formats. These files can be downloaded for free or purchased for use in your own applications. These files are also used to power Sketchfab's app-free AR.
How does it work?
Sketchfab takes your original 3D data (meshes, objects, animations, etc.) combined with all the material information in 3D Settings, and converts it to the glTF format using PBR materials and textures. Then, we convert that glTF file into a USDZ file with as much of the same data as possible.
We also generate several versions of GLB with different maximum texture resolutions:
- Original, full-sized, source textures
- 4k textures (4096×4096 px)
- 1k textures (1024×1024 px)
We only generate each version when necessary. For example, if you upload a model with source textures that are only 512×512 px, we will only generate a GLB with the original textures. If you upload a model with 8k textures, all three versions will be generated.
glTF Limitations
Some shaders and features are not supported by the glTF specification, so they will not be exported.
- Refraction, Dithered, and Additive transparency (will be converted to Blending)
- Cavity
- Bump map
- Clear Coat
- Anisotropy
- Subsurface Scattering / Translucency
- Displacement
- Lights
- Post-processing Filters
- Annotations
Some features are supported by the glTF format itself, but not by certain engines like Unity or Three.js (e.g. https://gltf-viewer.donmccurdy.com/ ).
- Multiple UVs - some engines may force every channel to use the same Texture Coordinates
- Maximum number vertex attributes per mesh is often set to 16, which can be especially problematic for morph target animations
USDZ Limitations
Since the USDZ file is generated based on the glTF file, anything unsupported by glTF will not be supported by USDZ. The USDZ format and Apple's AR Quick Look have additional limitations.
Here are some key Sketchfab features that are not supported by USDZ / AR Quick Look. For a more exhaustive list, please visit Google's USD from glTF compatibility documentation.
- Point Clouds are not available in USDZ.
- Quick Look does not have a Shadeless mode, so 3D scans and other models set to Shadeless may look darker than expected. A workaround could be to duplicate the base color texture in the emission channel.
- Vertex Colors are not supported, so models that depend on Vertex Colors will not look correct.
- Morph animations are not supported.
- Only one animation track is supported.
- Animation loop modes are not supported. Animations will loop endlessly in Quick Look.
- Multiple UV channels are not supported. All textures will be mapped using the first UV channel.
- Double sided rendering is not supported, so all models are rendered single sided. This is not an issue for models that are closed volumes, but it will not work well when models have planes or faces that can be visible from both sides.
- USDZ does not support the Alpha Mask channel. You should use Alpha Blending instead.
General Performance
Much like the Sketchfab viewer, the load time and performance of the 3D model depends on a lot of factors like the number of polygons in the mesh and the size of textures. These considerations are even more important for mobile devices, especially in AR mode. Please visit Viewer Performance to learn more.
Apple also offers the following USDZ-specific performance considerations:
- Textures: models with large textures or many textures will not load. Downsizing textures may make them work, but the actual limitation is unknown for now. Apple recommends textures no bigger than 2048×2048 pixels for best performance.
- Vertex/Polygon count: some models cannot be loaded because they have too many vertices/faces. The limit is not clearly defined yet, but 500k seems to be a good rule of thumb. Apple recommends no more than 100k for the best performance.
- Animation: Apple recommends animations no longer than 10 seconds.