# Roof strips lite v1

Four closed, manifold strip slabs replace the matching source nodes without
changing their head-midpoint origins, X/Z footprints, axis convention or course
placement. Metres, +Y up, +X strip width, +Z downslope before roof rotation.

| Node | Original triangles | Lite triangles | Material |
| --- | ---: | ---: | --- |
| tile_strip_a_lite | 224 | 48 | Clay_tile_strip |
| tile_strip_b_lite | 224 | 48 | Clay_tile_strip |
| slate_strip_a_lite | 152 | 32 | Blue_grey_slate_strip |
| slate_strip_b_lite | 152 | 32 | Blue_grey_slate_strip |

Clay geometry falls 78.6%; slate 78.9%. At 390 clay strips, roof strip geometry
falls from 87,360 to 18,720 triangles. Each strip has one material primitive.
These counts exclude the rest of a house; this is not a mobile FPS certification.

## Geometry and placement

The stepped clay slab retains the 0.16 m/m lap tilt and 0.10 m course gauge.
Rotate X by the existing roof pitch. Slate retains the 0.21 m gauge, existing
rotation of pitch minus atan(0.07), 0.018 m common normal offset and alternating
0.1725 m X stagger. Never accumulate the normal offset per course.
Actual bounds and inherited placement fields are recorded in kit_lite.json.
Camber and individual tile height variation move into tangent normals, so the
Y envelope is intentionally simplified. Lower rim vertices are recessed below
the notched upper lip; closed undersides and ends remain real geometry.

## Shelf and UV exception

Both new shelf materials are explicit exceptions to world-scale UV mapping.
UV0 spans one complete strip, U 0..1, with the top in V .14..98 and padded
edge/underside charts below .125. Do not multiply UVs by metres or by the old
shelf repeat. B mirrors U to vary the common atlas. Its texture is a mirrored A
bake, rather than a separate pixel-exact bake of the original B variation.

Six new 1024x1024 PNG maps are in materials/. BaseColor is sRGB; Normal and ORM
are linear. Normal is OpenGL tangent +Y; ORM is R=AO, G=roughness, B=metallic.
Use roughnessFactor=1 and metallicFactor=1 so packed channels control both.
GLB embeds the same maps and tangents. External Three.js replacement textures
use flipY=false. Shelf provenance is inherited Poly Haven CC0 from source kits.

The bake transfers the original top surfaces and registered shelf textures:
Cycles selected-to-active tangent normals (including shelf micro-normal),
0.035 m cage extrusion, 0.08 m ray distance, 4 px margin. Missed narrow seams
use a filtered geometric height projection. Color/ORM use highest-surface
barycentric source UV sampling. Narrow baked cavity shading preserves joints.
The original kit GLBs have preview materials; comparison explicitly binds their
registered shelf maps before rendering.

## Comparison and limits

compare.png contains four Cycles views: clay at 55 degrees and slate at 44
degrees, each at 3 m and 10 m. Original is left, lite right. Cameras use the
same 32 mm lens; 10 m is not zoomed to match 3 m. Distance is measured from
the camera to the paired patches' common centre. build_evidence.json records
exact camera positions and targets. Individual full-size frames are included.
The lite objects in these renders are reimported from the saved GLB.

The broad material, joint rhythm and roof layering are retained at these
distances. At 3 m, close comparison still reveals more regular lip thickness
and fewer tiny chips in lite; grazing views cannot reproduce high-poly
parallax with a normal map. The simplified silhouette is intended for roofs
viewed from 3 m and beyond, not macro inspection. No alpha cutouts are used.

## Rebuild

Place this directory beside medieval-atom-kit-v1 and breton-atom-kit-v2, each
containing kit.glb, kit.json, materials.json and materials/. Then run:

```sh
/root/blender-spike/blender-5.2.0-linux-x64/blender -b --python-exit-code 1 --python /root/fal-author/roof-strips-lite-v1/build_lite.py
```

One script generates all requested outputs using Blender 5.2 and bundled
NumPy, with no pip dependencies. It uses Cycles GPU when available. Source
files are read only, source GLB hashes are recorded and rechecked, and every
output stays in this directory. Build-time assertions check triangle budgets,
manifold edges and positive solid volume. No deployment is performed.
