Skip to content
Novus Examples

Fixtures for 3D mesh pipelines

Deterministic GLB meshes with known geometry and triangle counts for regression-testing mesh import/export, decimation, repair, and validation pipelines.

88 of 88 files
Preview of glTF Skinned Mesh — Two-joint Bend (GLB)
glb
17 KB
Actual file preview for glTF Skinned Mesh — Two-joint Bend (GLB)

glTF Skinned Mesh — Two-joint Bend (GLB)

A tube skinned to a two-joint chain with inverse bind matrices, unsigned-byte JOINTS_0 and float WEIGHTS_0, plus a three-second rotation animation on the elbow. The shipped models category had no skinned mesh at all; this is the smallest complete one — rig, bind pose, weights and clip in a single self-contained GLB.

File
GLB · Animation · 512 triangles
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Skinned Mesh — Two-joint Bend (JSON)
gltf
23.7 KB
Actual file preview for glTF Skinned Mesh — Two-joint Bend (JSON)

glTF Skinned Mesh — Two-joint Bend (JSON)

The same two-joint skinned bend as readable glTF JSON with its buffer embedded as a base64 data URI — the file to open in a text editor when a GLB's skin, sampler or inverse bind matrices are not doing what you expect.

File
GLTF · Animation
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Skinned Mesh — Four-joint Chain (GLB)
glb
24.8 KB
Actual file preview for glTF Skinned Mesh — Four-joint Chain (GLB)

glTF Skinned Mesh — Four-joint Chain (GLB)

A longer tube skinned to a four-joint chain, every joint but the root animated, so the whole limb curls rather than hinging once. Exercises joint-matrix accumulation down a hierarchy — the step that a two-bone rig cannot catch.

File
GLB · Animation · 768 triangles
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Node Animation — LINEAR Sampler (GLB)
glb
2.8 KB
Actual file preview for glTF Node Animation — LINEAR Sampler (GLB)

glTF Node Animation — LINEAR Sampler (GLB)

One cube on one node, with translation, rotation and scale each driven by a five-key sampler that is linearly interpolated. Three files differing only in `interpolation` — the cleanest way to prove an animation player implements all three modes rather than treating everything as linear.

File
GLB · Animation
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Node Animation — STEP Sampler (GLB)
glb
2.7 KB
Actual file preview for glTF Node Animation — STEP Sampler (GLB)

glTF Node Animation — STEP Sampler (GLB)

One cube on one node, with translation, rotation and scale each driven by a five-key sampler that is held (STEP) — the value jumps at each key. Three files differing only in `interpolation` — the cleanest way to prove an animation player implements all three modes rather than treating everything as linear.

File
GLB · Animation
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Node Animation — CUBICSPLINE Sampler (GLB)
glb
3.2 KB
Actual file preview for glTF Node Animation — CUBICSPLINE Sampler (GLB)

glTF Node Animation — CUBICSPLINE Sampler (GLB)

One cube on one node, with translation, rotation and scale each driven by a five-key sampler that is cubic-spline, with in/out tangents stored around each value. Three files differing only in `interpolation` — the cleanest way to prove an animation player implements all three modes rather than treating everything as linear.

File
GLB · Animation
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Animation — Four Channels Across Two Nodes (GLB)
glb
3.1 KB
Actual file preview for glTF Animation — Four Channels Across Two Nodes (GLB)

glTF Animation — Four Channels Across Two Nodes (GLB)

A single animation whose four channels drive two nodes at once: the parent's translation, rotation and scale, and a spinning child that inherits all of it. The fixture for checking that channels are applied per node and per path rather than collapsed into one track.

File
GLB · Animation
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Morph Targets — Two POSITION Targets (GLB)
glb
20.1 KB
Actual file preview for glTF Morph Targets — Two POSITION Targets (GLB)

glTF Morph Targets — Two POSITION Targets (GLB)

A 16x16 plane with two POSITION morph targets — a sine ripple and a centre bulge — both at weight 0 in the bind pose. Drive the weights yourself to check that a loader adds the deltas to the base positions instead of replacing them.

File
GLB · Morph · 512 triangles
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Morph Targets — Animated Weights (GLB)
glb
20.6 KB
Actual file preview for glTF Morph Targets — Animated Weights (GLB)

glTF Morph Targets — Animated Weights (GLB)

The two-target plane with an animation channel whose target path is `weights` — five keyframes, ten scalars, because a weights sampler stores one value per target per key. The case that breaks players which assume every channel output is a vec3 or a quaternion.

File
GLB · Morph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Morph Targets — POSITION + NORMAL Deltas (GLB)
glb
27.2 KB
Actual file preview for glTF Morph Targets — POSITION + NORMAL Deltas (GLB)

glTF Morph Targets — POSITION + NORMAL Deltas (GLB)

Morph targets that displace both positions and normals, with the first target already at weight 0.3 in the bind pose. Shading that stays flat while the surface ripples is the symptom of a loader that morphs positions and forgets the normal deltas.

File
GLB · Morph
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of glTF Morph Targets — Eight Simultaneous Targets (GLB)
glb
41.6 KB
Actual file preview for glTF Morph Targets — Eight Simultaneous Targets (GLB)

glTF Morph Targets — Eight Simultaneous Targets (GLB)

Eight POSITION morph targets on one primitive — bumps arranged around a circle, so every active weight is visible independently. Eight is where many real-time renderers stop supporting extra targets; this is the fixture that says whether yours does.

File
GLB · Morph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF Morph Target — Sparse Accessor (GLB)
glb
13.6 KB
Actual file preview for glTF Morph Target — Sparse Accessor (GLB)

glTF Morph Target — Sparse Accessor (GLB)

A morph target stored as a sparse accessor: only 25 of 289 vertices carry a delta, and the accessor has no bufferView at all, so every other vertex reads as zero. Sparse accessors are the least-implemented corner of the glTF spec and the usual cause of a target that appears to do nothing.

File
GLB · Morph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF — Base64 Data-URI Buffer
gltf
15.2 KB
Actual file preview for glTF — Base64 Data-URI Buffer

glTF — Base64 Data-URI Buffer

The 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.

File
GLTF · Buffers
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — Self-contained BIN Chunk
glb
11.1 KB
Actual file preview for GLB — Self-contained BIN Chunk

GLB — Self-contained BIN Chunk

The 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.

File
GLB · Buffers
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — Interleaved Vertex Attributes (byteStride 32)
glb
13.6 KB
Actual file preview for GLB — Interleaved Vertex Attributes (byteStride 32)

GLB — 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.

File
GLB · Buffers
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of GLB — Tightly-packed Vertex Attributes
glb
13.7 KB
Actual file preview for GLB — Tightly-packed Vertex Attributes

GLB — Tightly-packed Vertex Attributes

The 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.

File
GLB · Buffers
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of GLB — Float32 Vertex Baseline
glb
73.5 KB
Actual file preview for GLB — Float32 Vertex Baseline

GLB — Float32 Vertex Baseline

An unquantised sphere: 32-bit floats for both positions and normals, 24 bytes of attribute data per vertex. The uncompressed reference for the quantized and gzip twins in this group.

File
GLB · Compression · 3,968 triangles
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of GLB — KHR_mesh_quantization Twin
glb
48.9 KB
Actual file preview for GLB — KHR_mesh_quantization Twin

GLB — KHR_mesh_quantization Twin

The same sphere with positions as normalised 16-bit and normals as normalised 8-bit integers under KHR_mesh_quantization — 66.6% of the float32 twin's bytes. The extension is in extensionsRequired, so a loader without support must refuse the file rather than render garbage.

File
GLB · Compression
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of OBJ — Clean Reference Cube
obj
1002 B
Actual file preview for OBJ — Clean Reference Cube

OBJ — Clean Reference Cube

A welded, manifold, consistently-wound unit cube: 8 vertices, 12 triangles, 18 edges each shared by exactly two faces, and a signed volume of exactly 1.0. This is the answer key — each defect fixture in the degenerate/ subcategory is this mesh with exactly one thing wrong.

File
OBJ · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Clean Reference Cube
glb
1008 B
Actual file preview for GLB — Clean Reference Cube

GLB — Clean Reference Cube

The clean reference cube as a GLB, so the same baseline is available to glTF tooling and to the site's 3D preview. Identical topology to the OBJ twin in this group.

File
GLB · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of OBJ — Zero-area Triangles
obj
1.5 KB
Actual file preview for OBJ — Zero-area Triangles

OBJ — Zero-area Triangles

The reference cube plus four triangles with no area, one for each way a mesh can have one: three collinear points, two coincident vertices at different indices, a repeated index, and all three indices identical. Their face normals are undefined, which is where downstream tools produce NaN.

File
OBJ · Degenerate · 16 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Zero-area Triangles
glb
1.2 KB
Actual file preview for GLB — Zero-area Triangles

GLB — Zero-area Triangles

The same four degenerate triangles inside a structurally valid GLB. The file passes every glTF schema check — nothing in the format forbids a zero-area face — so this is the fixture for geometry validation as opposed to document validation.

File
GLB · Degenerate · 16 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of STL — Zero-area Facets with Null Normals
stl
3.5 KB
Actual file preview for STL — Zero-area Facets with Null Normals

STL — Zero-area Facets with Null Normals

An ASCII STL of the reference cube with two extra facets that have no area and declare a null (0 0 0) normal — exactly what CAD tessellators emit at a sliver. Slicers either drop them, warn, or divide by zero; this is how you find out which.

File
STL · Degenerate
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of OBJ — Duplicate Vertices, Split Seam
obj
1.3 KB
Actual file preview for OBJ — Duplicate Vertices, Split Seam

OBJ — Duplicate Vertices, Split Seam

The reference cube with all eight corners stored twice at bit-identical coordinates: the first six triangles use one copy, the last six use the other. It renders as a closed cube but is topologically two disconnected surface patches with a split seam, which is why smoothing, subdivision and boolean operations all misbehave on it.

File
OBJ · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of PLY — Duplicate Vertices, Split Seam
ply
799 B
Actual file preview for PLY — Duplicate Vertices, Split Seam

PLY — Duplicate Vertices, Split Seam

The duplicated-corner cube as ASCII PLY — the format scanners and photogrammetry tools emit, and the one where unwelded duplicates are most common because each captured point arrives independently.

File
PLY · Degenerate
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Duplicate Vertices, Split Seam
glb
1.2 KB
Actual file preview for GLB — Duplicate Vertices, Split Seam

GLB — Duplicate Vertices, Split Seam

The duplicated-corner cube as a GLB. Because glTF stores every attribute per vertex, the duplication doubles the position and normal buffers for a shape that needs eight corners — the cheapest optimisation an asset pipeline can make, and the one this fixture measures.

File
GLB · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of OBJ — Non-manifold Edge (three faces on one edge)
obj
1.2 KB
Actual file preview for OBJ — Non-manifold Edge (three faces on one edge)

OBJ — Non-manifold Edge (three faces on one edge)

The reference cube with a two-triangle fin welded along one top edge, so that edge is shared by three faces instead of two. Non-manifold edges have no defined surface orientation, which is why slicers refuse them and why subdivision and offsetting produce garbage.

File
OBJ · Degenerate · 14 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Non-manifold Edge (three faces on one edge)
glb
1.1 KB
Actual file preview for GLB — Non-manifold Edge (three faces on one edge)

GLB — Non-manifold Edge (three faces on one edge)

The finned cube as a GLB. It renders without complaint in any viewer — rasterisation never asks about adjacency — so this is the fixture that separates tools which actually analyse topology from tools which merely draw triangles.

File
GLB · Degenerate · 14 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of OBJ — Inverted Normals / Mixed Winding
obj
1.1 KB
Actual file preview for OBJ — Inverted Normals / Mixed Winding

OBJ — Inverted Normals / Mixed Winding

The reference cube with three of its six cube faces (six of its twelve triangles) wound clockwise instead of counter-clockwise, and `vn` records that follow the reversed winding into the solid. The classic symptom is a model that looks half-invisible with backface culling on and half-black with it off.

File
OBJ · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Inverted Normals / Mixed Winding
glb
1020 B
Actual file preview for GLB — Inverted Normals / Mixed Winding

GLB — Inverted Normals / Mixed Winding

The mixed-winding cube as a GLB with a default single-sided material, so the reversed faces are culled and you can see straight through the model. Turning on doubleSided hides the defect without fixing it, which is the trap this fixture is for.

File
GLB · Degenerate · 12 triangles
Use case
Mesh repair testingMesh processing QA· Conversion set
Preview of GLB — Sphere LOD 0 (16,128 triangles, very high)
glb
290.3 KB
Actual file preview for GLB — Sphere LOD 0 (16,128 triangles, very high)

GLB — Sphere LOD 0 (16,128 triangles, very high)

The same unit sphere at 16,128 triangles — level 0 of a four-step ladder that spans 202x from top to bottom. Because every level is generated analytically from the same surface rather than decimated, the ladder is an exact reference: any deviation you measure is your tool's, not the fixture's.

File
GLB · Lod · 16,128 triangles
Use case
Mesh decimation testingMesh processing QA+1· Conversion set
Preview of GLB — Sphere LOD 1 (3,968 triangles, high)
glb
73.5 KB
Actual file preview for GLB — Sphere LOD 1 (3,968 triangles, high)

GLB — Sphere LOD 1 (3,968 triangles, high)

The same unit sphere at 3,968 triangles — level 1 of a four-step ladder that spans 202x from top to bottom. Because every level is generated analytically from the same surface rather than decimated, the ladder is an exact reference: any deviation you measure is your tool's, not the fixture's.

File
GLB · Lod · 3,968 triangles
Use case
Mesh decimation testingMesh processing QA+1· Conversion set
Preview of GLB — Sphere LOD 2 (960 triangles, medium)
glb
19.1 KB
Actual file preview for GLB — Sphere LOD 2 (960 triangles, medium)

GLB — Sphere LOD 2 (960 triangles, medium)

The same unit sphere at 960 triangles — level 2 of a four-step ladder that spans 202x from top to bottom. Because every level is generated analytically from the same surface rather than decimated, the ladder is an exact reference: any deviation you measure is your tool's, not the fixture's.

File
GLB · Lod · 960 triangles
Use case
Mesh decimation testingMesh processing QA+1· Conversion set
Preview of GLB — Sphere LOD 3 (80 triangles, low)
glb
2.7 KB
Actual file preview for GLB — Sphere LOD 3 (80 triangles, low)

GLB — Sphere LOD 3 (80 triangles, low)

The same unit sphere at 80 triangles — level 3 of a four-step ladder that spans 202x from top to bottom. Because every level is generated analytically from the same surface rather than decimated, the ladder is an exact reference: any deviation you measure is your tool's, not the fixture's.

File
GLB · Lod · 80 triangles
Use case
Mesh decimation testingMesh processing QA+1· Conversion set
Preview of OBJ — Sphere LOD 3 (low poly)
obj
5.5 KB
Actual file preview for OBJ — Sphere LOD 3 (low poly)

OBJ — Sphere LOD 3 (low poly)

The coarsest level as plain-text OBJ — 80 triangles you can read end to end. Small enough to paste into a bug report, which is what makes it useful when a pipeline mangles winding or normals and you need the smallest reproducer.

File
OBJ · Lod · 80 triangles
Preview of GLB — 24-level Node Hierarchy
glb
4.9 KB
Actual file preview for GLB — 24-level Node Hierarchy

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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF — 24-level Node Hierarchy (JSON)
gltf
10.1 KB
Actual file preview for glTF — 24-level Node Hierarchy (JSON)

glTF — 24-level Node Hierarchy (JSON)

The 24-level spiral as readable JSON, so the `children` arrays and per-level TRS can be traced by eye. Useful when a converter flattens or re-parents a hierarchy and you need to see exactly where.

File
GLTF · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — Node Transforms as 4x4 Matrices
glb
2.4 KB
Actual file preview for GLB — Node Transforms as 4x4 Matrices

GLB — Node Transforms as 4x4 Matrices

Six 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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF — Node Transforms as TRS
gltf
4.3 KB
Actual file preview for glTF — Node Transforms as TRS

glTF — Node Transforms as TRS

The 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.

File
GLTF · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — 64 Nodes Sharing One Mesh
glb
7.8 KB
Actual file preview for GLB — 64 Nodes Sharing One Mesh

GLB — 64 Nodes Sharing One Mesh

An 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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of GLB — One Mesh under Three Parents
glb
9.1 KB
Actual file preview for GLB — One Mesh under Three Parents

GLB — One Mesh under Three Parents

Twelve 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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — EXT_mesh_gpu_instancing (32 instances)
glb
3.5 KB
Actual file preview for GLB — EXT_mesh_gpu_instancing (32 instances)

GLB — 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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA+1· Conversion set
Preview of GLB — Three Scenes, Default is Scene 1
glb
17.1 KB
Actual file preview for GLB — Three Scenes, Default is Scene 1

GLB — Three Scenes, Default is Scene 1

Three 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.

File
GLB · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of glTF — Three Scenes, Default is Scene 1 (JSON)
gltf
23.8 KB
Actual file preview for glTF — Three Scenes, Default is Scene 1 (JSON)

glTF — Three Scenes, Default is Scene 1 (JSON)

The three-scene asset as readable JSON, where the top-level `"scene": 1` is one line you can point at in a bug report. Also the fixture for round-tripping multi-scene assets through tools that keep only one scene.

File
GLTF · Scene Graph
Use case
Conversion testingMesh processing QA· Conversion set
Preview of GLB — Signpost authored in Metres
glb
4.5 KB
Actual file preview for GLB — Signpost authored in Metres

GLB — Signpost authored in Metres

A 1.12 m signpost with its coordinates written in metres — so this file's numbers read up to 1.12. glTF has no unit field: the spec simply says metres, which means a wrongly-scaled export is indistinguishable from a genuinely enormous model until something is measured.

File
GLB · Units
Use case
Conversion testingMetadata testing+1· Conversion set
Preview of GLB — Signpost authored in Centimetres
glb
4.4 KB
Actual file preview for GLB — Signpost authored in Centimetres

GLB — Signpost authored in Centimetres

A 1.12 m signpost with its coordinates written in centimetres — so this file's numbers read up to 112. glTF has no unit field: the spec simply says metres, which means a wrongly-scaled export is indistinguishable from a genuinely enormous model until something is measured.

File
GLB · Units
Use case
Conversion testingMetadata testing+1· Conversion set
Preview of GLB — Signpost authored in Millimetres
glb
4.4 KB
Actual file preview for GLB — Signpost authored in Millimetres

GLB — Signpost authored in Millimetres

A 1.12 m signpost with its coordinates written in millimetres — so this file's numbers read up to 1120. glTF has no unit field: the spec simply says metres, which means a wrongly-scaled export is indistinguishable from a genuinely enormous model until something is measured.

File
GLB · Units
Use case
Conversion testingMetadata testing+1· Conversion set
Preview of OBJ — Signpost authored in Metres
obj
9.8 KB
Actual file preview for OBJ — Signpost authored in Metres

OBJ — Signpost authored in Metres

The same signpost as OBJ with coordinates in metres. OBJ has no unit record of any kind, so the two OBJ files in this group are byte-different and semantically identical — the ambiguity that every OBJ import dialog's scale box exists to resolve.

File
OBJ · Units · 48 triangles
Use case
Conversion testingMetadata testing+1· Conversion set
Preview of OBJ — Signpost authored in Millimetres
obj
10.5 KB
Actual file preview for OBJ — Signpost authored in Millimetres

OBJ — Signpost authored in Millimetres

The same signpost as OBJ with coordinates in millimetres. OBJ has no unit record of any kind, so the two OBJ files in this group are byte-different and semantically identical — the ambiguity that every OBJ import dialog's scale box exists to resolve.

File
OBJ · Units · 48 triangles
Use case
Conversion testingMetadata testing+1· Conversion set
Preview of GLB — Signpost, Y-up
glb
4.5 KB
Actual file preview for GLB — Signpost, Y-up

GLB — Signpost, Y-up

The signpost authored +Y up, which is what the glTF specification mandates and what every conformant viewer assumes. The conformant half of the axis pair: load it, confirm the post stands, and you have calibrated your viewer before testing the Z-up twin.

File
GLB · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of DAE — Signpost, Y_UP declared
dae
5.5 KB
Actual file preview for DAE — Signpost, Y_UP declared

DAE — Signpost, Y_UP declared

The same signpost as COLLADA with `<up_axis>Y_UP</up_axis>` and `<unit meter="1" name="metre"/>` in its asset block. Unlike glTF, OBJ and STL, COLLADA states its convention — so an importer that still gets the orientation wrong has no excuse.

File
DAE · Units · 48 triangles
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of PLY — Signpost, +Y up (comment only)
ply
4.7 KB
Actual file preview for PLY — Signpost, +Y up (comment only)

PLY — Signpost, +Y up (comment only)

The signpost as ASCII PLY with +Y up. PLY has no axis or unit element, so the convention survives only as a header comment that no parser reads — the reason scan data so often arrives rotated.

File
PLY · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of USDZ — Signpost, upAxis "Y"
usdz
4 KB
Actual file preview for USDZ — Signpost, upAxis "Y"

USDZ — Signpost, upAxis "Y"

The signpost as USDZ with `upAxis = "Y"` and `metersPerUnit = 1` in the stage metadata. USD is the only format in this group that declares BOTH the axis and the scale, which is exactly why it is the one AR pipelines standardised on.

File
USDZ · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of GLB — Signpost, Z-up
glb
4.5 KB
Actual file preview for GLB — Signpost, Z-up

GLB — Signpost, Z-up

The same signpost authored +Z up — what a Blender or 3ds Max glTF export produces when the axis conversion is skipped. glTF has no field in which to declare this, so the file is indistinguishable from a model that genuinely lies on its back, and every conformant viewer will show it that way.

File
GLB · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of DAE — Signpost, Z_UP declared
dae
5.5 KB
Actual file preview for DAE — Signpost, Z_UP declared

DAE — Signpost, Z_UP declared

The same signpost as COLLADA with `<up_axis>Z_UP</up_axis>` and `<unit meter="1" name="metre"/>` in its asset block. Unlike glTF, OBJ and STL, COLLADA states its convention — so an importer that still gets the orientation wrong has no excuse.

File
DAE · Units · 48 triangles
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of PLY — Signpost, +Z up (comment only)
ply
4.7 KB
Actual file preview for PLY — Signpost, +Z up (comment only)

PLY — Signpost, +Z up (comment only)

The signpost as ASCII PLY with +Z up. PLY has no axis or unit element, so the convention survives only as a header comment that no parser reads — the reason scan data so often arrives rotated.

File
PLY · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of USDZ — Signpost, upAxis "Z"
usdz
4 KB
Actual file preview for USDZ — Signpost, upAxis "Z"

USDZ — Signpost, upAxis "Z"

The signpost as USDZ with `upAxis = "Z"` and `metersPerUnit = 1` in the stage metadata. USD is the only format in this group that declares BOTH the axis and the scale, which is exactly why it is the one AR pipelines standardised on.

File
USDZ · Units
Use case
Conversion testingMetadata testing+1· Paired fixture
Preview of Convert v2 Tetrahedron Source (FBX)
fbx
280 B
Actual file preview for Convert v2 Tetrahedron Source (FBX)

Convert v2 Tetrahedron Source (FBX)

Real deterministic FBX tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-fbx.

File
FBX · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 Tetrahedron Source (3DS)
3ds
128 B
Actual file preview for Convert v2 Tetrahedron Source (3DS)

Convert v2 Tetrahedron Source (3DS)

Real deterministic 3DS tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-3ds.

File
3DS · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 Tetrahedron Source (AMF)
amf
634 B
Actual file preview for Convert v2 Tetrahedron Source (AMF)

Convert v2 Tetrahedron Source (AMF)

Real deterministic AMF tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-amf.

File
AMF · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 Tetrahedron Source (LWO)
lwo
112 B
Actual file preview for Convert v2 Tetrahedron Source (LWO)

Convert v2 Tetrahedron Source (LWO)

Real deterministic LWO tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-lwo.

File
LWO · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 Tetrahedron Source (VTK)
vtk
150 B
Actual file preview for Convert v2 Tetrahedron Source (VTK)

Convert v2 Tetrahedron Source (VTK)

Real deterministic VTK tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-vtk.

File
VTK · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 Occupied Voxels Source (VOX)
vox
76 B
Actual file preview for Convert v2 Occupied Voxels Source (VOX)

Convert v2 Occupied Voxels Source (VOX)

Real deterministic VOX source with four occupied voxel coordinates, palette indices, and unit occupied-coordinate bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-vox.

File
VOX · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture
Preview of Convert v2 VOX Semantic Geometry Reference
json
660 B
Actual file preview for Convert v2 VOX Semantic Geometry Reference

Convert v2 VOX Semantic Geometry Reference

JSON semantic reference for the VOX fixture, publishing occupied coordinates, palette indices, empty face topology, bounds, and the voxel contract. Stable P8 artifact p8-convert-model-vox-reference.

File
JSON · P8 Convert
Use case
Conversion testingMesh processing QA+1· Paired fixture
Preview of Convert v2 Tetrahedron Source (DRC)
drc
76 B
Actual file preview for Convert v2 Tetrahedron Source (DRC)

Convert v2 Tetrahedron Source (DRC)

Real deterministic DRC tetrahedron source with four vertices, four triangular faces, and unit bounds for Convert v2 import coverage. Stable P8 artifact p8-convert-model-drc.

File
DRC · P8 Convert
Use case
Conversion testingMesh processing QA· Paired fixture