Skip to content

ImageMap→Ultra FULL PR1: libs + Contoning + Remap + ImportedTexture + LFS LUT - #10

Draft
aceRage wants to merge 1 commit into
mainfrom
cursor/imagemap-full-pr1-libs-lfs-f6e3
Draft

ImageMap→Ultra FULL PR1: libs + Contoning + Remap + ImportedTexture + LFS LUT#10
aceRage wants to merge 1 commit into
mainfrom
cursor/imagemap-full-pr1-libs-lfs-f6e3

Conversation

@aceRage

@aceRage aceRage commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Description

ImageMap→Ultra FULL PR1 (libs + LFS). Fresh branch from paint-depth tip dff2c65eab. Does not continue thin MVP PR #9 and does not merge ImageMap main.

Source tip: OrcaSlicer-ImageMap @92548381056dbf72836b0a1bdc455f238218dbfb (v1.0.44 lineage).

Locked FULL-plan decisions (Lance ACCEPTED):

  • Contoning IN
  • Remap IN
  • lut_wide.png.c via Git LFS (~36.3 MiB / 38094965 bytes)
  • ImportedTexture IN
  • FULL UI later (PR4) — not in this PR
  • GLTF / tinygltf OUT
  • Prime-tower images OUT
  • C3 best-effort: no paint_depth_* regression

See docs/imagemap-full-pr1.md.

Include

  • deps_src/colorsolver (AGPL, NOTICE + headers)
  • deps_src/pigment-painter (GPL-3.0 COPYING) with lut_wide.png.c via Git LFS
  • deps_src/prusa-fdm-mixer (MIT LICENSE)
  • TextureMapping.cpp/.hpp, TextureMappingOffset.cpp/.hpp, TextureMappingContoning.cpp/.hpp
  • ImageMapRawFilamentOffsetAtlas.*, ModelTextureDataRemap.*, Format/ImportedTexture.*
  • Six texture_mapping_* PrintConfig keys only:
    • texture_mapping_definitions
    • texture_mapping_global_settings
    • texture_mapping_background_color
    • texture_mapping_outer_wall_gradient_global_strength
    • texture_mapping_outer_wall_gradient_max_line_width
    • texture_mapping_outer_wall_gradient_min_line_width
  • CMake: TM / Contoning / Remap / ImportedTexture / Atlas listed beside PaintDepth; libslic3r PUBLIC-links colorsolver + nlohmann_json; no tinygltf
  • Print::texture_mapping_manager() (same pattern as mixed filament) — Print::apply does not load definitions yet (PR2)
  • Real ColorFacetsAnnotation + ModelVolumeImportedVector so Remap/Offset compile
  • License / COPYING / NOTICE retained

Exclude (hard for PR1)

  • tinygltf, Format/GLTF* (OUT)
  • MMUPaintedTexturePreview, gizmos, Plater (PR4)
  • GCode / LayerRegion / ToolOrdering / MMS / Fill Contoning hooks (PR2+)
  • Prime-tower image assets
  • PaintDepth.* left alone
  • paint_depth_* registration and handle_legacy_composite untouched

Phase 0 spike

  • Contoning + Offset + Remap + ImportedTexture sources are included as libs. ContoningSolver / Remap snapshot / ImportedTexture helpers have unit smokes. Fill / LayerRegion / GCode hooks are not pulled in; Print::apply does not load TM definitions yet.
  • LFS: deps_src/pigment-painter/lut_wide.png.c is a Git LFS pointer (oid sha256:567e5ef434…, size 38094965). Not expanded as a normal blob.
  • GLTF stays OUT. No Format/GLTF*, no deps_src/tinygltf. OBJ/GLTF import wiring that filled imported_texture_* in ImageMap Model.cpp was not copied.
  • PR2 stubs: TM keys are listed in Print::invalidate_state_by_config_options steps_gcode so they do not fall through to invalidate_all_steps before slicing hooks exist.

Git LFS / CI

.gitattributes:

deps_src/pigment-painter/lut_wide.png.c filter=lfs diff=lfs merge=lfs -text

Local:

git lfs install
git lfs pull
wc -c deps_src/pigment-painter/lut_wide.png.c   # expect 38094965

CI (required before cmake configure):

- uses: actions/checkout@v5
  with:
    lfs: true

or git lfs pull after a plain checkout.

build_orca.yml / build_deps.yml already had lfs: true. build_all.yml now does too. Details: deps_src/pigment-painter/README.md.

Paint-depth hard gate

paint_depth_* keys, handle_legacy_composite, and PaintDepth.* were not edited. New TM keys are registered away from that block.

Modulation enums: LineWidth=0, PerimeterPath=1, PerimeterPathV2=2.

Screenshots/Recordings/Graphs

N/A — libs + CMake + PrintConfig + LFS only; no UI.

Tests

  • New: tests/libslic3r/test_texture_mapping.cpp
    • six config keys + defaults + paint_depth keys still present
    • modulation enums
    • TextureMappingManager construct/serialize
    • offset helper + empty atlas smoke
    • TextureMappingContoningSolver construct
    • ModelTextureDataRemap snapshot on empty volume
    • ImportedTexture checked_rgba_buffer_size / path helper
  • Cloud agent cannot run tests/libslic3r/libslic3r_tests — no slicer deps / full build tree on this VM. Please run after a normal Linux/CI build:
    • ./tests/libslic3r/libslic3r_tests "[paintdepth]"
    • ./tests/libslic3r/libslic3r_tests "[texturemapping]"

Follow-ups

  • PR2: GCode / LayerRegion / ToolOrdering / MMS + Print::apply load of texture_mapping_definitions + Contoning fill hooks
  • PR4: FULL zone-editor UI (not this PR)
  • Later: 3MF persistence of imported_texture_* / color facets; OBJ import of textures (still no GLTF)
Open in Web Open in Cursor 

…S LUT.

Extract TextureMapping/Contoning/Offset/Remap/ImportedTexture and ColorSolver
vendors from OrcaSlicer-ImageMap @ 9254838. Track lut_wide.png.c with Git
LFS. Register six texture_mapping_* keys only; leave paint_depth_* untouched.

Co-authored-by: aceRage <aceRage@users.noreply.github.com>
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.

2 participants