fix(examples): redesign export-preset-axis as a banded radio mast with measured axis gizmos - #262
Merged
Merged
Conversation
…h measured axis gizmos The review judged the hero weak: dim olive-on-grey, a thin undesigned pole with a box, and the Godot copy lying sideways read as "fell over" rather than as an axis convention. - The source is now a modelled radio mast: stepped chamfered concrete footing, bolted flange, tapered mast in red/white aviation bands with steel collars, three sector panels, a shrouded microwave dish on a raked arm, an equipment cabinet, and a red obstruction lamp under a lightning rod whose point is the witnessed tip vertex. Eight materials. - Each re-import gets a modelled X/Y/Z gizmo. The frame is measured, not placed: the render path picks the axis-aligned rotation mapping source vertices onto the re-import (fit_err printed; exit 12 above 1 mm). Unity shows blue Z up; Godot shows green Y up and blue Z along the lying mast. - The camera looks along +X so the lying mast shows its full length. - The render path now runs gallery_asset_quality (exit 11). The check contract is unchanged; the same checks pass on 4.5.11, 5.1.2 and 5.2.1, and --same-axis still exits 9. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: TMHSDigital <[email protected]>
…ence set Adds the RadioMast.Unity selector to scripts/asset_sheet.py and regenerates the asset sheet and contact sheet after rebasing onto the new reference set (#257) and the new bmesh-gear calibration hero (#258). 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 and why
The review picked out this hero as weak: dim olive on grey with very low contrast, a thin undesigned pole with a box, and a Godot copy lying on its side that looked like it had "fell over" instead of showing an axis convention. This PR redesigns both the subject and the composition. The check contract is unchanged.
TIPvertex. It uses 8 named materials.fit_err. It exits 12 if the error is above 1 mm. Unity comes out as identity, so blue Z points up. Godot comes out asY->+Z, Z->-Y, so green Y points up and blue Z runs along the lying mast. The render now reads as "this file's Y is up" and not as a fallen prop.gallery_asset_quality(exit 11).scripts/asset_sheet.pygets aRadioMast.Unityselector row.Before: the old hero (olive pole and box). After:
docs/gallery/assets/export-preset-axis-hero.webp.Gates (5.2.1)
Framing: fill x=0.713, y=0.794 (band 0.70–0.90). Margins: left 0.034, right 0.053, bottom 0.044, top 0.044 (floor 0.02).
framing_ok.Asset quality: no default names, 8 materials, edge90 0.000.
aq_ok.Contact sheet: docs/gallery/contact-sheets/export-preset-axis-contact-sheet.webp
Verdicts:
Asset sheet: docs/gallery/asset-sheets/export-preset-axis.webp was rendered against the reference set on
mainafter chore(gates): raise the asset-sheet reference bar and commit its renderer #257: hydrant, survey drone, stone well, wheelbarrow, apothecary shelf. Verdict: narrow pass. The mast has more modelled fixtures than the hydrant (flange bolts, collars, panels on brackets, dish, cabinet with hood and handle, lamp, rod). It is not the least-designed object in the lineup. Its tall aspect does render it small in a 16:9 panel, and it has no surface wear, so it sits in the lower half of this lineup, not the top.Hero drift:
measure_hero_drift.py --only export-preset-axisreports mean_abs 0.00322, gt2pct 0.95%, verdictmatches.Check runs (check-only path via
tests/smoke/run_example.py, plus--same-axis)--same-axis--outputrender.scratch/blender-5.2.1-windows-x64/blender.exe.scratch/blender-5.1.2-windows-x64/blender.exe.scratch/blender-4.5.11-windows-x64/blender.exeFalsifiers
--same-axisexits 9 on all three binaries (ERROR: orientations did not differ).matrix_worldby a 10° Z rotation before rendering. The best axis-aligned fit rose to 4.288e-01, and the script exited 12 withERROR: no axis-aligned rotation maps the source onto the Godot re-import. Restored; the unmodified run gives fit_err 0.000e+00 for both.Proven by live run vs by inspection only
--same-axisexit 9 on 5.2.1, 5.1.2 and 4.5.11. Render path exit 0 with framing_ok and aq_ok on all three. The exit-12 falsifier on 5.2.1.render_hero.py,contact_sheet.py,asset_sheet.pyandmeasure_hero_drift.pyon 5.2.1.build_gallery.py, with the generated<img alt>checked indocs/gallery/index.htmlanddocs/gallery/export-preset-axis/index.html.Exit code 11 now means two things:
--same-axisdid not collapse the difference (check path,--same-axisonly), and the asset-quality floor (render path only). The two paths never overlap, and the README documents both.🤖 Generated with Claude Code