fix(examples): redesign shape-key-blend as a ceramic vase morphing jar to trumpet - #275
Merged
Merged
Conversation
…r to trumpet The committed hero was three bare purple boxes with a thin wire cage: programmer art whose only difference between copies was height. The subject is now a lathe-turned ceramic vase (cobalt glaze, ochre band, bisque foot, cream interior) whose relative Tall key lifts the rim, flares the lip and slims the belly, shown at values 0, 0.5 (the checked object) and 1. The ochre band rides the key, and three thin rings read from the Basis key block trace the jar's belly around the full key. The check keeps its contract and codes 3-9: every raw vertex must equal Basis, every evaluated vertex must match basis + value * (key - basis), the foot stays at z=0, and the rim ring is lifted and flared in closed form. The render path now runs the shared framing (10) and asset-quality (11) gates; no-file moves to 12. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: TMHSDigital <[email protected]>
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.
What changed and why
The gallery review judged the
shape-key-blendhero weak: three bare purple boxes of increasing height with a thin wire cage. It was programmer art, and the only thing that changed between the copies was their height.The subject is now a lathe-turned ceramic vase. It has four materials: a cobalt glaze with noise mottling, a raised ochre band, a bisque foot and a cream interior. Its relative
Tallkey does three things:The hero shows the same vase at
Tall.value0 / 0.5 / 1, left to right: squat jar, amphora, trumpet vase. The middle vase is the checked object. The ochre band is part of the lathe profile, so it moves with the key: it sits thin on the jar's shoulder and ends up taller and higher on the full key. Around the full-key vase, three thin pale rings are read straight from theBasiskey block. They trace the jar's belly that the blend started from. If the blend broke, the render would show three identical jars. There are no text labels.Check (contract kept, codes 3–9 unchanged in meaning)
3there are no shape keys;4the key names are not[Basis, Tall];5Tall.valueis not 0.5 (--zero-blend)6the undeformedmesh.verticesare not at Basis. This check is now stronger: it compares every vertex against the Basis key block, and also the Basis rim ring (z = 1.0, r = 0.335).7an evaluated vertex is offbasis + value × (key − basis)8the evaluated Z span is not [0, 1.0 + 0.5 × 1.5]. The foot stays on the floor and the rim is lifted.9the rim-ring radius is not 0.335 + 0.5 × 0.38 (the flare). This replaces the old top-face half-extent check.key_blocks["Tall"].data.foreach_get/foreach_set("co"), and the check reads withforeach_get. The mesh has 7426 verts.gallery_framing(exit 10) andgallery_asset_quality(exit 11). "No file" moved from 10 to 12, and the README exit table is updated to match.Mesh.materials.clear()before appending slots drops the per-facematerial_indexattribute. Every face then rendered as slot 0. The render path no longer callsclear(), and a comment in the code explains why.Gate numbers (5.2.1)
aq_ok.measure_hero_drift.py --only shape-key-blend): mean_abs 0.00333, luma 0.2181/0.2178 → matches.Contact sheet
docs/gallery/contact-sheets/shape-key-blend-contact-sheet.webpAsset sheet
docs/gallery/asset-sheets/shape-key-blend.webp. It was built withscripts/asset_sheet.py, and I added aSELECTrow for^Vase$, the checked vase alone. The references come fromCLAUDE.md: collision-hull-proxy, socket-attach-points, vertex-color-ao, wheelbarrow, apothecary-shelf.Verdict: borderline pass. The vase is a single lathe object. Its silhouette is simpler than the drone, well, barrow and shelf, and roughly on par with the hydrant. Its finish (reactive glaze, raised band, bisque foot, glazed interior) keeps it from reading as placeholder. A reviewer could reasonably rank it lowest in the lineup on part count, but not on surface design. This is a technique example rather than a game-asset example, so the sheet is supplied as evidence rather than as a hard ship gate.
Check runs (check-only README command,
--factory-startup)--zero-blend--outputrender + gatesE:\Blender-Developer-Tools\.scratch\blender-5.2.1-windows-x64\blender.exe(Blender 5.2.1 LTS)E:\Blender-Developer-Tools\.scratch\blender-5.1.2-windows-x64\blender.exe(Blender 5.1.2)E:\Blender-Developer-Tools\.scratch\blender-4.5.11-windows-x64\blender.exe(Blender 4.5.11 LTS)All three print
keys=['Basis', 'Tall'] value=0.5 verts=7426 eval_z=0.000..1.750 rim_r=0.525 undeformed_rim=1.000/0.335.Falsifiers (5.2.1, scratch probe wrapper that imports the module and breaks one thing)
shape_key_clear()--zero-blendmesh.vertices(the trap)Tall.relative_key = TallProven by live run vs established by inspection
Proven by live run:
--zero-blendand render+gates on 5.2.1, 5.1.2 and 4.5.11render_hero.py,contact_sheet.py,asset_sheet.pyandmeasure_hero_drift.pyon 5.2.1build_gallery.pyafter rebasing on main. I read the regenerated<img alt>and the witnesses callout indocs/gallery/index.htmlanddocs/gallery/shape-key-blend/index.html.Established by inspection only:
🤖 Generated with Claude Code