A Go library for efficient serialization and deserialization of glTF 2.0 files, the JPEG of 3D.
gltf is a Go library for encoding and decoding glTF 2.0 files, which is a specification for efficiently transmitting and loading 3D scenes and models. It provides a complete implementation of the glTF 2.0 standard, allowing Go applications to serialize and deserialize 3D assets in both JSON and binary formats.
Go developers working with 3D graphics, game engines, or applications that need to process, generate, or manipulate glTF 2.0 assets programmatically.
Developers choose this library for its production-ready, idiomatic Go API that fully implements the glTF 2.0 spec without external dependencies, offering both high-level abstractions for common tasks and low-level control when needed.
Go library for encoding glTF 2.0 files
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements the entire royalty-free specification, ensuring full compatibility with standard 3D assets for encoding and decoding, as evidenced by the detailed Document structure and extension handling.
Supports both JSON/ASCII (.gltf) and binary (.glb) files with gltf.Open and gltf.Save, providing flexibility for different transmission and storage needs without extra dependencies.
Features a built-in mechanism for official and custom extensions, with auto-registration for supported ones like lights punctual, allowing easy integration of additional glTF features.
The modeler package offers friendly APIs for writing primitives and attributes, such as WritePosition and WriteColor, abstracting away low-level byte manipulation for common tasks.
Explicitly out of scope for 3D geometry manipulation or format conversion, requiring additional libraries or tools for mesh generation, which limits its utility for end-to-end 3D workflows.
The README warns that the API is not frozen and may suffer minor changes until v1.0, posing a risk of breaking changes for early adopters in production environments.
As a Go-specific module, it's not suitable for projects in other programming languages, restricting its use in polyglot or cross-platform applications without bridging layers.