Expand description

gltf scene and model loader for rend3.

This crate attempts to map the concepts into gltf as best it can into rend3, but there is quite a variety of things that would be insane to properly represent.

To “just load a gltf/glb”, look at the documentation for load_gltf and use the default filesystem_io_func.

Individual components of a gltf can be loaded with the other functions in this crate.

Supported Extensions

  • KHR_punctual_lights
  • KHR_texture_transform
  • KHR_material_unlit

Known Limitations

  • Only the albedo texture’s transform from KHR_texture_transform will be used.
  • Double sided materials are currently unsupported.


Implementation utilities.


A set of [SkeletonHandle]s, one per mesh in the wrapping object, plus the index of the skin data in the skins array of LoadedGltfScene.

Determines parameters that are given to various parts of the gltf world that cannot be specified by gltf alone.

Data specific to each instance of a gltf scene.

Hashmap key for caching images.

Wrapper around a T that stores an optional label.

Loaded data on a gltf scene that can be reused across multiple instances of the same set of objects.

Set of MeshPrimitives that make up a logical mesh.

A single sub-mesh of a gltf.

Node in the gltf scene tree

Set of [ObjectHandle]s that correspond to a logical object in the node tree. When the node corresponds to an animated mesh, the armature will contain the necessary data to deform the primitives.

Animation data for a single joint, with translation, rotation and scale channels.

A uploaded texture and its format.


Describes how loading gltf failed.


Adds a single mesh from the LoadedGltfScene found by its index, as an object to the scene.

Default implementation of load_gltf’s io_func that loads from the filesystem relative to the gltf.

Instances a Gltf scene that has been loaded using load_gltf_data. Will create as many Objects as required.

Loads buffers from a gltf::Buffer iterator, calling io_func to resolve them from URI.

Creates a gltf default material.

Load a given gltf into the renderer’s world.

Load a given gltf’s data, like meshes and materials, without yet adding any of the nodes to the scene.

Loads a single image from a gltf::Image.

Loads a single image from a gltf::Image, with caching.

Loads materials and textures from a gltf::Material iterator.

Loads meshes from a gltf::Mesh iterator.

Type Definitions

Hashmap which stores a mapping from ImageKey to a labeled handle.