# PLY — native furniture model
2026-09-13. Dedicated source: bespoke/chair-model.js and chair-viewer.js.

The model is authored for this fictional Curve lounge. No external product mesh is relabeled. It is a design visualization, not a fabrication drawing or tested furniture construction.

## Geometry and materials
- One continuous seat/back surface sampled along a centripetal spline, with a slight transverse dish and rounded end corners.
- Two face surfaces and seven individually modeled edge plies produce the 14 mm shell.
- Each side frame has nine 3 mm layers, a sculpted leg/arm profile, and a lower side support. The lower supports were added after reviewing the first render; cross rails were lowered to sit under the shell.
- Two separate connecting rails, brass washers and hex bolt heads, recessed sockets, dark felt feet and a small underside product label.
- Optional moss upholstery uses separate seat/back meshes, perimeter thickness, procedural woven texture, sheen and fine seams.
- Birch and walnut use distinct deterministic grain maps on varnished face materials. The inner ply edge remains birch toned under walnut face veneer. These are procedural materials, not scanned measured PBR data.

## Lighting and rendering
Soft-panel PMREM reflection environment plus directional daylight, hemisphere fill and a shadow-receiving floor. ACES filmic tone mapping, sRGB output, bounded DPR (1.5 mobile / 2 desktop), WebGL loaded only by the user's 360-degree action. Initial page JavaScript does not import Three.js eagerly.

A continuous animation runs only during a user-requested camera or assembly transition. User-selected assembly state finishes without drawing when hidden; regular idle/offscreen views do not request frames. Reduced motion applies end states directly. Observers, controls, geometry, textures, materials and render targets are disposed on teardown.

## Controls
Orbit drag, keyboard arrows, +/- zoom, Home reset, whole/front/side/joint views, and an assembly slider. Camera button selection clears when the user chooses a free angle and returns to Whole with Home. One-finger vertical scrolling remains available via pan-y. If WebGL is unavailable, the same authored model's stills and configuration controls remain usable.

## Image consistency
studio/capture-ply-model.mjs produces all seven stills from this exact source. The birch reference was supplied to the built-in image_gen tool to create the room campaign; that room image was supplied for the mobile composition. Prompts and paths are in bespoke/ASSETS.json, originals in artwork/. Still images can have photographic texture refinements; the live model retains the same defining shell, frames, lower braces and feet.

## Review
Browser suite: studio/review-ply.mjs. It tests actual rendered-image changes across material/upholstery choices, assembly, camera keyboard behavior, persistent saved combinations, modal focus, responsive art direction, idle/offscreen render suspension, WebGL fallback and corrupted storage. Final results and screenshots are in studio/review/ply/. Compare images visually in addition to checking the report.
