Baltor Get started

Gallery / Asset contracts

Articulation loss checker for exports that drop joint information

In your harnessAsset contractMIT

Catch exports that keep every mesh but lose what joints need: parts joined into their parent, origins moved off the hinge, node frames rotated, hierarchies flattened, and joint records in custom properties left out by a default export.

Files, names only

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • articulation_loss_checker.py
  • asset_report.py
  • component.json
  • fixtures/bad_manifest.articulation.json
  • fixtures/door_reference.articulation.json
  • fixtures/door_reference.gltf
  • fixtures/door_reordered.gltf
  • fixtures/export_extras_mismatch.gltf
  • fixtures/export_flattened.gltf
  • fixtures/export_frame_rotated.gltf
  • fixtures/export_joined.gltf
  • fixtures/export_origin_to_geometry.gltf
  • fixtures/export_without_extras.gltf
  • gltfio.py
  • pngio.py
  • schema_lite.py
  • test_articulation_loss_checker.py
  • test_package.py
  • verification/native.json

Full files in your harness.

What it takes and gives

Entry points
joint_facts, compare, check, run, main
Proves
Each joint's node exists exactly once with geometry at or below it; with a reference, its world pivot, world axis and parent are unchanged within tolerance (1 mm, 0.5 degrees by default); with extras required, its node carries a joint record equal to the manifest.
Does not prove
That the joint moves the right geometry, or that the joint values are sensible. A reference export must itself be right: the tool compares, it does not judge the reference.
Catches
asset_unreadable, reference_unreadable, manifest_invalid, joint_node_missing, joint_node_ambiguous, joint_node_without_geometry, pivot_moved, joint_axis_changed and 3 more

Limits. Nodes are found by exact name, so a renamed node reads as missing. The extras record is read from extras.joint and compared on type, axis, pivot and limits. Pivot and axis checks need a reference export. The reference and the export are compared in their own scene roots; a change of the whole asset's root transform shows as moved pivots.

Details

Kind
Asset contract
Engine
Python 3.10 or later
Files
22 files, 187.9 KB
Licence
MIT
Declared effects
reads files, runs commands
Checks
checker matches contract, godot sees the same joint facts, blender sees the same joint facts, each blender loss is caught, godot reads the carried joint record
Techniques
World pivot as the world matrix applied to the local pivot, World axis as the world rotation applied to the local axis, compared by angle, glTF 2.0 extras on nodes; Blender custom properties exported as extras, Blender object origin set to geometry and object join as sources of joint loss
Tags
articulation, joints, export, gltf, blender, pivot, extras, regression check
Identity
library.supply.creative_originals.482848e5d7855191bf04a2c8.10e6f512870999ce
Version
10e6f512870999ce7dca61cdf67d196bc1657cd8e7e728974dd8e12bcca322f0

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.