3D gamut is a dead panel #57

Closed
opened 2026-08-25 09:15:41 +01:00 by gronod · 0 comments
Owner

Problem

extract_gamut and loadGamutMesh exist in the codebase, but nothing in Stage 5 or Stage 4 triggers them to display the printer's color volume. Furthermore, initGamutViewer never stores currentProfileMesh / sRgbMesh because loadGamutMesh is never invoked.

Acceptance Criteria

  1. Trigger on Profile Generation & Verification:
    • After a successful colprof run and upon entering / running Stage 5 verification, execute iccgamut to extract <basename>.gam.
    • Call loadGamutMesh to load and render the printer gamut mesh in CIELAB space.
    • Load and display the bundled sRGB.gam reference overlay for comparative gamut evaluation.
  2. Mesh State & Lifecycle Management:
    • Ensure gamut_viewer.js tracks currentProfileMesh and sRgbMesh, disposing and removing previous geometries/materials when re-extracting.
  3. Viewport Responsiveness:
    • Ensure the Three.js WebGL canvas adapts dynamically via ResizeObserver when Stage 5 is made visible or the window is resized.
  4. Known Limitation (v0.2):
    • Delaunay triangulation on (a*, b*) flattens L* rather than computing a full 3D convex hull in Lab. Good enough for v0.2; full 3D convex hull in Lab is noted for future milestones.

Dependencies

  • Blocked by: #56 (colprof fix), Profile extension handling (.icc vs .icm)
### Problem `extract_gamut` and `loadGamutMesh` exist in the codebase, but nothing in Stage 5 or Stage 4 triggers them to display the printer's color volume. Furthermore, `initGamutViewer` never stores `currentProfileMesh` / `sRgbMesh` because `loadGamutMesh` is never invoked. ### Acceptance Criteria 1. **Trigger on Profile Generation & Verification**: - After a successful `colprof` run and upon entering / running Stage 5 verification, execute `iccgamut` to extract `<basename>.gam`. - Call `loadGamutMesh` to load and render the printer gamut mesh in CIELAB space. - Load and display the bundled `sRGB.gam` reference overlay for comparative gamut evaluation. 2. **Mesh State & Lifecycle Management**: - Ensure `gamut_viewer.js` tracks `currentProfileMesh` and `sRgbMesh`, disposing and removing previous geometries/materials when re-extracting. 3. **Viewport Responsiveness**: - Ensure the Three.js WebGL canvas adapts dynamically via `ResizeObserver` when Stage 5 is made visible or the window is resized. 4. **Known Limitation (v0.2)**: - Delaunay triangulation on `(a*, b*)` flattens `L*` rather than computing a full 3D convex hull in Lab. Good enough for v0.2; full 3D convex hull in Lab is noted for future milestones. ### Dependencies - Blocked by: #56 (colprof fix), Profile extension handling (.icc vs .icm)
gronod added the Kind/Bug label 2026-08-25 09:15:41 +01:00
gronod added this to the Milestone 7: v0.2 ship milestone 2026-08-25 09:41:55 +01:00
Sign in to join this conversation.