--- title: "Asset Brief — Station Walls" description: "Building-exterior wall models/textures for station (urban/industrial) settlements — D-235 wall axis" type: design status: active ticket: "" decision_refs: [D-235, D-244, D-257] author: "Araminta" created: 2026-07-25 updated: 2026-07-25 --- # Asset Brief — Station Walls One page. Gates its child story — the story does not enter `in_progress` without this brief attached. --- ## 1. Scope Building-exterior **wall** surfaces for station/urban/industrial settlement types — the D-235 `WallMaterial` axis, specifically the tags a station-type template's `allow` filter selects (`concrete_wall`, `steel_frame`, `glass_curtain_wall`, `composite_panel` — the "built infrastructure" register, not the rural/vernacular tags owned by the sibling `rural-walls.md` brief). This is **prior-art territory**: `wall_structural.tscn` (`renderer/models/wall_structural.tscn`) already exists as an unrendered GLB, plus rendered PNG samples at `docs/workshops/art-direction-mood-board/ pipeline-samples/wall_structural_south_{64,256,1024}.png` and the promoted sprite set at `client/assets/sprites/wall_structural_{north,south,east,west} _64.png` — all pre-D-244, sprite-era output. This brief's job is to re-run that same wall through the current 3D-model pipeline (D-244), not sprite renders, and register it as the class's first manifest entry. Out of scope: rural walls (timber/stone/rammed-earth vernacular), doors, floors — separate briefs. Also out of scope, but a natural same-family follow-on once this brief's pattern is proven: the other three D-235 building-exterior axes — `RoofForm`, `FacadeRhythm`, `StreetSurface` — which ride this brief's own `_.png` texture convention (`conventions.md` §3) and already have `palette.md` §3.2–§3.4 register rows; see `deferred.md`'s axis- completeness note. ## 2. Visual Reference `palette.md` §3.1 rows for `concrete_wall`, `steel_frame`, `glass_curtain_wall`, `composite_panel` — warm-leaning neutral greys (never cool-grey), fine aggregate speckle / riveted-joint / seam-grid textures per tag, D-217 weathering ladder per row. `glass_curtain_wall` is the §2.1 minimal-PBR carve-out (roughness 0.05–0.2, controlled specular) — every other tag in this set stays flat toon (`roughness=1.0`/`specular=0.0`, `postprocess_glb.py::setup_materials()` default). `generic_wall` (§3.5) is the flat neutral-grey, no-grain fallback terminal for whichever specific tag hasn't shipped yet. ## 3. Naming Model: `_.glb` — this class is a building-exterior surface, so it more commonly ships as a **texture**, not a standalone prop: `concrete_wall_basecolor.png` / `_normal.png` / `_roughness.png` (`conventions.md` §3), plus `generic_wall_basecolor.png` as the fallback placeholder. If a standalone wall-segment **model** is also produced (as `wall_structural` already is, pending re-promotion), it follows §1's `_.glb` (e.g. `wall_structural_concrete.glb`) with a `_mask.png` sidecar only if a tintable variant is needed (most station walls are not tinted — material register drives color, not player-favorite tint). No `footprint_tiles` metadata applies to a wall texture; a wall *segment model*, if produced, is single-tile. ## 4. Generation Path Standard path: `/image-gen` (toon-shaded concept, 3/4 front view, near-white base) → `/glb-gen` (Trellis) → Blender postprocess → promotion into `client/assets/models/props/` (a wall segment is a `props`-category model per `conventions.md` §1's category-is-manifest-authoritative rule) + `manifest.json` entry. If shipping as a standalone **texture** instead (the more likely first deliverable, since walls are usually a tiled surface not a discrete mesh), the target file is `textures.md`, not `models.md` — author a flat concept via `/image-gen` at the material's hue/grain per §2, no Trellis step needed for a pure 2D PBR map. ## 5. Acceptance 3 starter assets enter `models.md`/`textures.md` + `manifest.json` (as applicable) at `planned`: (1) `generic_wall` fallback placeholder texture — flat neutral grey, no grain, per palette.md §3.5 — **milestone-0 IF Q-119 resolves yes** (not resolved here); (2) `concrete_wall` texture, the most common station tag; (3) re-promotion of the existing `wall_structural` model through the current (non-sprite) pipeline, closing out the only piece of partial prior art this class has. Status flips to `in-progress`/`final` as each is actually produced. --- ## Cross-References - `docs/assets/visual/conventions.md` §1, §3 — model naming, D-235-keyed texture naming - `docs/assets/visual/palette.md` §2, §3.1 — toon/PBR treatment, wall material register - `docs/assets/visual/models.md`, `docs/assets/visual/textures.md` — target catalogs - `client/assets/models/manifest.json` - `renderer/models/wall_structural.tscn` — existing unrendered prior art (this class)