Commit graph

1 commit

Author SHA1 Message Date
CRT
0b2623755f Add the stone trough, and water to put in it
The kit could water nobody. It had a well, a bucket and a cauldron, and all
three are things you carry water IN; a trough is the thing a village keeps
water in, standing in the street outside the smithy.

Two additions to the core, both earned by measurement rather than by wanting
them:

  - `limestone`, a palette key. `stone` was measured off dressed and rubble
    masonry and is grey, because a wall is quarried and laid face out. One
    block left in the open for a century reads hue 36 and saturation 0.16
    against the wall's 44 and 0.05 — warmer, three times more saturated,
    lighter. Both are right and neither replaces the other. The rendered block
    now matches its reference to within a fifth of a degree of hue and 0.004
    of lightness.
  - `water`, a slot, and it is far less green than instinct says. Sampled
    inside the reference's basin the film reads hue 39.5 — which is the hue of
    the stone UNDERNEATH it, not a colour of its own. It darkens and slightly
    saturates whatever it lies on and does that through the material's
    opacity. Painted the pond green I was about to reach for, the composite
    would have missed the reference by a hundred degrees.

Making it read as CARVED rather than sawn took three goes, and the two failures
are opposite errors worth keeping:

  1. Each wall in two tiers, to give `roughenGeometry` more corners to move.
     The tiers' corners sit at different positions, the hash moved them by
     different amounts, and the render showed a lid on a base with a hard seam
     right round it.
  2. One box per wall, roughened harder to compensate. A box has eight corners
     and every face is two triangles, so moving those corners folded each wall
     along its own diagonal. Not stone: creased cardboard.

Both were trying to get subdivision out of the wrong thing. The walls are
`dishedSheetGeometry`, whose own docstring says the trough wants it: one
continuous body with levels along its length, so the rim undulates because
each level carries its own height, the wall thickens and thins because each
carries its own thickness, and there is no join for a seam to open in.

The z-fight checker earned its keep twice on the same plane, `0,-1,0 | 0`.
Four walls standing on the ground all have a face down there, and where the
corners overlap — which is where they are MEANT to overlap — two of those
faces share it. Lifting the basin floor only moved the pairing from
floor-against-wall to wall-against-wall. The answer was to stop there being
four things down there at all: a trough is solid below the water line, so it
is one block from the ground to the basin with the walls sunk into it, by
different amounts, because two buried faces in one plane are still two faces
in one plane.

Last, two defaults that the render corrected rather than the reference. The
walls at 0.27 of the width shut the basin so far that a three-quarter view
showed only its inner face, against the reference's opening of about three
fifths — now 0.21. And the water at 0.55 of the basin's depth sits below the
near rim and the trough reads as dry from every angle anyone will look at it
from; the reference stands a couple of centimetres under the rim, which is
0.85.

36 models, 31 748 triangles, fourteen material slots, all checks pass, 0
floating cases, GLB round-trip clean, Conformant, documentation in step.
2026-08-27 02:46:05 +07:00