What this component contains
ATTRIBUTION.mdLICENSEREADME.mdasset_report.pycomponent.jsonfixtures/bad_accessor_out_of_bounds.gltffixtures/bad_attribute_counts.gltffixtures/bad_buffer_length.gltffixtures/bad_cubic_output_count.gltffixtures/bad_index_out_of_range.gltffixtures/bad_inverse_bind_count.gltffixtures/bad_key_times.gltffixtures/bad_node_cycle.gltffixtures/bad_position_bounds.gltffixtures/bad_rotation_not_unit.gltffixtures/bad_skin_attributes_missing.gltffixtures/bad_texture_reference.gltffixtures/good_door.gltffixtures/good_skinned_strip.gltfgltf_structural_validator.pygltfio.pypngio.pyschema_lite.pytest_gltf_structural_validator.pytest_package.pyverification/native.json
How it works
- Entry points
- validate_file, validate, run, main
- Proves
- Every index the file uses points at an existing entry; every accessor lies inside its buffer view and buffer, is aligned, and its declared min and max equal the data; primitives have consistent attribute counts and in-range indices; the node graph is a forest with one parent per node; skins and animation samplers have the counts and types the glTF 2.0 data model requires.
- Does not prove
- That the asset looks right, has sensible dimensions, names or materials, that its extensions are supported by a given engine, that textures decode, or that animation motion is plausible. It is not the Khronos glTF-Validator and does not implement every rule of the specification.
- Catches
- file_unreadable, json_invalid, asset_header_invalid, asset_version_unsupported, property_type_invalid, extension_required_not_used, buffer_invalid, buffer_unresolved and 61 more
Recorded checks
blender_and_godot blender 5.2.1 LTS (hash 9e2066aef7ef built 2026-08-25 02:12:34); godot 4.7.2.stable.official.ed1daf0bf
checker_matches_contractgodot_agrees_on_known_goodblender_agrees_on_known_goodknown_wrong_refused_with_engine_reactions
Limits to consider
Pure Python: an asset with one million vertices and one million indices took about 8 seconds on the build host under load (October 9, 2026). Extension contents (KHR_*, EXT_*) are not validated, only extensionsRequired against extensionsUsed. Images are checked for existence and PNG or JPEG magic bytes, not decoded. Sparse accessors, matrix column padding and GLB containers are supported. Animation pointer targets are accepted without further checks. Rules of the specification outside the listed failure codes are not checked.