Repository navigation
Commit fd8f0ca
feat(showcase): add sea-stack-arch (nature)
The tenth piece in the nature category: a coastal diorama tile, 2.54 x
1.92 m and 1.62 m high. A fragment of a horizontally bedded sandstone
headland stands on a wave-cut platform: sixteen layers, hard beds 42-168
mm thick alternating with soft beds 20-56 mm, at one set of heights in
every column so the strata run on from the arch into the stack. The soft
beds are undercut behind the hard beds either side, the undercut coming
and going along a face (all but flush in places, deepest at each leg's
foot, the wave-cut notch). The fin is cut by twelve vertical joint faces
shared by both legs and the lintel; each bed sets each face back by its
own amount, drifting coherently with height, and vertical joints split the
beds into blocks that stand back by their own amounts, the joints opened
as narrow V's, with fallen-out blocks and chipped corners. The arch: two
legs whose beds step in toward the opening (0.50 m at the foot, 0.26 m
under the roof) under a lintel of four hard beds whose lowest is whole but
for the crown joint. A twelve-layer stack stands on its own island in the
bay. The platform carries a bay, a channel through the arch, two tide
pools and the same joint sets as cracks; the sea is a rippled sheet at
0.105 m with its rim run under the platform, foam lies at the waterline
round the bay and the island, and five fallen blocks and eight boulders
rest on the platform. Turf with sea grass and sea thrift (pink heads on
stalks) covers the tops. Eight materials; the littoral zones (weed,
barnacles, black lichen), orange lichen and bird lime are in the shaders.
Every column is sampled on one fixed set of rays from its centre; a bed's
outline on a ray is where the ray leaves the intersection of its
half-planes, each set in by the bed's set-back, so a soft bed is inside
both hard beds either side by construction.
Budgets (measured, 5.2.1): 78182 tris (77600-78800), LOD 0.5000/0.2200,
8 materials with face floors, UVs 0..1 no overlap, AABB 2.5440x1.9225x
1.6184 (+-0.01), collider 342 (<=380, five hulls so players pass under
the arch), hygiene 0 incl. 0 coplanar cross-shell pairs, zmin 0; beds
bite 0.0026-0.0142 m over 35 joints (0.002-0.040), the lintel's lowest
bed 0.0120 into each leg; stack mass centre 0.1220 m inside its foot
notch (>=0.050); legs and stack sealed 8/8 (worst 0.0373, >=0.020);
aperture 0.3680 wide x 0.7370 high (>=0.20 x 0.60); 18 bed tops level
(0.00 deg, <=0.8) and continuous (spread 0, <=0.004); 19 soft beds
undercut 0.0133-0.0290 (0.008-0.090); sea 0.10500 m, ripple 0.00238
(0.0015-0.0090), pools flat; rims 0.01226 under the platform (>=0.008);
foam 0.0043 off the waterline (<=0.006), land edge 0.0140 under the rock
(>=0.004); 13 loose rocks sealed (worst 0.0050, >=0.003), 0 overlaps;
289 roots 0.0078-0.0189 in turf or stone (0.004-0.060), none loose. Two
default runs identical; 4.5.11 and 5.1.2 print the same measurements
(export differs by 8 bytes).
Fixes found on the way: the first outlines cut the soft beds with planes
applied as insets along the base normal, which threw a lintel vertex to
y=-0.12 (bite -0.22); outlines are now true half-plane intersections
sampled on shared rays. Clipping by projection folded rings onto plane
corners (166 zero-area faces, 39 doubles). Early renders read as stacked
masonry: rounded slabs, every soft bed undercut all round; the joint faces
are now shared through all beds, the undercut patchy, the arrises 3.5 mm
and creased at 18 deg. The flat beds were a coplanar hazard (up to 448
pairs, then isolated soft-band/arris coincidences): each bed's walls
batter by their own degree or two and turn slightly, arrises carry a
sub-mm wear per ray, and a final pass draws any soft facet still in
another bed's plane 1.5 mm in and turns any blade or head 3 deg about its
root. The seal audit first read "flank" vertices in notched sectors and
failed a sealed foot; it now takes each sector's most-buried vertex. Pool
levels are read off the built platform (the analytic surface left a rim 4
mm over its water). Tile edge kept out of the tide-zone shaders.
Falsifiers (flag -> measured -> exit), 5.2.1 and 4.5.11 identical; tris
78182 and envelope unchanged in all:
--skip-decimate LOD1 1.0000 9
--stray-vert loose_v 1 15
--lift-z zmin 0.05000 16
--gap-lintel left leg under the lintel -0.0150 m 17
--lean-stack mass centre 0.0048 m inside footprint 19
--cut-pillar worst sector -0.0269 m, right leg 0/8 20
--close-arch width 0.0000 m, height 0.4490 m 21
--tilt-beds 2.536 deg 22
--flush-beds undercut 0.0061-0.0068 m 23
--flat-sea ripple 0.00000 m 24
--short-sea rim -0.05304 m 25
--lift-foam 0.02430 m off, land edge -0.00597 m 26
--perch-talus worst sector -0.0393 m 27
--pile-talus 3 pairs overlap 28
--float-cover roots -0.0173 m, 315 loose 29
tests/check_falsifier_targets.py --run --only sea-stack-arch 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 and preview; framing fill x 0.625, y
0.861, margins left 0.172 right 0.203 bottom 0.028 top 0.111;
asset-quality floors pass (8 materials, edge90 0.033). Default stage, no
yaw; camera 13 deg left of the arch's axis so the opening reads against
the wedge on the wall.
Asset sheet (docs/gallery/asset-sheets/sea-stack-arch.webp): not the
least-designed object; the hydrant is plainer. Isolated, it reads as a
bedded rock arch and stack with water, foam and flowering tops. Weak
point: the stepped legs under a thick roof bed still lean toward a
stylised, tidy geometry rather than a ragged natural cliff.
Contact sheet (docs/gallery/contact-sheets/sea-stack-arch-contact-sheet.webp):
luma 0.2384 against 0.2369-0.2428 (in band, after relighting from 0.2852,
0.2550, 0.2209, 0.2334, 0.2357); stage 0.2125 against 0.1919-0.2517;
wedge warmth +0.0451 (calibration -0.144..+0.105; +0.1525 before the wedge
was raised off the floor); saturation 0.2073 against 0.1525-0.2367;
subject fill 0.861 vertical. Thumbnail legible: an arch and a stack over
blue water read at a glance.
Also updated: README, CLAUDE.md, AGENTS.md counts (66 -> 67), ROADMAP
Nature list (sea stack & rock arch shipped), asset_sheet.py SELECT row,
catalog.json, plugin.json and the regenerated gallery. build_gallery,
check_site_links (122 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 a6bc246 commit fd8f0ca
82 files changed
Lines changed: 10966 additions & 143 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
- farm-tractor
- fence-kit
- fern-mossy-rock
- 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
- sea-stack-arch
- 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
- sea-stack-arch
- 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 | |
|---|---|---|---|
| |||
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
207 | | - | |
| 207 | + | |
| 208 | + | |
208 | 209 | | |
209 | 210 | | |
| 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 | | |
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
178 | 179 | | |
179 | 180 | | |
180 | 181 | | |
| |||
305 | 306 | | |
306 | 307 | | |
307 | 308 | | |
| 309 | + | |
| 310 | + | |
308 | 311 | | |
309 | 312 | | |
310 | 313 | | |
| |||
0 commit comments