Files
bubblechambersimart/fable/stack/SPEC.md
2026-07-05 20:00:13 -04:00

4.6 KiB
Raw Blame History

The Chamber as a Volume — acrylic stack spec & depth design

A backlit, six-plane physical piece for the eufyMake E1: three acrylic sheets, printed front and back, spaced with air gaps over an LED panel. This is roadmap Phase 3 made literal — the scene model's per-track z and age stop being opacity tricks and become actual millimetres.

Physical stack (proposed — buy list at bottom)

viewer
  ─ C-front   the hand: grease pencil, réseau, fiducials, header, scratches
  ═ sheet C   3 mm clear cast acrylic
  ─ C-back    near scatter: δ-ray curls, close cosmics
      ~6 mm air gap
  ─ B-front   THE EVENT: sharp beaded track cores
  ═ sheet B   3 mm
  ─ B-back    halation: the same tracks, blurred — real glow-behind-the-line
      ~6 mm air gap
  ─ A-front   history: older background events, sinking
  ═ sheet A   3 mm
  ─ A-back    the cause: pressure disk (CMYK-only → pure glow) + chamber optics
      ~12 mm gap
  ▤ diffuser  frosted acrylic 23 mm (kills LED hotspots)
  ▦ LED panel A3 slim light pad

Plane depths (A-back = 0): 0 / 3 / 9 / 12 / 18 / 21 mm — two depth scales: 3 mm within a sheet (fine parallax: halation, moiré) and 9 mm between sheets (coarse parallax: cause → event → hand).

The depth story is causal, not just spatial: deepest plane is the cause (the pressure wave, pure transmitted light), then history, then the halation, then the event itself, then the debris flying toward you, and finally — on the front glass, where scanners actually wrote — the human hand measuring it all. Parallax reads as interpretation floating above evidence.

Sheet & print geometry

  • Sheet: 330 × 420 mm (E1 full bed, A3+), portrait. 3 mm clear cast acrylic, gloss both faces.
  • Art square: 300 × 300 mm, centred horizontally (15 mm margins), top edge at y = 20 mm. Zone below (y = 320420) carries film furniture / data box / caption on C-front only; other sheets stay clear there (light spills through — the plate floats in a lit void).
  • Corner mounting holes 5 mm ∅ at 8 mm insets, all sheets + diffuser, for M4 nylon standoffs (3 mm + 6 mm + 6 mm spacer stacking, or threaded rod with nuts as spacers).
  • Registration: every plane file carries corner crosses at the same four coordinates just outside the art square; back-face files are mirrored at export so they read correctly through the sheet.

White-ink logic (backlit grammar)

zone channels lit result
clear acrylic none pure light
glow elements (disk, halation, deep tracks) CMYK only stained-glass — light pours through colour
focal ink (event cores, grease pencil, furniture) CMYK + white underlay holds density against the panel — reads as ink
blocking (none in v1) white + black opaque

Rule of thumb: depth = transparency. The deeper the plane, the less white ink; the front glass is the most "solid" ink. The disk gets zero white — lit, it becomes a light source (the laser-interference reference lives here, later).

Pipeline

plan (fable/stack/plans/*.mjs)
  → node tools/stack-render.mjs <plan>          per-plane SVGs + manifest.json
  → fable/stack/simulator.html?c=<id>           parallax + backlight art-direction
  → [next] tools/stack-export.mjs               print masters: mirrored backs,
                                                white-ink masks, A3 layout @ true scale

src/render/stack.js splits one generated scene into per-plane sub-scenes (selectors: track kind / z band / age band; disk, optics, damage, media, fiducials, header as flags) and renders each through the untouched renderSVG with transparentPaper. Bloom/core pairs use the same track selector so bubble positions are identical on both faces (same filtered list → same salted draws) — keep density/size equal within a pair.

Per-plane renders set depth/aging low: the physical stack now is the depth model; double-encoding it as opacity would fight the medium.

Calibration coupon (print before the hero)

One A5 sheet, double-sided: white-ink step wedge (0/25/50/75/100%, single + double pass) · the same δ-ray at three white levels · CMYK-only vs CMYK+white swatch pair · front/back registration cross · 6 pt / 8 pt mono type both faces. Judge lit on the panel, not in hand.

Buy list (if starting from zero)

  • 3× cast clear acrylic 330 × 420 × 3 mm (+1 spare), protective film both sides
  • 1× frosted/opal acrylic 330 × 420 × 23 mm (diffuser)
  • A3 slim LED light panel (dimmable if possible)
  • M4 nylon standoff kit (assorted 3/6/12 mm) or 4× M4 threaded rod + nuts
  • IPA + lint-free cloths; adhesion promoter if the E1 profile recommends it