KhronosGroup / KhronosGroup/glTF
Exporter Ecosystem Matrix and Checklist
- Dominant language
- HTML
- Stars
- 7.8k
- Forks
- 1.2k
- Avg merge
- 17h 26m
- Merged PRs (30d)
- 5
Description
Currently we have a number of glTF exporters with partial support for glTF 2.0. It would be great if we could help artists find the right exporter for their pipeline and required features. We'd also like to help developers find the best projects for them to contribute to.
I'm compiling a matrix of exporters and their supported features. I could use the help of the community in building this matrix. I've created an exporter feature checklist for people to fill out and submit in this thread. I'll add it to the matrix and we can update it as these exporters mature. Hopefully, this pushes people to fill in the missing pieces of these exporters and we can enjoy a more robust exporter ecosystem.
Please let me know if there are items that should be added, removed, or changed in this list. My intention is to keep it high level enough that it isn't information overload, but detailed enough that you can find out if the exporter will work for you. Thank you!
# glTF Exporters
| Exporter Name | .gltf/.bin | .glb | Morph Targets | Skinned Mesh | Buffer View and Accessor Reuse | Mesh Instancing | PBR Metallic Roughness | PBR Specular Glossiness (Extension) | Unlit Material (Extension) | Additional Maps | Multiple UV Sets | Alpha | Double Sided Materials | Cameras | Animation (TRS) | Animation (Weights) | Animation (Multiple) | Draco Mesh Compression (extension) | Extras Data | Asset Info |
| ----------------------------------------------------------------------------------------------- | :--------: | :--: | :-----------: | :----------: | :----------------------------: | :-------------: | :--------------------: | :---------------------------------: | :------------------------: | :-------------: | :--------------: | :---: | :--------------------: | :-----: | :-------------: | :-----------------: | :------------------: | :--------------------------------: | :---------: | :--------: |
| [glTF-Blender-Exporter](https://github.com/KhronosGroup/glTF-Blender-Exporter) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ✔️ | ⚠️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
| [FBX2glTF](https://github.com/facebookincubator/FBX2glTF) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ❌ | ✔️ | ✔️ | ❔ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ✔️️ | ❌ | ⚠️ |
| [blendergltf](https://github.com/Kupoman/blendergltf) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ❌ | ✔️ | ✔️ | ❔ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
| [obj2gltf](https://github.com/AnalyticalGraphicsInc/OBJ2GLTF) | ✔️ | ✔️ | ❌ | ❌ | ❔ | ❔ | ⚠️ | ⚠️ | ❌ | ✔️ | ❔ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| [Babylon.js 3dsMax gltf exporter](https://github.com/BabylonJS/Exporters/tree/master/3ds%20Max) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ❌ | ❌ | ✔️ | ❔ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ |
| [Babylon.js Maya gltf exporter](https://github.com/BabylonJS/Exporters/tree/master/Maya) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ❌ | ❌ | ✔️ | ❔ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ |
| [Maya2glTF](https://github.com/Ziriax/Maya2glTF) | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ❔ | ✔️ | ❌ | ❌ | ✔️ | ❔ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ |
| [UnityGLTF](https://github.com/KhronosGroup/UnityGLTF) | ⚠️ | ❌ | ❌ | ❌ | ❔ | ❔ | ✔️ | ✔️ | ❌ | ✔️ | ❔ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ |
| [Sketchup glTF Export](https://extensions.sketchup.com/en/content/gltf-exporter) | ⚠️ | ✔️ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ❌ | ❌ | ❔ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ |
| [COLLADA2GLTF](https://github.com/KhronosGroup/COLLADA2GLTF/) | ✔️ | ✔️ | ❌ | ✔️ | ❔ | ❔ | ⚠️ | ⚠️ | ✔️ | ❌ | ❔ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
### Key:
- ✔️ Full support
- ⚠️ Partial Support
- ❌ No Support
- ❔ Needs Data
# glTF Exporter Checklist
- [ ] JSON Export (.gltf, .bin, .png/.gif/.jpg)
The exporter can output a .gltf file, a .bin file, and images for each of the textures.
- [ ] Binary Export (.glb)
The exporter can output a single .glb file containing the glTF JSON data, buffer data, and textures.
- [ ] Morph Targets
The exporter outputs morph target information via `primitive.targets` and `primitive.weights`. This does not include animation of the weights.
- [ ] Skinned Mesh
The exporter outputs skins using the `inverseBindMatrices`, `joints`, and `skeleton` properties as well as the `JOINTS` and `WEIGHTS` vertex attributes.
- [ ] Buffer View and Accessor Reuse
The exporter reuses buffer views and accessors whenever possible. Ex. Vertex attributes are packed into a single buffer view and meshes with the same geometry, but different materials reuse accessors.
- [ ] Mesh Instancing
When multiple nodes have the same mesh, the exporter exports a single mesh definition and references it in each node.
- [ ] PBR Metallic Roughness Material
The exporter outputs the correct factors and textures for the `pbrMetallicRoughness` material.
- [ ] KHR_matrials_pbrSpecularGlossiness
The exporter outputs the correct factors and textures for the `pbrSpecularGlossiness` material.
- [ ] KHR_material_unlit
The exporter supports exporting unlit materials. The material has the correct fallback values.
- [ ] Additional Maps
The exporter outputs the correct factors and textures for the `normal`, `occulsion`, and `emissive` maps.
- [ ] Multiple UV Sets
The exporter can output materials which use multiple UV sets.
- [ ] Alpha Coverage
The exporter outputs the correct `alphaMode`, `alphaCutoff` and alpha value for the given material.
- [ ] Double Sided Material
The exporter can specify whether or not the material is double sided and outputs the correct `doubleSided` value.
- [ ] Cameras
The exporter supports exporting both perspective and orthographic cameras.
- [ ] Animation (TRS)
The exporter supports exporting animations of the `translation`, `rotation`, and `scale` properties of nodes. This includes joints in skinned meshes.
- [ ] Animation (Weights)
The exporter supports exporting animation of morph target weights.
- [ ] Animation (Multiple)
The exporter supports exporting multiple animations.
- [ ] KHR_draco_mesh_compression
The exporter supports exporting compressed meshes via the Draco mesh compression library.
- [ ] Extras Data
The exporter allows you to specify extras data on (at minimum) node objects for adding application specific metadata.
- [ ] Asset Information
The exporter outputs the correct glTF `version`, the `generator` name, and allows you to specify the `copyright` field.
# Post template
```
# Exporter Name
- [ ] JSON Export (.gltf, .bin, .png/.gif/.jpg)
- [ ] Binary Export (.glb)
- [ ] Morph Targets
- [ ] Skinned Mesh
- [ ] Buffer View and Accessor Reuse
- [ ] Mesh Instancing
- [ ] PBR Metallic Roughness Material
- [ ] KHR_matrials_pbrSpecularGlossiness
- [ ] KHR_material_unlit
- [ ] Additional Maps
- [ ] Multiple UV Sets
- [ ] Alpha Coverage
- [ ] Double Sided Material
- [ ] Cameras
- [ ] Animation (TRS)
- [ ] Animation (Weights)
- [ ] Animation (Multiple)
- [ ] KHR_draco_mesh_compression.
- [ ] Extras Data
- [ ] Asset Information
```
If a feature is missing, please try to provide some details. If it has partial or no support please indicate that. Linking to specific Github issues would be even better!
Contributor guide
Research direction
Start with the exporter matrix, feature checklist, and post template in this issue. Review the existing exporter entries and community submissions, then determine which corrections or additions are supported by current project information. Done means the matrix and checklist accurately document exporter capabilities and provide useful links or details where support is partial or unknown.
Written by the indexing model from the issue text.
Assessment
- Domain
- content, documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100