# Oval Office recall room — v6

Can You Name architecture and furniture surround the 45 presidential portraits
a player calls aloud. The room contains no presidential face, name or seal:
its paintings are landscapes, the desk carving is an original wreath and star,
the ceremonial flag's eagle is an original simplified design, and the rug's
medallion is a ring of stars around a compass.

## Current room: v6

The working office at its real proportions: 10.9 m north to south, 8.8 m east
to west and 5.64 m to the ceiling, with the desk 2.45 m in front of the south
wall. Earlier versions were built at 6.9 × 5.9 × 3.0 m around the same desk,
which made the desk read twice its size and the room read as a set.

Three tall nine-over-nine windows stand in deep splayed reveals in the tightly
curved south wall, with a park beyond. Floor-length gold damask panels hang on
the piers and outer sides under one continuous valance: a covered board, seven
swags with crescent folds, jabots between them and long cascades at both ends,
edged in navy with a pale fringe. The national flag and a navy ceremonial flag
hang from eagle-finial staffs before the piers either side of the centre
window; each was hung by its hoist sleeve and settled in Blender's cloth
solver, so it falls in folds that still show its face to the room.

The walls are cream damask over a panelled wainscot with a moulded chair rail
and skirting, under a continuous cornice with dentils and egg-and-dart and a
luminous ceiling. Pedimented doorcases with six-panel leaves, carved friezes
and cornice shelves curve with the long walls. Between the drapery and each
door a landscape in a gilt frame hangs over a console with a lidded urn. A
sunburst rug with a navy and gold border lies over herringbone parquet, and two
skirted sofas face each other across a coffee table in the middle of the room.

The desk is a carved oak partners desk after the Resolute: a moulded top and
working lip, an acanthus scroll frieze, pedestal panels with hanging garlands,
reeded pilasters, a kneehole panel with the wreath-and-star cartouche, and a
tooled green leather writing bed. The leather is the physics surface and the
lip stands exactly where the physics gallery does. A telephone, pen cup and
blotter box stand in the margins, and the builder fails if any prop enters the
collection footprint. A tall buttoned leather chair stands behind it.

## Construction

`src/lib/presidents-oval-office-layout.json` is the shared construction
boundary. Colliders, the collection surface, card scale, both cameras, the
window view, the runtime lights, the primitive room and the authored room all
read it, in scene units of 0.128 m. Arc positions along the wall are measured
from the south apex; `ovalWallPoint` in `src/lib/presidents-oval-office.ts`
and the builder resolve them with the same construction.

`scripts/artwork/build-presidents-oval-office.py`, its style profile
`scripts/artwork/styles/presidents-oval-office.toml` and the owned texture
painters in `scripts/artwork/oval_office_textures.py` build the room in a
separate background Blender scene in real metres. Walls, mouldings, drapery,
swags, carvings and door leaves follow the oval exactly. Closed solids are
given outward normals and open surfaces are turned to face the room before any
light is computed, because Cycles bakes the side a face points to.

The room's light is baked in Cycles into one owned 2048-pixel lightmap: sun
through the south windows, the sky, the luminous ceiling and every bounce
between them. Parts are unwrapped before they are joined, so the desk, chair
and flags take more of the atlas than the ceiling, dentils and fringe, and long
walls and mouldings are built as short arcs so their islands pack as strips.
The atlas is denoised, range-checked and encoded as sRGB, and the runtime
restores its radiance range.

`scripts/artwork/pack-presidents-oval-office.mjs` normalizes repeated UVs
through texture transforms, quantizes and meshopt-compresses the room,
verifies every lightmapped batch keeps in-range atlas coordinates through the
application's own decoder, validates the result with the Khronos Validator and
encodes the lightmap as WebP.

## Runtime

`src/components/oval-office-stage.ts` owns every collider, the view beyond the
glass, the lights, contact shadows and a primitive room that is playable at
once and offline. The authored room replaces the primitive one only when both
the room and its lightmap have arrived; either failing leaves the primitive
room in play, and late arrivals after teardown are released rather than
mounted. The authored room owns no collider.

Backdrop batches show the baked light exactly and ignore the lights portraits
need. The desk wood, its leather, the chair and the gilt stay physically lit
over most of their bake, receive the portraits' shadows, and show their
carving and polish to the daylight that follows the baked sun. The ceiling is
self-lit and the glazing is thin transparent glass over the view.

The view beyond the windows is the renderer's, not the asset's: the reviewed
CC0 park photograph from the v2 release on a plane just outside the south
wall. One daylight shadow map runs in Rich; Light disables it. The baked room
looks the same in both.

| Active asset | Bytes | SHA-256 |
| --- | ---: | --- |
| `v6/room.glb` | 3,385,848 | `312218287e38081a287083ad2e31d9f7cba671ce35ac7b2efb8fae8ac6dad6ac` |
| `v6/lightmap.webp` | 563,432 | `7c6fa13c1f7bc174891e84bc35785d0416a7b69b90180259dd7946583d588380` |
| `/images/cards/canyouname-oval-office-v6.webp` | 141,542 | `390e442e67bf4204324fbe648e0658ef73830c865c3b654fc46efc2894756516` |

The room has 197,452 triangles in 19 materials. It packs with 16-bit
positions and UVs and 12-bit normals, and passes Khronos Validator with zero
errors and warnings. These are asset counts, not a frame-rate claim on real
hardware.

The 1200-pixel still is captured from the real empty WebGL room without
interface overlays. It backs discovery, profile shelves, share images and the
no-WebGL collection fallback. Earlier versions, their bakes and stills stay
immutable under `v1`–`v5` and `v2` still supplies the view.

## Sources

Material inputs, verified by hash against
`scripts/artwork/books-reading-room-sources.json`, are
[CC0](https://polyhaven.com/license) from Poly Haven:

- [Wood Table 001](https://polyhaven.com/a/wood_table_001), photography by
  Dimitrios Savva and processing by Rico Cilliers: the oak, parquet and console
  timber, recoloured, and the oak normal map.
- [Leather White](https://polyhaven.com/a/leather_white), Rob Tuytel: leather
  normal map.
- [Autumn Park](https://polyhaven.com/a/autumn_park), Sergej Majboroda: the view
  beyond the windows, and the two repainted side-wall landscapes. This is scenic
  park imagery, not a photograph of White House grounds.

The damask, rug, tooled leather, herringbone composition, flags and landscapes
are owned images painted by the builder. No image provider is called during
play.

Architectural references, all public domain on Wikimedia Commons, were
compared side by side with renders; no bytes from them are included: the
[2017 room view](https://commons.wikimedia.org/wiki/File:View_of_Oval_Office_in_2017.jpg)
for the window bay, valance, drapery and flags; the
[empty office photograph](https://commons.wikimedia.org/wiki/File:Empty_Oval_Office_in_The_White_House_-_DPLA_-_a210b70429be57def74b3c6c603b6d89.jpg)
for the doorcases, cornice, desk and wainscot; and the
[West Wing floor plan](https://commons.wikimedia.org/wiki/File:White_House_West_Wing_-_1st_Floor_with_the_Oval_Office_highlighted.png)
for the orientation of the long axis.

The separate 45-portrait collection remains `../portraits/v1/`, with
[individual credits](../portraits/v1/ATTRIBUTION.md) and immutable provenance in
`src/data/presidents-portraits-v1.json`.

## Rebuild and inspect

Read the sibling `blender-kit` instructions first. The builder owns only
`Presidents_Oval_Office_v6` in a separate background Blender process and
settles the flags in the same scene.

1. Restore pinned sources if necessary with
   `python3 scripts/artwork/fetch-books-reading-room-materials.py`.
2. Run Blender with `--background --factory-startup --python-exit-code 1
   --python` and the absolute path to
   `scripts/artwork/build-presidents-oval-office.py`. Under WSL, pass the
   script's Windows path from `wslpath -w` to Windows Blender. Append
   `-- --proof` to render the game cameras without baking or exporting, or
   `-- --render` to render before baking.
3. Restore build-only tools if necessary:
   `npm install --prefix tmp/books-reading-room/tools --no-audit --no-fund @gltf-transform/core@4.5.0 @gltf-transform/functions@4.5.0 @gltf-transform/extensions@4.5.0 meshoptimizer@1.2.0 gltf-validator@2.0.0-dev.3.10`.
4. Run `node scripts/artwork/pack-presidents-oval-office.mjs`.
5. Inspect the actual browser views: desktop and portrait, Rich and Light, an
   empty desk and all 45 portraits, and the room blocked at the network so the
   primitive room renders. Capture the empty canvas with the interface hidden,
   resize to 1200 pixels and encode WebP as the versioned still.

Authoring scenes, proofs and reports stay under ignored
`tmp/presidents-oval-office/`. Bump the version before replacing shipped bytes;
the stage paths and `oval-office.css` activate the assets together, and a test
holds them to one version.
