fix(examples): redesign gn-instance-grid as a 3x3 macropad key field - #278
Merged
Merged
Conversation
The gallery review judged the hero programmer art: nine bare lime cubes on a 3x3 grid joined by thin lattice lines. The tree now instances a modeled DSA-profile keycap (six rounded-rectangle rings, a dished top, sharp foot ring) read in through Object Info, so the realized grid is the key field of a cobalt macropad: recessed well, switch housings, knurled brass knob and an OLED meter (render-only staging). A second Set Material, selected by a per-face position field, puts an orange accent on the front-right key. No floor labels. The check stays exactly as strict and gains a gate. Topology expectations are derived from the keycap's construction parameters (9 x 121 = 1089 verts, 1089 faces). The count gate now runs first (exit 4, where --one-cell still lands); the corner-cell gate (exit 5) asserts one whole keycap in the corner cell; the corner position gate (exit 7) checks bbox centre and the Transform lift; new exit 9 asserts the accent selection covers exactly one keycap at the front-right grid point. The render path adds the framing (10) and asset-quality (11) gates. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: TMHSDigital <[email protected]>
Union of asset-sheet SELECT rows; generated gallery pages regenerated. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: TMHSDigital <[email protected]>
Union of asset-sheet SELECT rows; generated gallery pages regenerated. 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 called the
gn-instance-gridhero programmer art: nine bare lime cubes on a 3x3 grid joined by thin lattice lines.The Geometry Nodes tree now instances a modeled DSA-profile keycap instead of a Mesh Cube. The keycap is six rounded-rectangle rings with a dished top and a sharp foot ring, read in through
Object Infoin original space. The realized grid becomes the key field of a cobalt 3x3 macropad. The recessed well, switch housings, knurled brass knob with an emissive pointer, and OLED level meter are render-only bmesh staging. A secondSet Material, selected by a per-face position field, puts an orange accent on the front-right "enter" key. There are no floor labels.Tree: Mesh Grid → Instance on Points (Object Info keycap) → Realize Instances → Transform → Set Shade Smooth → Set Material → Set Material (position-field selection). It is still generative, with no Group Input.
Check changes: same strictness plus one new gate
CAP_RINGS/CORNER_SEGSand not measured off the mesh. This gate now runs first, and--one-cellstill lands here.Keycap.PBTandKeycap.Accentboth carried by Set MaterialThe README now says the realize count is numeric in the render, because instances draw the same either way. The render does show the grid (
--one-cellleaves one keycap in an empty well) and where the accent selection landed.Evidence
Before/after contact sheet:
docs/gallery/contact-sheets/gn-instance-grid-contact-sheet.webpAsset sheet:
docs/gallery/asset-sheets/gn-instance-grid.webp. I added aSELECTrow^Macropad\.toscripts/asset_sheet.py. It keeps the hidden keycap source so Object Info still resolves.Framing (5.2.1): fill x = 0.566, y = 0.828 (in band). Margins: left 0.209, right 0.225, bottom 0.056, top 0.117.
framing_ok.Asset floors: no default names; materials n = 8 (dominant 0.22); edge90 = 0.141; compactness 14.6 (informational).
aq_ok.Contact sheet, per criterion:
Asset-sheet verdict: in the lineup (hydrant, drone, well, wheelbarrow, apothecary shelf), the macropad is not the least-designed object. It has named parts, 8 materials, rolled and chamfered edges, knurling and a dished keycap profile.
Hero drift:
measure_hero_drift.py --only gn-instance-gridgives mean_abs 0.00323, which it reports asmatches.Check runs (local)
--one-cell--outputrender path.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.exeCheck output on all three:
eval_verts=1089 eval_faces=1089 corner=(1.20,1.20,z 0.22..0.85) accent=121f@(1.20,-1.20).Falsifiers (5.2.1; each patched on a scratch copy, then discarded)
carrier should have 1 vertex, got 2verts=0 faces=0 != 1089/1089verts=873 faces=873 != 1089/1089--one-cell(all binaries)verts=121 faces=121 != 1089/1089corner cell holds 165 verts, expected one keycap (121)materials=[None, 'Keycap.Accent']corner keycap z-min=0.3000 != 0.2200242 faces centred at (1.200,-0.600)Proven by live run
--one-celland the render path on 5.2.1, 5.1.2 and 4.5.11 (table above).render_hero.py; contact sheet; asset sheet; drift;build_gallery.pyre-run after rebasing onorigin/main.<img alt>read indocs/gallery/index.htmlanddocs/gallery/gn-instance-grid/index.html.Established by inspection only
🤖 Generated with Claude Code