GLB — 24-level Node Hierarchy
One box mesh referenced by a 24-deep chain of nodes, each adding a translation, an 11-degree rotation and a 0.94 scale, so the result spirals. Any error in matrix accumulation compounds visibly by the tip instead of hiding in rounding.
Specifications
- Format
- glTF 2.0 binary (GLB)
- Depth
- 24
- Nodes
- 24
- Meshes
- 1
- Per Level Rotation Degrees
- 11
- Per Level Scale
- 0.94
- Shape
- spiral of boxes
- Mesh Instances
- 24
Testing contract
Expected to pass- Scenario
- Compute the world transform of the deepest node and compare it against the product of all 24 local matrices.
- Expected result
- They match to float precision, and the spiral closes smoothly; a renderer that flattens the hierarchy or multiplies in the wrong order produces a straight line or a starburst.
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
“GLB — 24-level Node Hierarchy” is a deterministic Novus Examples fixture for Conversion testing, Mesh processing QA. The same content exported across many formats and linked as a group, so you can convert one and diff against the expected twin.
Documented properties for this file: 24 nodes · 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("deep-nesting.glb")
print(mesh.bounds, mesh.faces.shape)Related files
- glbGLB — 64 Nodes Sharing One MeshAn 8x8 field of columns built from a single 12-triangle mesh referenced by 64 nodes with seeded random heights. Core-glTF instancing needs no extension: the file is tiny, and the interesting question is whether your renderer batches the 64 draws or issues them one by one.

- glbGLB — EXT_mesh_gpu_instancing (32 instances)Thirty-two copies of one cube expressed as instance attribute accessors on a single node under EXT_mesh_gpu_instancing — the extension that moves instancing off the scene graph and onto the GPU. A viewer without support shows exactly one cube at the origin, which is the tell.

- glbGLB — Node Transforms as 4x4 MatricesSix cubes in a ring whose nodes carry a column-major 4x4 `matrix` and no translation/rotation/scale keys — the encoding a DCC exporter uses when a transform cannot be decomposed. Paired with a TRS twin of the identical ring.

- glbGLB — One Mesh under Three ParentsTwelve nodes reference one sphere mesh, in three groups whose parents each apply a different rotation and scale. The fixture for importers that copy geometry per node: a correct import keeps one mesh resource with twelve transforms, a naive one produces twelve meshes.

- glbGLB — Three Scenes, Default is Scene 1Three named scenes over three meshes, with the asset's `scene` property pointing at index 1 rather than 0. Loaders that hardcode scene 0 show the wrong content and never report an error — this is the file that catches them.

- gltfglTF — Node Transforms as TRSThe same six-cube ring with translation, quaternion rotation and scale spelled out per node. Read it next to the matrix twin to check a decomposition routine, or to confirm that your quaternion component order really is xyzw.

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