mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
feat: 2.5D stage 6 — public setting, raised tiles, soft sun, theme-free walls (#649)
- settings.volumetric_view (General settings › Display, third switch) replaces the alpha entry, the header projection toggle and the phone-menu item; one rule for card, sidebar page and kiosk; editors stay Flat; backend accepts only a boolean, support package copies it. - Raised tiles in 2.5D View: no ring, rounded body min(0.275 D, 0.3 h), edge 0.1 D with the lab filters, ×1.12 size also in layout/collision, lift 0.075 D, one floor-shadow layer under all markers (theme × floor table), frames hugging tile and edge (Alert > Focus > Selected > Hover), forced colours without edge and shadow (src/iso-tiles.ts, styles/iso-tiles). - Soft sun wash instead of projected Flat wedges (src/iso-sun.ts): same gates and windows as sun_rays, length from elevation, parallelogram along the sun, tone and streaks by floor lightness, sill line. - Walls take the user's wall colour (top opaque, sides × .77/.68/.60); theme rules for walls/openings/labels removed; furniture uses the Flat stroke rule. - Smokes smoke_iso_tiles/iso_sun/iso_theme_walls/volumetric_setting, 16 new mutants, acceptance scenes STAGE6_ACCEPTANCE_SCENARIOS (golden with their Linux CI baselines), ACCEPTANCE.md side by side. Issue: #649 User-Visible: yes
This commit is contained in:
+35
@@ -390,6 +390,41 @@ Layer order: ABOVE room fills (and the glow layer), BELOW devices and
|
||||
labels (those live in the HTML `devlayer` anyway). Night
|
||||
(`elevation ≤ 0`) → no wedges. Wedges work under BOTH `bg_mode`s.
|
||||
|
||||
## 2.5D: the soft sun wash (#649)
|
||||
|
||||
In the 2.5D View (General settings › Display › Show the plan in 2.5D) the Flat
|
||||
wedges above give way to a soft wash along the real sun (`src/iso-sun.ts`). Flat
|
||||
and its wedges are unchanged. Everything that gates the wedges gates the wash:
|
||||
`sun_rays` (global or per space), `north_deg`, `sun.sun`, elevation ≥ 3° with the
|
||||
2-second fade, nothing in editors or at night, and the same windows
|
||||
(`windowLit()`: an exterior window not on a partition facing the sun).
|
||||
|
||||
H is the 2.5D wall height; the lab (sketch 07) numbers are converted into it.
|
||||
|
||||
- **Base** — the two inner corners of the opening on the inner wall face
|
||||
(`openingInnerFaceOffsetFromIndex`, as in Flat).
|
||||
- **Length along the window normal** —
|
||||
`L = H · min(4.16, max(0.98, 1.865 · (0.55 + 1.4 · (1 − e/90)^1.6)))`, e the
|
||||
elevation in degrees: a low sun throws a long beam.
|
||||
- **Shape** — the parallelogram `a0, a1, a1 + s, a0 + s`,
|
||||
`s = n·L + t·L·(dir·t)/(dir·n)`, clipped by the room's inner outline and the
|
||||
Flat occluders; the fill is blurred by 0.064 H, the sides are not blurred
|
||||
separately.
|
||||
- **Gradient** along the normal, opacity × 1 (there is no brightness setting;
|
||||
the lab default 72 % is the constant): dark floor `#ffe9b4` .62 → `#fff0cb`
|
||||
.38 @.3 → `#fff6e0` .12 @.65 → `#fff8e8` 0; light floor `#e2b95e` .46 →
|
||||
`#e9c97e` .30 @.3 → `#f0dcaa` .10 @.65 → `#f4e6c4` 0.
|
||||
- **Streaks — light floor only**: two lines 0.018 H inside the sides, 0.018 H
|
||||
wide, 85 % of s long, `#ecc46a` .8 → `#f1d48f` .35 @.55 → `#f7e6bf` 0.
|
||||
- **Sill** — a line along the inner face over the opening width, 0.073 H thick,
|
||||
`#efd493` (light floor) or `#fff3cf`, opacity .6, blur 0.023 H.
|
||||
- **Light floor** — the window room's fill at its opacity over the plan paper,
|
||||
luma > 0.55.
|
||||
|
||||
The wash lives where the Flat `.sunlayer` lives (floor group, above room fills
|
||||
and Glow) as `.sunlayer.iso-sunwash`, one `.iso-sunbeam[data-opening]` per lit
|
||||
window. Witness: `demo/smoke_iso_sun.mjs`.
|
||||
|
||||
## Weather independence and legacy `weather_entity`
|
||||
|
||||
Weather never changes the window rays. Once the feature, compass,
|
||||
|
||||
Reference in New Issue
Block a user