Asset specification schema with validator and blockout generator
In your harnessAsset contractMIT
Declare what a 3D asset must be before it is modelled: parts with parents, dimensions, centres, pivots and materials; joints with axes and limits; clips and behaviors. Validate a specification and generate a placeholder glTF that realises it.
ATTRIBUTION.mdLICENSEREADME.mdasset_report.pyasset_specification_schema.pycomponent.jsonfixtures/bad_axis_zero.spec.jsonfixtures/bad_behavior_reference.spec.jsonfixtures/bad_clip_target.spec.jsonfixtures/bad_dotted_name.spec.jsonfixtures/bad_joint_unknown_part.spec.jsonfixtures/bad_limits_reversed.spec.jsonfixtures/bad_material_unknown.spec.jsonfixtures/bad_negative_dimension.spec.jsonfixtures/bad_parent_cycle.spec.jsonfixtures/bad_unknown_field.spec.jsonfixtures/bad_unknown_parent.spec.jsonfixtures/cabinet_with_drawer.spec.jsonfixtures/desk_lamp.spec.jsongltfio.pypngio.pyschema.jsonschema_lite.pytest_asset_specification_schema.pytest_package.pyverification/native.json
Full files in your harness.
What it takes and gives
- Entry points
- schema.json, validate, blockout, check, run, main
- Proves
- The document matches schema.json and its cross-references hold: unique part, clip and material names, parents that exist without cycles, joints on existing parts (one per part) with unit axes and limits that suit the joint type, clip targets and behavior references that exist, part materials that are declared.
- Does not prove
- That a real model satisfies the specification (gltf_semantic_recovery compares a model with it) or that the declared motion is physically plausible. The blockout is a placeholder of boxes, not a model.
- Catches
- specification_unreadable, schema_violation, part_name_repeated, parent_unknown, parent_cycle, joint_part_unknown, joint_part_repeated, joint_axis_zero and 7 more
Limits. Rest poses carry no rotation: the blockout places parts by translation only, and joint axes are read in the asset frame. Names are limited to letters, digits, underscore, space and hyphen so that Godot and Blender keep them unchanged. Continuous and fixed joints get no limit clip. The standard-library schema check implements the keywords this schema uses, not all of JSON Schema.
Details
- Kind
- Asset contract
- Engine
- Python 3.10 or later
- Files
- 26 files, 146.1 KB
- Licence
- MIT
- Declared effects
- reads files, runs commands, writes files
- Checks
- checker matches contract, schema agrees with jsonschema, godot realises each valid specification, blender realises each valid specification
- Techniques
- JSON Schema draft 2020-12: type, properties, required, additionalProperties, $ref and $defs, Parent chain walking for cycle detection, Axis-angle to unit quaternion conversion, glTF 2.0 specification: nodes, meshes and animation channels
- Tags
- json schema, asset specification, contract, joints, blockout, gltf, 3d asset, validator
- Identity
library.supply.creative_originals.984c4330b465711a8de1434d.88a0b783e2f9115a- Version
88a0b783e2f9115a0d418c5055c034ea6ebd19112445c2ce36f1fc397180311b
The version is the SHA-256 of the item your harness downloads; every file in it names its own checksum.
Something wrong with this item, its rights or its safety? Report it on the support page, or from your harness after a download.