Repository navigation
Commit 35ebfdc
feat(showcase): add broadleaf-oak (nature)
The eighth piece in the nature category: a mature, open-grown English oak
(Quercus robur), 8.0 m tall with a domed crown 11.3 x 9.3 m, on a grassy
soil disc that rises 85 mm per metre toward the back. The trunk is one
lathe from a six-lobed buttress flare to a dome over a low fork at 2.3 m:
seven broad flutes and twelve ridges, 0.73 m across at breast height. Its
two foot rings follow the soil read back by a ray under each vertex, the
lowest 45 mm under it. Six surface roots (flattened tubes) lie in the soil
and dive into it. Five crooked scaffold limbs start inside the trunk and
divide three more times (3, 4, 3 children): 260 tubes, each starting
inside its parent, with children taking a seeded share of the parent's
area and the parent narrowing past each junction by that area (da Vinci).
Lengths are fitted to a squat crown ellipsoid; low branches spread, high
ones climb, so the clusters build a dome rather than five radial arms.
1370 lobed oak leaves (one closed 32-triangle shell each: auricles, three
rounded lobes a side, a folded blade zipped to a midrib, petiole inside
its twig) sit on 255 twig and branch tips, faces turned out of the crown.
Five low twigs are dead. Seven stalks carry 15 acorns (scaly cup, glossy
nut seated in it); ten more lie in the grass with 34 curled fallen leaves,
20 tufts and two sticks. Bark fissures run along each tube via a Grain
point attribute (the tube's tangent), with moss on the north flank of the
foot. Eight materials.
Budgets (measured, 5.2.1): 68350 tris (67700-69000), LOD 0.5000/0.2200,
8 materials with face floors, UVs 0..1 no overlap, AABB 11.2821x9.3063x
7.9994 (+-0.01), collider 54 (<=60), hygiene 0 incl. 0 coplanar
cross-shell pairs, zmin 0; 260 branches seated, shallowest base vertex
0.0923 of the parent's radius inside it (>=0.06); 255 junctions area ratio
0.9586-0.9872 (0.90-1.05), widest child 0.6691 (<=0.80), fork 0.8939
(0.80-1.05); 25 nuts 0.0112-0.0113 m in their cups (0.006-0.020); lean
0.554 deg (<=1.0), balance 0.2969 m (<=0.45), DBH 0.7313 (0.731+-0.02);
foot sealed 8/8 sectors, roots >=0.0293 m under (>=0.010); 1370 petioles
0.0025-0.0465 m inside their twigs (>=0.0015); stalk 0.0080, pedicel in
stalk 0.0036, in cup 0.0134; 66 cover pieces bedded, 76 shells joined.
Two default runs identical; 4.5.11 and 5.1.2 print the same measurements
(export differs by 16 bytes).
Heavier than pine-tree (68350 vs 45852 tris): 64% is leaves; a broadleaf
crown has to show leaf faces. A 1545-leaf draft at 36 tris each measured
83k and was cut to 32-tri leaves on fewer twig stations.
Fixes found on the way: the soil BVH gave zero ray normals until
normal_update() (litter leaves collapsed flat, 132 zero-area faces, 306
doubles); cover scattered to the rim roll-off overhung it and settled
under Z = 0; per-child k ratios let late children exhaust thin parents
(taper up to 1.52), replaced by area shares with a kept tip fraction; the
convex hull kept the frustum's own faces (94 tris), so the collider source
is points only. --float-branches first exited 20: the taper audit
projected the moved base cap onto the parent and picked the wrong
junction; it now meets the child's axis line (ring 0-1 centres) with the
parent's, which the falsifier leaves unchanged. --fat-twigs also bursts
twigs out of their parents, so the taper (20) is checked before the seat
(17).
Falsifiers (flag -> measured -> exit), 5.2.1 and 4.5.11 identical; tris
68350 and envelope unchanged in all:
--skip-decimate LOD1 1.0000 9
--stray-vert loose_v 1 15
--lift-z zmin 0.05000 16
--float-branches shallowest base vertex -1.8098 of radius 17
--pop-nuts nut in cup -0.0228 m 18
--lean-crown lean 3.146 deg 19
--fat-twigs junction ratio 1.9704, child 1.2044 20
--perch-trunk sealed 6/8 sectors 21
--arch-roots shallowest root station -0.0628 m 21
--orphan-clump petiole -0.0479 m 22
--drop-acorns pedicel in cup -0.0461 m 23
--float-cover 45 shells loose, tufts 0.0017-0.0034 m 24
tests/check_falsifier_targets.py --run --only broadleaf-oak passes.
Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe,
reports "Blender 5.2.1 LTS"; default and every falsifier also run on
.scratch\blender-4.5.11-windows-x64 ("Blender 4.5.11 LTS"); default on
.scratch\blender-5.1.2-windows-x64 ("Blender 5.1.2").
Render: render_hero.py wrote hero (59958 B) and preview (53012 B);
framing fill x 0.616, y 0.856, margins left 0.178 right 0.206 bottom
0.050 top 0.094; asset-quality floors pass (8 materials, edge90 0.053).
Default stage, hero yaw 0, no deviation.
Asset sheet (docs/gallery/asset-sheets/broadleaf-oak.webp): not the
least-designed object; the hydrant is plainer. Isolated, it reads as a
broad, domed broadleaf tree with a buttressed trunk and crooked limbs
showing through the leaf clusters. Weak points: from the sheet's high view
the crown still has gaps between limb systems, and leaves are stylised at
several times real size.
Contact sheet (docs/gallery/contact-sheets/broadleaf-oak-contact-sheet.webp):
luma 0.2384 against 0.2369-0.2428 (in band, after relighting from 0.2496
and 0.2286); stage 0.2360 against 0.1919-0.2517 (dark, in range); wedge
warmth +0.1092 (calibration -0.144..+0.105; a hair above, the warm pool on
the wall and floor right); saturation 0.1710 against 0.1525-0.2367;
subject fill 0.856 vertical. Thumbnail legible: a domed green tree on a
thick trunk reads at a glance.
Also updated: README, CLAUDE.md, AGENTS.md counts (63 -> 64), ROADMAP
Nature list (broadleaf oak struck as shipped), asset_sheet.py SELECT row,
catalog.json, plugin.json and the regenerated gallery. build_gallery,
check_site_links (119 pages, 0 failures), check_falsifier_targets (static
and --run), check_exit_code_readme, check_engine_id, check_gallery_images
and check_import_export_rules pass.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>1 parent 2c3700d commit 35ebfdc
79 files changed
Lines changed: 8626 additions & 137 deletions
File tree
- .cursor-plugin
- docs/gallery
- anvil
- apothecary-shelf
- archery-target
- asset-sheets
- assets
- basketball-hoop
- book-trolley
- bookshelf
- boulder-cluster
- bowling-pins
- brazier
- broadleaf-oak
- butter-churn
- cactus-garden
- campfire
- cargo-loader
- cart
- chopping-block
- contact-sheets
- crate-stack
- desk-lamp
- espresso-machine
- fallen-log
- fence-kit
- floor-fan
- go-kart
- grain-sacks
- grindstone
- hand-pump
- hay-bale
- hitching-post
- hover-bike
- iron-cauldron
- market-stall
- motor-scooter
- mushroom-stump
- office-chair
- palm-tree
- park-bench
- pine-tree
- planet-rover
- pond-edge
- quad-drone
- road-bicycle
- rope-bridge
- shipping-crate
- signpost
- skate-ramp
- soccer-goal
- stand-mixer
- stone-archway
- stone-well
- street-lantern
- tavern-stool
- terrain-scatter
- traffic-cones
- treasure-chest
- wall-torch
- watchtower
- water-trough
- weight-rack
- wheelbarrow
- wingback-armchair
- wooden-barrel
- wooden-bucket
- wooden-ladder
- wooden-yoke
- scripts
- showcase
- broadleaf-oak
- tests/smoke
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
204 | | - | |
| 204 | + | |
| 205 | + | |
205 | 206 | | |
206 | 207 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
| 175 | + | |
175 | 176 | | |
176 | 177 | | |
177 | 178 | | |
| |||
296 | 297 | | |
297 | 298 | | |
298 | 299 | | |
| 300 | + | |
| 301 | + | |
299 | 302 | | |
300 | 303 | | |
301 | 304 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
358 | 358 | | |
359 | 359 | | |
360 | 360 | | |
361 | | - | |
| 361 | + | |
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
| |||
3716 | 3716 | | |
3717 | 3717 | | |
3718 | 3718 | | |
3719 | | - | |
| 3719 | + | |
3720 | 3720 | | |
3721 | 3721 | | |
3722 | 3722 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
358 | 358 | | |
359 | 359 | | |
360 | 360 | | |
361 | | - | |
| 361 | + | |
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
| |||
3733 | 3733 | | |
3734 | 3734 | | |
3735 | 3735 | | |
3736 | | - | |
| 3736 | + | |
3737 | 3737 | | |
3738 | 3738 | | |
3739 | 3739 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
358 | 358 | | |
359 | 359 | | |
360 | 360 | | |
361 | | - | |
| 361 | + | |
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
| |||
5579 | 5579 | | |
5580 | 5580 | | |
5581 | 5581 | | |
5582 | | - | |
| 5582 | + | |
5583 | 5583 | | |
5584 | 5584 | | |
5585 | 5585 | | |
| |||
Loading
Loading
0 commit comments