glTF Material — KHR_materials_variants (GLB)
One mesh, two named material variants (Copper and Cobalt) selectable at runtime — the extension behind every product configurator that swaps a finish without reloading geometry. The primitive also carries a plain `material`, so viewers with no variant support still render something.
Specifications
- Format
- glTF 2.0 binary (GLB)
- Extension
- KHR_materials_variants
- Variants
- 2
- Variant Names
- Copper, Cobalt
- Materials
- 2
- Default Material
- copper
Testing contract
Expected to pass- Scenario
- Enumerate the asset's variants, select index 1, and re-render.
- Expected result
- Two variants are listed; selecting Cobalt swaps the material without touching the accessors, and a viewer that ignores the extension shows the copper default.
What is a .glb file?
GLB is the binary form of glTF, packaging 3D scene geometry, materials, textures, animations, and node hierarchy into a single self-contained file. It is optimized for efficient runtime loading and is often called the JPEG of 3D. It is widely used in web, AR, and real-time 3D applications.
How to use this file
Use an example GLB to test glTF loaders, embedded-texture and animation handling, and real-time rendering pipelines in web or game engines.
How to use this file for testing
“glTF Material — KHR_materials_variants (GLB)” is a deterministic Novus Examples fixture for PBR material testing, Conversion testing. Complete PBR material sets — base colour, normal, roughness, metallic, ambient occlusion, and height — for testing material-generation models and physically-based renderers channel by channel.
Documented properties for this file: glTF 2.0 binary (GLB). Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
3D and CAD fixtures carry one small, documented solid or scene. Convert and inspect against the known geometry, units, and structure; format twins let you diff interchange fidelity, and the 3D viewer previews the actual mesh.
Code examples
import trimesh # pip install trimesh
mesh = trimesh.load("variants.glb")
print(mesh.bounds, mesh.faces.shape)Related files
- glbGLB — PBR Sphere (glTF twin of the OBJ+MTL pair)The same sphere and the same brushed-metal material as the OBJ+MTL pair in this group, but as a single self-contained GLB. Convert the OBJ+MTL and diff against this to score an OBJ-to-glTF material converter.

- glbglTF Material — doubleSided True vs False (GLB)Two open half-shells with identical geometry and opposite `doubleSided` flags. Because the shells are open you can see straight into them, which is the only way to tell backface culling from a lighting difference.

- glbglTF Material — Metallic-Roughness (GLB)A sphere with the glTF core metallic-roughness material — full metal, low roughness, no textures, so the numbers in the JSON are the whole material. The baseline half of the metallic-roughness vs specular-glossiness twin.

- glbglTF Material — OPAQUE / MASK / BLEND Side by Side (GLB)Three identical spheres differing only in alphaMode, arranged left to right. The MASK sphere's base alpha (0.45) sits deliberately just under its 0.5 cutoff, so a correct renderer discards it entirely while a renderer that treats MASK as BLEND draws it semi-transparent.

- glbglTF Material — Specular-Glossiness with Fallback (GLB)The same metal expressed in the archived specular-glossiness model, carried in `extensions` with an equivalent metallic-roughness fallback and NOT listed in extensionsRequired. The correct shape for an asset that must keep loading in viewers which dropped specular-glossiness support.

- mtlMTL — PBR Material (Pr / Pm alongside Phong)The material library for the OBJ in this group, carrying both the original Phong fields and the de-facto PBR extensions (Pr roughness, Pm metallic, Ke emissive). The file that tells you whether an importer reads MTL's PBR additions or only its 1995 subset.

Generated by generation/models_p7.py. Free for any use, no attribution required — license.