Animation export trap checker with a Blender declare and repair procedure
In your harnessAsset contractMIT
Catch exports that keep every mesh but lose animation: only the playing action exported, clips merged, channels without targets, clips baked to one pose or over the whole scene range. Ships the Blender scripts that declare a scene's clips and put every action on its own NLA track.
ATTRIBUTION.mdLICENSEREADME.mdanimation_export_trap_checker.pyasset_report.pycomponent.jsonfixtures/bad_active_action_only.gltffixtures/bad_declaration_path.clips.jsonfixtures/bad_merged_clips.gltffixtures/bad_no_animations.gltffixtures/bad_scene_range_bake.gltffixtures/bad_static_clip.gltffixtures/bad_unresolved_target.gltffixtures/door.clips.jsonfixtures/door.gltfgltfio.pypngio.pyprocedure/declare_clips_blender.pyprocedure/push_actions_to_nla.pyschema_lite.pytest_animation_export_trap_checker.pytest_package.pyverification/native.json
Full files in your harness.
What it takes and gives
- Entry points
- export_clips, read_declaration, compare, check, run, main, procedure/declare_clips_blender.py, procedure/push_actions_to_nla.py
- Proves
- The export carries a clip of each declared name, each declared target (node and path) has a resolved channel in it, at least one channel of it changes value, its play length is within tolerance of the declaration, and no channel of any clip points at a missing node.
- Does not prove
- That the motion is the intended motion (only that something moves), that interpolation matches the source curves, or that an engine plays the clip on the right node at run time.
- Catches
- asset_unreadable, declaration_invalid, animations_missing, clip_missing, clips_merged, clip_target_missing, channel_target_unresolved, clip_static and 1 more
Limits. Clips are matched by exact name; a renamed clip is reported missing with similar names as a hint. Motion is detected as any output value changing by more than 1e-5, so a quaternion that flips sign without turning counts as motion. The Blender scripts read actions through slots and channel bags (Blender 4.4 and later) and fall back to plain F-curves; they handle object, bone and shape key channels, not drivers, constraints or geometry nodes animation. The declared play length is the last frame of the action range divided by the scene frame rate.
Details
- Kind
- Asset contract
- Engine
- Python 3.10 or later
- Files
- 23 files, 190.2 KB
- Licence
- MIT
- Declared effects
- reads files, runs commands, writes files
- Checks
- checker matches contract, godot plays the same clips, blender plays the same clips, comparator rejects altered engine facts, trap reproduced by blender default export, procedure fix exports every declared clip, godot plays the repaired export
- Techniques
- glTF 2.0 specification: animations, channels, samplers and interpolation, Blender NLA tracks and strips as the unit of separate glTF clips, Blender layered actions: slots and channel bags
- Tags
- gltf, animation, export, blender, nla, clips, procedure, 4d
- Identity
library.supply.creative_originals.f6ba574decda59d983a0d5ef.8d15b0a4f3d668c8- Version
8d15b0a4f3d668c85343195e3ee5e17ac395c7cf29b3e335d9304a61849e71ae
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.