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
{{ message }}
Repository navigation
Commit baceb32
Browse filesBrowse the repository at this point in the historyBrowse files
The third piece in the household category: a 1950s oscillating pedestal
fan. A hollow two-tier cast base (9 mm wall) on a rubber gasket, with a
chrome bead at the step, a rotary speed switch (escutcheon, ribbed knob
with pointer, detent studs) and an oval badge in a bezel; a telescoping
column (enamel lower tube in a ferrule, knurled height-lock collar with a
thumb screw, chrome upper tube, neck); a strap yoke with eyes on the tilt
pivot, a knurled tilt knob and a cap nut; a motor housing with cooling
slots, a hooped trim band, pivot bosses and a gearbox carrying the
oscillation knob; a two-half wire guard (24 spokes + 4 rings in front,
24 + 3 behind, each half welded to its own rim ring, the rims clipped by
six clips, a cream centre badge); four swept, pitched brass blades on a
hub with a hex spinner nut; a cord looping round the base to a plug. The
head turns 28 deg on the column and tilts 7 deg up, built in one head frame.
Six materials: sage enamel, chrome, brass, rubber, bakelite, badge.
Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe
reports "Blender 5.2.1 LTS". 4.5 LTS and 5.1 are left to CI (not run locally).
Recomputed budgets (5.2.1):
- 41460 tris (band 40600-41900); LOD1 0.5000, LOD2 0.2200
- 6 materials: enamel 4732, chrome 13960, brass 584, rubber 1216,
bakelite 810, badge 440 faces
- UVs in 0..1, overlap 0; AABB 0.7614 x 0.7039 x 1.2286 m, zmin 0 (gasket 0)
- collider 1997 tris (ceiling 2200); bake FINISHED; glTF 3114936 B
- hygiene all 0, zero coplanar cross-shell pairs (drafts measured 388,
then 192: three detent studs were one lathe translated in a plane, and
neighbouring spokes' facets met near the flat dome top; studs are now
staggered 0.3 mm and turned, each wire's section turned 0.618k rad)
- coaxial: rear rim, hub, spinner, shaft, bezel, rear mount and motor
housing 0.000001 m off the guard axis (cap 0.0005), rims 0.0078 deg apart
- guard wires: every spoke 0.000743 m from its rim ring's centreline at
worst (cap 0.0026), all 7 rings cross all 24 spokes of their half
- column plumb 0.000 deg (cap 0.2), on the base's axis 0.000000 m (cap
0.001); guard 0.4522 m, base 0.4000 m across (tol 0.004)
- blade tips 0.01945 m inside the rims (band 0.012-0.030), 0.01403 m from
the nearest wire (floor 0.006); gaps 90 deg within 0.0002 (cap 0.3)
- stance: 28.43 kg, stands on a 19.06 deg incline before it tips (floor 16)
- one connected assembly of 109 shells
- two default runs print identical measurements
Falsifiers (flag -> measured -> exit):
- --skip-decimate -> LOD1 ratio 1.0000 -> 9
- --stray-vert -> loose_v 1 -> 15
- --lift-z -> zmin 0.05000 -> 16
- --offset-hub -> hub 0.003000 m off the guard axis -> 17
- --short-spoke -> spoke 0.014906 m from its rim ring -> 18
- --lean-column -> lower tube 1.0000 deg, 0.001501 m off axis -> 19
- --long-blades -> tip clearance 0.00745 m -> 20
- --skew-blade -> spacing off 4.9998 deg -> 21
- --hollow-base -> 12.39 deg incline (18.64 kg, base 2.87 kg) -> 22
- --loose-spinner -> 2 components -> 23
Tris and AABB identical to the default under every falsifier; every
earlier budget green in each run.
Render: render_hero.py wrote hero and preview. Framing fill x 0.253,
y 0.833, margins >= 0.061 (a tall prop; the cord's loop and a
three-quarter head carry the width). Asset-quality floors pass; a
violation remaps to exit 24.
Asset sheet (docs/gallery/asset-sheets/floor-fan.webp): not the
least-designed object in the lineup; the hydrant is plainer. Isolated it
reads as a vintage fan: guard spokes and rings, brass blades, yoke, tilt
and oscillation knobs, switch, cord and plug. Weak points: it is thin and
small in its panel, the blades read darker than the chrome, and the
cooling slots barely show at sheet scale.
Contact sheet: luma 0.2384 against calibration 0.2369-0.2428 (in band).
Stage 0.2105 against 0.1919-0.2517 (in band). Wedge warmth +0.1145
against -0.1440/+0.1052/+0.0921 (warm, slightly above the warmest).
Saturation 0.2150 against 0.1525-0.2367 (in band). Thumbnail legibility
good but slender. The first lit draft measured luma 0.2099 and warmth
+0.044; relit by raising key, fill and wedge.
Also updated: README, CLAUDE.md and ROADMAP counts and entries, the
asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated
gallery. build_gallery, check_site_links (102 pages, 0 failures),
check_falsifier_targets, check_exit_code_readme, check_engine_id,
check_gallery_images and the count check all pass.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 46 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
40
+
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 47 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
41
41
42
42
The content is consumed by AI coding agents reading these files directly from a checkout — **there is no MCP server in this repository, and none is required**. Cursor applies `rules/*.mdc` automatically wherever their scope globs match and takes skills by name in chat; Claude Code reads `skills/` and `rules/` from the project workspace, or from this repo kept as a referenced checkout. Any agent that can read files in a workspace can use it the same way. There is no build step for the content — edit the Markdown and Python files directly.
43
43
@@ -106,7 +106,7 @@ per-script exit-code model, are in
106
106
Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](showcase/README.md).
107
107
108
108
<details>
109
-
<summary><strong>46 showcase pieces</strong> — click to expand the preview grid</summary>
109
+
<summary><strong>47 showcase pieces</strong> — click to expand the preview grid</summary>
110
110
111
111
<palign="center">
112
112
<ahref="showcase/shipping-crate/"><imgsrc="showcase/shipping-crate/preview.webp"width="24%"alt="Shipping crate: a wooden slat crate stencilled PORT ROYAL and NO 17, with iron corner brackets and an end handle, on a dark studio floor, warm wedge on the back wall" /></a>
@@ -155,6 +155,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
155
155
<ahref="showcase/hover-bike/"><imgsrc="showcase/hover-bike/preview.webp"width="24%"alt="Hover bike: a teal sci-fi speeder with pearl racing stripes, a stitched black saddle, clip-on bars and two ducted fans with orange spinners, parked on landing skids, on a dark studio floor" /></a>
156
156
<ahref="showcase/weight-rack/"><imgsrc="showcase/weight-rack/preview.webp"width="24%"alt="Weight rack: a red half rack holding a barbell loaded with blue and yellow bumpers on J-hooks, plates on storage horns and two hex dumbbells, on a dark studio floor" /></a>
157
157
<ahref="showcase/boulder-cluster/"><imgsrc="showcase/boulder-cluster/preview.webp"width="24%"alt="Boulder cluster: a speckled granite block, a banded sandstone boulder split in two and a slab resting on a smaller boulder, sunk in a grassy soil mound with pebbles and wildflowers, on a dark studio floor" /></a>
158
+
<ahref="showcase/floor-fan/"><imgsrc="showcase/floor-fan/preview.webp"width="24%"alt="Floor fan: a sage-green 1950s pedestal fan with a chrome wire guard over four brass blades, its head turned on a tilt yoke, a telescoping column and a round cast base, its cord looped to a plug, on a dark studio floor" /></a>
158
159
</p>
159
160
160
161
[`shipping-crate`](showcase/shipping-crate/) — procedural crate through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets. Falsifier `--skip-decimate` exits 9.
@@ -245,6 +246,8 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
245
246
246
247
[`boulder-cluster`](showcase/boulder-cluster/) — the third `nature` piece: procedural glacial boulder cluster (four boulders cut from ellipsoids by cleavage planes with weathered bevels: a speckled granite block, a banded sandstone boulder split in two with matching crack faces and bedding, and a sandstone slab resting flat on a smaller granite boulder, with lichen crusts and moss cushions on the tops and north faces, sunk into a soil mound with grass tufts, pebbles and wildflowers), whose boulders sunk into the soil all round, slab seated on its support and balanced over its footprint, split halves matching across the crack, growth facing up or north and ground cover rooted in the soil are recomputed from the mesh, through the same pipeline. Falsifiers `--perch-boulder` exits 17, `--float-slab` 18, `--perch-slab` 19, `--skew-half` 20, `--sunny-lichen` 21, `--float-cover` 22.
247
248
249
+
[`floor-fan`](showcase/floor-fan/) — the third `household` piece: procedural 1950s oscillating pedestal fan (a hollow two-tier cast base on a rubber gasket with a rotary speed switch and badge, a telescoping column with a knurled height-lock collar, a strap yoke with a tilt knob, a slotted motor housing with an oscillation knob, a two-half wire guard of spokes and rings welded to clipped rim rings, four swept brass blades on a hub with a spinner nut, and a cord to a plug), whose rotor and head coaxial with the guard, spokes seated in their rim rings, plumb column on the base's axis, blade-tip clearance, equal blade spacing, tip-over angle and single connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--offset-hub` exits 17, `--short-spoke` 18, `--lean-column` 19, `--long-blades` 20, `--skew-blade` 21, `--hollow-base` 22, `--loose-spinner` 23.
Copy file name to clipboardExpand all lines: ROADMAP.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -158,7 +158,7 @@ Not committed; target list for the next content version. (v0.3.0 shipped the smo
158
158
- Showcase pieces above this line are category `village`. Candidates for the other categories (`showcase/README.md` § Categories):
159
159
- **Sports:** ~~basketball hoop (pole, backboard, rim, hung net)~~ **SHIPPED** as `showcase/basketball-hoop/` — gooseneck pole on a bolted anchor plate, braced framed board with painted square, regulation rim, twelve-loop net hung on the rim hooks; `--drop-net` exits 18 on the loops threaded through the hooks while the envelope holds, `--tilt-rim` 19 on rim height/size/level, `--skip-decimate` 9 on the LOD1 ratio band; ~~soccer goal (tube frame, netting)~~ **SHIPPED** as `showcase/soccer-goal/` — 5 × 2 m youth goal, oval extrusion mitred and welded at the corners, cast brackets, foot connectors and hubs, sloped supports and a staked steel ground frame, sagging diamond-mesh net on a red head rope through 53 clips, turf patch with a goal line; `--float-bar` exits 16 on every ground bar bedded in the turf, `--short-support` 17 on the supports seated in their sockets, `--unclip-net` 18 on the head rope through every clip, `--wide-mouth` 19 on the clear mouth size, `--taut-net` 20 on the back panel's sag, while the envelope holds; tennis net on posts, ~~weight rack with plates and dumbbells~~ **SHIPPED** as `showcase/weight-rack/` — half rack of punched, numbered uprights on bolted, padded feet, J-hooks with UHMW saddles and spotter arms on pull pins, plate-storage horns, a loaded Olympic barbell (knurled shaft, bumpers with raised numerals, iron change plates, spring clips) and two hex dumbbells; `--float-foot` exits 16 on every pad and dumbbell head on the floor, `--offset-pin` 17 on the pins coaxial with their holes, `--float-bar` 18 on the bar seated in both saddles, `--hook-high` 19 on the bar level, `--gap-plate` 20 on the plates seated along their sleeves, `--odd-load` 21 on the balanced load, `--loose-horn` 22 on one connected rack, while the envelope holds; alternates bowling pins and ball, skateboard
160
160
- **Nature:** ~~pine tree (trunk, tiered branch whorls)~~ **SHIPPED** as `showcase/pine-tree/` — buttressed trunk with surface roots, ten seeded whorls of limbs seated in the bark, faceted needled shoots, dead stubs and cones; `--float-branches` exits 17 on the branch seat, `--lean-crown` 19 on trunk plumb, `--bunch-whorls` 20 on whorl spacing, while the envelope holds; ~~boulder cluster~~ **SHIPPED** as `showcase/boulder-cluster/` — a speckled granite block, a banded sandstone boulder split in two with matching crack faces and bedding, and a sandstone slab resting on a smaller granite boulder, cut by cleavage planes with weathered bevels, with lichen crusts and moss cushions, sunk into a soil mound with grass tufts, pebbles and wildflowers; `--perch-boulder` exits 17 on every boulder sunk into the soil, `--float-slab` 18 on the slab seated on its support, `--perch-slab` 19 on its mass centre over its footprint, `--skew-half` 20 on the split halves matching, `--sunny-lichen` 21 on growth facing up or north, `--float-cover` 22 on the ground cover rooted in the soil, while the envelope holds; ~~fallen log with fungus~~ **SHIPPED** as `showcase/fallen-log/` — furrowed log on a bowed axis with peeled, galleried sapwood, a hollow saw-cut butt, a splintered top, broken stubs, moss cushions, three tiers of bracket fungi, and a soil mound with toadstools, ferns and fallen leaves; `--hump-ground` exits 17 on the log bedded along its length, `--float-fungi` 18 on the brackets rooted in the bark, `--tilt-ground` 19 on the mass centre over the contact patch, `--sunny-moss` 20 on moss facing up or into the shade, `--float-litter` 21 on the ground cover rooted in the soil, while the envelope holds; tree stump with mushrooms; alternates flowering shrub, cattail reeds
161
-
- **Household:** ~~articulated desk lamp~~ **SHIPPED** as `showcase/desk-lamp/` — stepped cast base, parallelogram arm sections pinned through knuckle bosses, three springs hung on cross bars, domed shade with reflector, lamp, flex and plugged cable; `--offset-pin` exits 17 on the pins coaxial with their eyes, `--unhook-spring` 18 on the spring ends seated on their bars, `--hollow-base` 19 on the mass centre over the base footprint, while the envelope holds; ~~office chair (five-star base, casters)~~ **SHIPPED** as `showcase/office-chair/` — polished five-star base with ribbed spokes and swivelled twin-wheel casters, chrome gas lift in a telescoping cover, tilt mechanism with knob and levers, contoured seat with a piped welt, reclined mesh back with lumbar pad and headrest on an aluminium spine, height-adjustable T-arms; `--float-caster` exits 16 on every wheel on the floor, `--skew-spoke` 17 on the five-star spacing and plumb stems, `--offset-column` 18 on the gas lift coaxial with hub and socket, `--uneven-arms` 19 on mirrored level armrests, `--loose-wheel` 20 on one connected assembly, while the envelope holds; kitchen stool, mini fridge; alternates floor fan, laundry basket
161
+
- **Household:** ~~articulated desk lamp~~ **SHIPPED** as `showcase/desk-lamp/` — stepped cast base, parallelogram arm sections pinned through knuckle bosses, three springs hung on cross bars, domed shade with reflector, lamp, flex and plugged cable; `--offset-pin` exits 17 on the pins coaxial with their eyes, `--unhook-spring` 18 on the spring ends seated on their bars, `--hollow-base` 19 on the mass centre over the base footprint, while the envelope holds; ~~office chair (five-star base, casters)~~ **SHIPPED** as `showcase/office-chair/` — polished five-star base with ribbed spokes and swivelled twin-wheel casters, chrome gas lift in a telescoping cover, tilt mechanism with knob and levers, contoured seat with a piped welt, reclined mesh back with lumbar pad and headrest on an aluminium spine, height-adjustable T-arms; `--float-caster` exits 16 on every wheel on the floor, `--skew-spoke` 17 on the five-star spacing and plumb stems, `--offset-column` 18 on the gas lift coaxial with hub and socket, `--uneven-arms` 19 on mirrored level armrests, `--loose-wheel` 20 on one connected assembly, while the envelope holds; kitchen stool, mini fridge; alternates ~~floor fan~~ **SHIPPED** as `showcase/floor-fan/` — 1950s oscillating pedestal fan: hollow cast base on a gasket with a speed switch and badge, telescoping column with a height-lock collar, strap yoke with a tilt knob, slotted motor housing with an oscillation knob, two-half wire guard welded to clipped rim rings, four swept brass blades on a hub with a spinner nut, cord to a plug; `--offset-hub` exits 17 on the rotor coaxial with the guard, `--short-spoke` 18 on every spoke seated in its rim ring, `--lean-column` 19 on the column plumb and on the base's axis, `--long-blades` 20 on the blade-tip clearance band, `--skew-blade` 21 on equal blade spacing, `--hollow-base` 22 on the tip-over angle, `--loose-spinner` 23 on one connected assembly, while the envelope holds; laundry basket
162
162
- **Vehicles:** ~~quad drone~~ **SHIPPED** as `showcase/quad-drone/` — two-tone moulded shell with battery, GPS, grilles and visor, four folding arms hinged on pinned clevises, slotted motors with twisted two-blade props, rubber-footed skids, three-axis gimbal camera; `--float-foot` exits 16 on every foot grounded, `--unlock-arm` 17 on the motor axes on an exact X, `--long-blades` 18 on the prop-disc clearance, `--narrow-skids` 19 on the mass centre inside the landing footprint, `--drop-lens` 20 on one connected assembly, while the envelope holds; traffic cone and barrier set, ~~hover bike~~ **SHIPPED** as `showcase/hover-bike/` — sculpted two-tone fuselage with panel seams, intake grilles, tail vents and cooling fins, a stitched pleated saddle, clip-on bars with grips, levers and an emissive instrument cluster, a flyscreen and headlight pod, two exhaust nozzles, two ducted fans (airfoil shrouds, canted stator vanes, handed seven-blade rotors), booms with foot pegs, and two landing skids on struts; `--float-skid` exits 16 on both skids grounded, `--offset-hub` 17 on the hubs coaxial with their shrouds, `--long-blades` 18 on the blade-tip clearance band, `--odd-hull` 19 on the fuselage's mirror symmetry, `--skew-blade` 20 on equal blade spacing, `--narrow-skids` 21 on the mass centre inside the skids' contact polygon, `--pop-lens` 22 on one connected assembly, while the envelope holds; sci-fi cargo loader; alternates sci-fi supply crate
163
163
-`persistent` app-handler witness — handlers registered without `@bpy.app.handlers.persistent` are dropped by `wm.read_homefile`/file load while persistent ones survive; assert the registered-handler set before and after a reload (silent loss AI code hits)
164
164
- Link vs append witness — `bpy.data.libraries.load(link=True)` yields a linked, non-editable datablock (`library` set, `is_editable` False) while append yields a local copy; write a temp .blend with `bpy.data.libraries.write`, then assert both paths
Copy file name to clipboardExpand all lines: docs/gallery/anvil/index.html
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -358,7 +358,7 @@ <h1>anvil</h1>
358
358
<p>A procedural blacksmith anvil on a timber stump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
<buttonclass="detail-hero" id="heroZoom" type="button" aria-label="View full size: A forged-steel anvil with a hammer-polished face and a flared, squared waist on a hooped timber stump, a cross-peen hammer on the floor and forge light on its flank.">
363
363
<imgsrc="../assets/anvil-hero.webp" alt="A forged-steel anvil with a hammer-polished face and a flared, squared waist on a hooped timber stump, a cross-peen hammer on the floor and forge light on its flank." width="1280" height="720" fetchpriority="high" />
0 commit comments