Baltor Get started

Gallery / Asset contracts

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.

Files, names only

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • asset_report.py
  • asset_specification_schema.py
  • component.json
  • fixtures/bad_axis_zero.spec.json
  • fixtures/bad_behavior_reference.spec.json
  • fixtures/bad_clip_target.spec.json
  • fixtures/bad_dotted_name.spec.json
  • fixtures/bad_joint_unknown_part.spec.json
  • fixtures/bad_limits_reversed.spec.json
  • fixtures/bad_material_unknown.spec.json
  • fixtures/bad_negative_dimension.spec.json
  • fixtures/bad_parent_cycle.spec.json
  • fixtures/bad_unknown_field.spec.json
  • fixtures/bad_unknown_parent.spec.json
  • fixtures/cabinet_with_drawer.spec.json
  • fixtures/desk_lamp.spec.json
  • gltfio.py
  • pngio.py
  • schema.json
  • schema_lite.py
  • test_asset_specification_schema.py
  • test_package.py
  • verification/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.