fix(examples): redesign car-mirror-symmetry as a smooth-shaded stylized hatchback - #260
Merged
Merged
Conversation
…ed hatchback The gallery review flagged a pink streak on the hood, sticker headlamps, a faceted body that read unfinished, and dull windows. The streak was investigated first: a camera ray cast maps it to one authored face (station 4, ring segment 5) on the mirrored half at |x| 0.11-0.38, far from the plane, with every weld check passing. It was not a seam defect but a sliver facet where the old ring's greenhouse points collapsed onto the hood, flat-shaded and facing the key almost head on (n . -key = 0.967). The loft is rebuilt: 52 placed stations x 13-point rings that lerp a hood layout into a cabin layout (no slivers), round arches seated on the wheels, flared arch cladding, a character line, and smooth shading with sharp edges by angle and material set on the authored half (Mirror only in the stack, so every count stays closed-form). Lamps, grille, door mirrors and handles are chrome-bezelled pods seated on the skin by BVH ray cast; glass ramps toward steel blue at grazing angles; wheels carry five recessed spokes. The grille is authored as a half across the plane and welded by the merge, so the part check now takes a per-part weld count (2n - weld, on-plane verts == weld) and falsifies both ways (merge off -> exit 14, end point off the plane -> exit 13). The render path now runs the shared framing and asset-quality gates, remapped to 17 and 18 because 10 and 11 are already check codes here. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…nce set Adds the car's SELECT row to scripts/asset_sheet.py (body, wheels and the fitted parts; stage excluded) and regenerates the asset sheet with the committed tool against the reference set pinned in CLAUDE.md after #257: collision-hull-proxy, socket-attach-points, vertex-color-ao, wheelbarrow, apothecary-shelf. The old-car panel from the scratch sheet is dropped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Keeps both asset-sheet SELECT rows (car-mirror-symmetry and export-preset-axis); generated gallery pages regenerate unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.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.
What and why
A gallery review judged the
car-mirror-symmetryhero weak. It named four problems: a stray pink streak on the hood near the windshield, headlamps that looked like flat white stickers, a heavily faceted body that read as unfinished, and dull windows.The streak came first. It is not a mirror-seam defect. I cast camera rays through the streak pixels on the committed code. Every hit landed on one face: authored face #37 (station 4, ring segment 5), seen on the mirrored half.
|x|0.11–0.38, well away from the symmetry plane.n · −key = 0.967), so the clear-coated red blew toward pink.So there was no seam bug and no weld check to add. The redesigned ring cannot produce that thin panel.
Changes
BVHTreeray cast seats it on the body surface. The wheels have five recessed spokes.x = 0, and the merge welds it into one part. The part check now takes a weld count per part: authored on-plane verts must equalweld, evaluated verts must equal2n − weld, and evaluated on-plane verts must equalweld. Offset parts useweld = 0, so their check is unchanged (2n).gallery_framingandgallery_asset_quality; it previously ran neither. Their exit codes are remapped to 17 / 18, because 10 and 11 are already check codes in this script.Before / after
docs/gallery/contact-sheets/car-mirror-symmetry-contact-sheet.webp. The before is the same path onmain.docs/gallery/asset-sheets/car-mirror-symmetry.webp. Built with the committedpython scripts/asset_sheet.py --blender <5.2.1> car-mirror-symmetryagainst the reference set chore(gates): raise the asset-sheet reference bar and commit its renderer #257 pinned in CLAUDE.md. Top row: new car, collision-hull-proxy, socket-attach-points. Bottom row: vertex-color-ao, wheelbarrow, apothecary-shelf. This PR adds the car'sSELECTrow (body, wheels and fitted parts; stage excluded).Gate numbers (5.2.1 LTS, EEVEE)
framing_ok.aq_ok.Contact sheet, per criterion:
measure_hero_drift.py --only car-mirror-symmetryreportsmatches(mean_abs 0.00306, luma 0.1730/0.1728).Check runs (check-only path,
tests/smoke/run_example.py)E:\Blender-Developer-Tools\.scratch\blender-5.2.1-windows-x64\blender.exeE:\Blender-Developer-Tools\.scratch\blender-5.1.2-windows-x64\blender.exeE:\Blender-Developer-Tools\.scratch\blender-4.5.11-windows-x64\blender.exeThe check lines (
body half=…/mirrored parts | …) are byte-identical across all three: body half 676/1289/614, 104 centerline verts; evaluated 1248/2474/1228, Euler 2, manifold, sym_dev 0.000e+00.Falsifiers (5.2.1, each probe breaks one thing then runs
check())--no-mirroruse_mirror_merge=FalseCubeProven by live run
render_hero.py, and the hero-drift match.contact_sheet.py, with its luma, stage, warmth and saturation.scripts/asset_sheet.py.build_gallery.py, with the new alt read in the generateddocs/gallery/index.htmlanddocs/gallery/car-mirror-symmetry/index.html.Established by inspection only
--output) was run on 5.2.1 only, not on 5.1.2 or 4.5.11. It usesCoat Weight,Coat Roughness,ShaderNodeLayerWeightandShaderNodeValToRGB, all present in 4.x Principled/node APIs. CI smoke does not pass--output.🤖 Generated with Claude Code