Skip to content

WORKFLOW TEST PULL REQUEST, NOT MERGING#54

Closed
vycdev wants to merge 33 commits into
mainfrom
autopaint-improvements
Closed

WORKFLOW TEST PULL REQUEST, NOT MERGING#54
vycdev wants to merge 33 commits into
mainfrom
autopaint-improvements

Conversation

@vycdev

@vycdev vycdev commented Jun 29, 2026

Copy link
Copy Markdown
Owner

No description provided.

vycdev added 30 commits June 18, 2026 22:36
@
Add auto-paint detail controls and optimizer tiers

Replace the repeated-swaps toggle with an Off/2/4/6/8/12 selector and add
a transition-detail selector (80/90/95% opacity) so stack height vs color
resolution is an explicit trade-off. Expand the optimizer menu to five
effort tiers (Fast/Balanced/Thorough/Deep/Exact base order) and score
sequences against the already-processed palette with an added detail-
coverage term.

Polish the panel UI: a determinate progress bar, fixed-width label column
so controls align, a quality/speed meter under the algorithm picker, and
nesting the enhanced-matching sub-options under their gate toggle.
@
Replace the repeated-swaps toggle with an Off/2/4/6/8/12 selector and add
a transition-detail selector (80/90/95% opacity) so stack height vs color
resolution is an explicit trade-off. Expand the optimizer menu to five
effort tiers (Fast/Balanced/Thorough/Deep/Exact base order) and score
sequences against the already-processed palette with an added detail-
coverage term.

Polish the panel UI: a determinate progress bar, fixed-width label column
so controls align, a quality/speed meter under the algorithm picker, and
nesting the enhanced-matching sub-options under their gate toggle.
Diffuse height-quantization error with the 12-neighbor, error-conserving
Stucki kernel instead of Floyd-Steinberg, spreading error over a wider
area for smoother tonal gradients and fewer directional artifacts.
Block-aware dot sizing, serpentine scan, and edge protection are
unchanged.
The optimizer scored each image color by projecting onto the raw per-layer
Lab polyline, which could land a target on a one-layer transition sliver --
a color no pixel is ever assigned -- and then optimize that fiction (e.g.
treating a purple target as rendering blue). Collapse consecutive
same-color layers into flat-zone nodes the way the 3D preview does, so the
objective scores the colors the model actually builds. All goldens and
realized-error budgets pass unchanged.
Assign each distinct image color to a distinct printable color so
perceptibly different colors are never collapsed onto one flat surface,
keeping gradient variation at a small per-color accuracy cost. The
injective, weight-ordered assignment runs in the shared printable-color
mapper used by both the optimizer score and the 3D preview, so the
optimized order and the built model stay consistent.

Opt-in toggle under Enhanced color matching, off by default; existing
behavior, goldens, and quality budgets are unchanged.
vycdev added 3 commits June 25, 2026 12:42
- Add createCenterWeight/createEdgeWeight factories that hoist all
  size-dependent terms once, and have useSwatches build them per image
  so the per-pixel swatch scan no longer recomputes exp/hypot per pixel.
- Use the least-opaque calibrated channel TD for the foundation layer
  so all channels reach ~95% opacity when the base filament is calibrated.
- Drop the production-dead generate*WeightedMapSimple helpers and retarget
  the region-weight test at the new factories.
The TD fit derives transmission from each measurement's RGB via the
linear-light blend inverse, so the stored measurement.transmission field
was written (by the legacy pure-ratio rgbToTransmission model) but never
read. The validation it fed could never fail because rgbToTransmission
clamps its own output to [0,1].

Collapse to one transmission model:
- Remove the transmission field from CalibrationMeasurement.
- Remove rgbToTransmission and normalizeCalibrationMeasurements.
- Drop the can't-fail transmission bounds check from validateMeasurement.
- importCalibration now strips measurements to {layers, rgb}, dropping the
  legacy key from older exports.

No behavior or UI change: the field never affected the fit and was not
displayed. Old profiles still load.
@vycdev vycdev closed this Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant