Detailed Analysis of Generated Pipeline Files (c:\temp\argyllfiles)
Review of the complete workflow output files in c:\temp\argyllfiles (xp_55_koala_satin.gam, xp_55_koala_satin.icm, xp_55_koala_satin.ti1, xp_55_koala_satin.ti2, xp_55_koala_satin.ti3, xp_55_koala_satin.tif) confirms the exact structure generated by the ArgyllCMS pipeline and reveals the precise mechanisms failing in Stage 5:
Key Technical Findings from xp_55_koala_satin.gam
Exact .gam File Specification: xp_55_koala_satin.gam (43.6 KB) contains two structured data sets created by iccgamut -v -d 10:
Render the generated profile gamut with semi-transparent Lambertian shading (opacity: 0.75, color: 0x3b82f6) alongside the wireframe reference assets/sRGB.gam.
Target 2: Fix computeQuickHull Fallback for Raw Point Clouds
For point cloud inputs (such as .ti3 measurement files without precomputed .gam), ensure points are transformed to { x: a, y: L, z: b } prior to invoking computeQuickHull.
gronod
changed title from bug : 3d gamut visualisation does not show the actual gamut to bug: 3D Gamut Visualization Fails to Render Mesh and Profcheck Metric Cards Display 0.00 (#179)2026-09-02 01:08:18 +01:00
Fixed in fix/179-gamut-profcheck (stacked on enh/185-gamut-viewer):
Hardened parseGamutFile to support multiple BEGIN_DATA blocks, inline # comments, out-of-bounds vertex warnings, and user-visible parser warnings.
Hardened profcheck.js report parsing to prefer the last valid JSON summary and fall back to an expanded set of regex patterns for legacy plain-text output.
Added parser warnings to the process log when metrics cannot be detected.
Fixed loadGamutMesh call signature and wrapped the gamut load in try/catch.
Fixed in `fix/179-gamut-profcheck` (stacked on `enh/185-gamut-viewer`):
- Hardened `parseGamutFile` to support multiple `BEGIN_DATA` blocks, inline `#` comments, out-of-bounds vertex warnings, and user-visible parser warnings.
- Hardened `profcheck.js` report parsing to prefer the last valid JSON summary and fall back to an expanded set of regex patterns for legacy plain-text output.
- Added parser warnings to the process log when metrics cannot be detected.
- Fixed `loadGamutMesh` call signature and wrapped the gamut load in `try/catch`.
Closes #179.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Detailed Analysis of Generated Pipeline Files (
c:\temp\argyllfiles)Review of the complete workflow output files in
c:\temp\argyllfiles(xp_55_koala_satin.gam,xp_55_koala_satin.icm,xp_55_koala_satin.ti1,xp_55_koala_satin.ti2,xp_55_koala_satin.ti3,xp_55_koala_satin.tif) confirms the exact structure generated by the ArgyllCMS pipeline and reveals the precise mechanisms failing in Stage 5:Key Technical Findings from
xp_55_koala_satin.gamExact
.gamFile Specification:xp_55_koala_satin.gam(43.6 KB) contains two structured data sets created byiccgamut -v -d 10:COLOR_REP "LAB"GAMUT_CENTER "50.0 0.0 0.0"CSPACE_WHITE "93.59 1.94 -7.63",CSPACE_BLACK "3.82 1.29 -4.22"CUSP_RED,CUSP_YELLOW,CUSP_GREEN,CUSP_CYAN,CUSP_BLUE,CUSP_MAGENTANUMBER_OF_SETS 739):NUMBER_OF_SETS 1474):Why 3D Gamut Visualization Shows Empty Scene:
src/js/gamut_viewer.jscurrently usesparseCGATS(text)which:BEGIN_DATAblock up toEND_DATA.BEGIN_DATAblock (the 1,474 triangle surface faces).{ L, a, b }.{ L, a, b }intocomputeQuickHull(points).src/js/vendor/quickhull.jsstrictly indexesp.x,p.y,p.z. Becausep.xisundefined,computeQuickHullevaluatesminX === maxX (0 === 0)astrueand returns[](empty array).xp_55_koala_satin.gam) or the standard reference gamut (assets/sRGB.gam).Why Profcheck Quality Report Shows
0.00:profcheckonxp_55_koala_satinis:Profile check complete, errors(CIEDE2000): max. = 1.284622, avg. = 0.223759, RMS = 0.277903src/js/profcheck.js:136-138regex expectsavg.\s*dE\s*=(requiring the literal"dE"string), which fails to match and leaves metrics at0.00.Detailed Actionable Targets
Target 1: Full Native Argyll
.gamSurface Mesh Parser (src/js/gamut_viewer.js)parseGamutFile(gamText)to parse both tables from.gamfiles:[id, L, a, b], mapping to 3D Three.js coordinate space:x = a*(Green <-> Red axis, range ~ -128..+127)y = L*(Lightness axis, range 0..100)z = b*(Blue <-> Yellow axis, range ~ -128..+127)[v0, v1, v2]triangle indices from the secondBEGIN_DATAblock.THREE.BufferGeometryusing:geometry.setAttribute('position', new THREE.BufferAttribute(vertexFloat32Array, 3))geometry.setIndex(new THREE.BufferAttribute(indicesUint32Array, 1))geometry.computeVertexNormals()opacity: 0.75, color: 0x3b82f6) alongside the wireframe referenceassets/sRGB.gam.Target 2: Fix
computeQuickHullFallback for Raw Point Clouds.ti3measurement files without precomputed.gam), ensure points are transformed to{ x: a, y: L, z: b }prior to invokingcomputeQuickHull.Target 3: Profcheck Stdout Regex Normalization (
src/js/profcheck.js)avgDe:stdout.match(/(?:avg\.|average)\s*(?:dE\s*)?[:=]\s*([\d\.]+)/i)maxDe:stdout.match(/(?:max\.|peak)\s*(?:dE\s*)?[:=]\s*([\d\.]+)/i)rmsDe:stdout.match(/(?:rms\.|rms)\s*(?:dE\s*)?[:=]\s*([\d\.]+)/i)bug : 3d gamut visualisation does not show the actual gamutto bug: 3D Gamut Visualization Fails to Render Mesh and Profcheck Metric Cards Display 0.00 (#179)Fixed in
fix/179-gamut-profcheck(stacked onenh/185-gamut-viewer):parseGamutFileto support multipleBEGIN_DATAblocks, inline#comments, out-of-bounds vertex warnings, and user-visible parser warnings.profcheck.jsreport parsing to prefer the last valid JSON summary and fall back to an expanded set of regex patterns for legacy plain-text output.loadGamutMeshcall signature and wrapped the gamut load intry/catch.Closes #179.