GLB — Texture stored in a bufferView
The third texture-storage strategy: the PNG lives inside the GLB's BIN chunk as a bufferView, addressed by `mimeType` rather than a URI. This is what a GLB packer must produce, and extracting the image again is the round-trip test.
Specifications
- Format
- glTF 2.0 binary (GLB)
- Image Storage
- bufferView + mimeType
- Image Bytes
- 182
- Mime Type
- image/png
- Self Contained
- true
Testing contract
Expected to pass- Scenario
- Extract the image with a glTF tool and compare it against external-texture.png in this group.
- Expected result
- The extracted bytes are identical to the standalone PNG; the packer neither re-encoded nor re-compressed it.
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 — Texture stored in a bufferView” is a deterministic Novus Examples fixture for Texture map testing, Conversion testing. Tileable texture channels with documented roles and resolution, for validating texture pipelines, atlas packers, and material import/export.
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("embedded-texture.glb")
print(mesh.bounds, mesh.faces.shape)Related files
- binBIN — glTF External Buffer PayloadThe binary payload the external-buffer glTF in this group points at: tightly-packed positions, normals and indices with 4-byte alignment padding. Not viewable on its own — its bufferViews live in the JSON.

- glbGLB — Interleaved Vertex Attributes (byteStride 32)Position, normal and UV packed into ONE bufferView with byteStride 32 and three accessors at offsets 0, 12 and 24 — the GPU-friendly layout, and the one a naive parser mis-reads because it assumes each accessor owns its view. Twinned here with a tightly-packed version of the same sphere.

- glbGLB — Self-contained BIN ChunkThe third storage strategy for the identical sphere: a GLB whose buffer is the BIN chunk, with no URI at all. Compare the three file sizes in this group to see exactly what base64 and JSON whitespace cost.

- glbGLB — Tightly-packed Vertex AttributesThe same sphere with every attribute in its own bufferView and no byteStride — the layout most exporters emit and most parsers assume. The control against which the interleaved twin in this group is diffed.

- gltfglTF — Base64 Data-URI BufferThe same sphere with its buffer inlined as a base64 data URI: one self-contained text file, at roughly a third more bytes than the binary it encodes. The middle point of the three storage strategies in this group.

- gltfglTF — External .bin BufferA glTF whose single buffer is a relative URI to a sibling .bin — the layout every DCC tool writes by default, and the one that breaks the moment an asset is moved or served from a different directory. Download the .bin in this group alongside it.

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