feat: add gltf-skin-roundtrip example witnessing the skinned export contract#88
Merged
Conversation
…ontract The geometry round-trip left the skinning side of the format uncovered: skeleton, weights, and deformation must all survive it. A seven-bone scorpion rig exported with export_skins and re-imported pins all three — joint list and unit weight sums on disk, bit-exact weights and rest matrices on re-import, identical deformation — plus the parenting hazard (unparented skinned meshes let the exporter bind an armature by name) and the sorted-multiset trap (the exporter welds duplicate loops; compare by rest-key). The skins pipeline is byte-identical on 4.5.11 and 5.1.2. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second of two new examples (after #87): the glTF skinned-mesh export follow-up from the ROADMAP pool — a seven-bone mech scorpion exported with
export_skins=Trueand re-imported, witnessing the skinning contract the geometry round-trip left uncovered. Completes the pipeline arc: modeling/LOD → weighting → tangents → export → skins.Contract witnessed
skins[0].jointsnames all 7 bones; re-imported armature has same bones, same parent chain, rest matrices within 2.38e-07. The +Y-up conversion hits bone node translations exactly like meshes.Version witness: skins pipeline stable — exporter/importer RNA byte-identical (probed with
gltf-export-roundtrip), every measured value identical on both binaries.Falsification evidence (temporary breaks, restored after measurement):
export_skins=FalseContact-sheet gate: gltf-skin-roundtrip-contact-sheet.webp — verdicts: stage darkness ✓, wedge warmth ✓, subject fill ✓ (after a reframe pass), saturation ✓ (orange/teal), thumbnail legibility ✓ (twin scorpions with curled tails). Mean luminance 120.3 vs calibration 139.4 / 100.1 / 143.4 — inside range.
Proven by live run vs inspection:
.scratch/blender-5.1.2-windows-x64/blender.exe(Blender 5.1.2, hash ec6e62d40fa9) and.scratch/blender-4.5.11-windows-x64/blender.exe(Blender 4.5.11 LTS, hash 4db51e9d1e1e) — identical values (bones=7 verts=440 eval_loops=1224 disk_verts=1192 sum=2.98e-08 rest=2.38e-07 w=0.0 pos=4.77e-07). Render exit 0 on both binaries (EEVEE), pixels iterated (4 drafts: framing, claws, angle, fill). All probes live.Test plan
28 examples)examples/gltf-skin-roundtrip/gltf_skin_roundtrip.py --.scratch/blender-5.1.2-windows-x64/blender.exe(5.1.2),.scratch/blender-4.5.11-windows-x64/blender.exe(4.5.11 LTS)Integration: example dir + README (with pipeline-arc cross-references), gallery.json entry, plugin manifest, smoke step, top-level README ("Game asset pipeline" category now 5, counts 27→28), generated pages read character-by-character (alt and callout full), ROADMAP entry shipped-marked.
🤖 Generated with Kimi Code