You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(examples): re-review of the 20 judged-fine examples; seat the gear, buckler and crystal (#247)
* fix(examples): seat the triangulate-tangents buckler on the floor
The display stand hung 0.49 m above the floor with nothing under it, and
nothing held the buckler's 20-degree backward lean. The stand now rests on
the floor, the rim's lowest evaluated vertex bites 1 cm into its top, and a
kickstand strut runs from the buckler's back (found by a local-space ray) to
the floor. The camera and aim ride with the derived lift. Render path only;
exit codes are unchanged on 4.5.11, 5.1.2 and 5.2.1.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
* fix(examples): lean the bmesh-gear on a display wedge
The gear leaned 46 degrees back with nothing behind it, and its lowest tooth
was sunk 4.5 cm into the floor. The gear is now seated from its lowest
evaluated vertex (3 mm bite) and carried by a matte inclined wedge whose
slope lies in the back-cap plane. The camera rides with the seat height.
bmesh-gear is a pinned calibration reference: luma 0.305 -> 0.302, stage
0.237 -> 0.236, warmth +0.370 -> +0.374, saturation 0.195 -> 0.195.
Render path only; exit codes are unchanged on all three binaries.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
* fix(examples): build gp-lineart-contour's crystal as a bipyramid, and mount it
build_crystal duplicated an open cone and flipped it over the original. The
two crossed into an hourglass with open hexagonal ends and an inner spike,
which the old gallery alt described as an hourglass-shaped solid. It is now
the hexagonal bipyramid the docstring intended. The crystal also hovered
0.13 m above the floor; a two-tier hex mount, built after the check from the
lowest evaluated vertex, now holds its lower tip. The still dollies along the
check camera's bearing so the mount stays in frame.
The corrected mesh changes the measured Line Art counts from 10 strokes /
34 points to 2 / 12, identical on 4.5.11, 5.1.2 and 5.2.1. The gates are
lower bounds (>=1, >=4) and are unchanged, as are every assertion and exit
code (default 0, --no-contour 4, --output 0).
Shared gallery.json and gallery index updates for all three examples ride 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>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
<metaname="twitter:description" content="A 14-tooth gear built entirely with bmesh — profile ring, face, extrude — with bm.free() in a try/finally, exactly as the ownership contract demands." />
<p>A 14-tooth gear built entirely with bmesh — profile ring, face, extrude — with bm.free() in a try/finally, exactly as the ownership contract demands.</p>
269
269
</header>
270
270
<mainid="main">
271
-
<buttonclass="detail-hero" id="heroZoom" type="button" aria-label="View full size: A gold fourteen-tooth gear lying at an angle, its face covered in concentric grooves.">
272
-
<imgsrc="../assets/bmesh-gear-hero.webp" alt="A gold fourteen-tooth gear lying at an angle, its face covered in concentric grooves." width="1280" height="720" />
271
+
<buttonclass="detail-hero" id="heroZoom" type="button" aria-label="View full size: A gold fourteen-tooth gear leaning back on a dark display wedge, its face covered in concentric grooves.">
272
+
<imgsrc="../assets/bmesh-gear-hero.webp" alt="A gold fourteen-tooth gear leaning back on a dark display wedge, its face covered in concentric grooves." width="1280" height="720" />
273
273
</button>
274
274
<pclass="zoom-hint">Rendered headless by the example itself — click to zoom.</p>
275
275
<divclass="callout"><spanclass="tag">witnesses</span> Parametric bmesh topology is exactly predictable: verts, edges, and faces match their closed forms, and every edge borders exactly two faces (watertight).</div>
@@ -280,6 +280,7 @@ <h1>bmesh-gear</h1>
280
280
<sectionclass="detail-section md">
281
281
<p>A runnable example that builds a 14-tooth gear entirely with bmesh — profile ring, face, <code>extrude_face_region</code>, translate — following the ownership contract from <ahref="https://github.com/TMHSDigital/Blender-Developer-Tools/tree/main/skills/mesh-editing-and-bmesh/SKILL.md"><code>mesh-editing-and-bmesh</code></a> and the <ahref="https://github.com/TMHSDigital/Blender-Developer-Tools/tree/main/rules/always-free-bmesh.mdc"><code>always-free-bmesh</code></a> rule: every <code>bmesh.new()</code> is paired with <code>bm.free()</code> in a <code>try</code>/<code>finally</code>.</p>
282
282
<p><strong>What it witnesses:</strong> parametric bmesh construction has exactly predictable topology. The check asserts the closed-form counts — verts = 2 × (4 × teeth), faces = sides + 2 caps, edges = 3 × profile — and that the result is watertight (every edge borders exactly two faces). If an op leaks geometry or a face fails to close, the math catches it.</p>
283
+
<p>The still leans the gear back on a matte inclined display wedge. Both contacts are derived from the posed mesh: the lowest back-cap vertex sits 3 mm into the floor, and the wedge's slope lies in the back-cap plane, so the lean is carried rather than held in the air.</p>
283
284
<h2>Run</h2>
284
285
<pre><code># Cheap correctness check (no render) — the CI check:
<imgsrc="../assets/bmesh-gear-hero.webp" alt="A gold fourteen-tooth gear lying at an angle, its face covered in concentric grooves." />
588
+
<imgsrc="../assets/bmesh-gear-hero.webp" alt="A gold fourteen-tooth gear leaning back on a dark display wedge, its face covered in concentric grooves." />
0 commit comments