Commit graph

104 commits

Author SHA1 Message Date
Erwan MATHIEU
e8152bf047 Do the cursor projection using uvula
CURA-12743
2025-10-01 11:44:14 +02:00
HellAholic
635ae45b5e
Merge branch '5.11' into CURA-12732_fix_slice_paint_hover 2025-09-30 10:50:22 +02:00
Remco Burema
6b6200fc94 Remove spurious method, handle the expected way.
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
This was basically already possible, no need to add an extra method.

done as part of CURA-12732
2025-09-30 09:14:02 +02:00
Remco Burema
cd2d30fd82 Fix moving (paint) cursor also emitted scene-change.
This prevented slices from happening if the mouse-cursor came (even near) the model.

originally done as part of CURA-12634 -- attempt to cherry-pick and subsequent rework later for CURA-12732
2025-09-25 12:19:15 +02:00
Erwan MATHIEU
b5f510face Fix painting when switching between printers with different number of extruders
CURA-12730
We now always allocate a data range for all possible extruders (16) instead of only the ones the actual printer can support.
2025-09-24 16:25:23 +02:00
Erwan MATHIEU
b3ea674251 Use per-object undo-redo stacks for painting
CURA-12731
2025-09-22 15:54:32 +02:00
Erwan MATHIEU
2eaa4fb820 Make sure paint commands only change their feature
Some checks are pending
conan-package-resources / conan-package (push) Waiting to run
conan-package-resources / signal-curator (push) Blocked by required conditions
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
CURA-12731
2025-09-22 14:34:39 +02:00
Erwan MATHIEU
a2db7b3004 Fix clear painting with optimized painting mechanisms
CURA-12731
2025-09-22 11:40:56 +02:00
Erwan MATHIEU
4c92ce6644 Fix crash after loading a second model for painting
CURA-12731
2025-09-19 16:16:47 +02:00
Erwan MATHIEU
6cf1f2df2a Optimize painting display performance
CURA-12731
2025-09-19 16:01:41 +02:00
Erwan MATHIEU
8e5e655fe0 Merge remote-tracking branch 'origin/main' into CURA-12662_paint_splatter_issue 2025-09-19 13:39:15 +02:00
Erwan MATHIEU
0a133ff92c Fix shader compatibility
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12662
2025-09-19 10:28:20 +02:00
Erwan MATHIEU
9ee0169410 Merge remote-tracking branch 'origin/CURA-12662_paint_splatter_issue' into CURA-12663_paintbrush_preview
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
2025-09-18 15:57:57 +02:00
Erwan MATHIEU
889e65e11d Optimize polygons projection
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12662
Use a numpy-vectorized function to process the barycentric projection, this is much faster
2025-09-18 15:51:09 +02:00
Erwan MATHIEU
cf1486b880 Merge polygons rasterization to common function
CURA-12662
2025-09-17 13:27:27 +02:00
Erwan MATHIEU
188109c41e Optimize painting by getting the list of painted faces
CURA-12662
2025-09-17 09:18:24 +02:00
Erwan MATHIEU
8382a96f05 Optimize painting
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12662
2025-09-15 16:10:19 +02:00
Erwan MATHIEU
a6a560b93d Display exact paint cursor
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12663
2025-09-15 14:39:50 +02:00
Erwan MATHIEU
0830fd23ce Fix cursor display
Some checks failed
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
conan-package-resources / conan-package (push) Has been cancelled
printer-linter-format / Printer linter auto format (push) Has been cancelled
conan-package-resources / signal-curator (push) Has been cancelled
CURA-12663
2025-09-15 09:18:58 +02:00
Erwan MATHIEU
24721fbec6 Merge branch 'CURA-12662_paint_splatter_issue' into CURA-12663_paintbrush_preview 2025-09-15 09:17:10 +02:00
Erwan MATHIEU
b88e46dd5e Fix variable and add exception log
Some checks failed
conan-package-resources / conan-package (push) Has been cancelled
conan-package / conan-package (push) Has been cancelled
printer-linter-format / Printer linter auto format (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
conan-package-resources / signal-curator (push) Has been cancelled
CURA-12688
2025-09-12 16:32:55 +02:00
Erwan MATHIEU
08eac57c04 Merge remote-tracking branch 'origin/main' into CURA-12662_paint_splatter_issue 2025-09-12 16:15:25 +02:00
Erwan MATHIEU
e2b19731ab
Merge branch 'main' into CURA-12449_handling-painted-models-map
Some checks are pending
conan-package-resources / conan-package (push) Waiting to run
conan-package-resources / signal-curator (push) Blocked by required conditions
conan-package / conan-package (push) Waiting to run
printer-linter-format / Printer linter auto format (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
2025-09-11 09:00:07 +02:00
HellAholic
02dbc7e6e1 add temp shortcuts
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
2025-08-27 15:02:22 +02:00
HellAholic
a55cca73f4 Apply Review
clear_mask -> clear_texture_bit_mask
2025-08-26 13:05:56 +02:00
Remco Burema
10897e2b71 Painting: Show brush-preview when moving the mouse over.
CURA-12663
2025-08-23 22:42:47 +02:00
Remco Burema
fec24bfb19 Make sure the paint-strokes are as solid as before.
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
For fixing the paint-splatter issue Iswitched to a new way of drawing the polygon, which could result in missed strokes of pixels at the edge of (UV) polygons. This change should catch most of the remaining X% where that happened.

done as part of CURA-12662
2025-08-20 16:38:02 +02:00
Remco Burema
8bab847594 Remap-barycentric was slowing things down; optimize.
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
It was using the old (well, relatively speaking ... from the start of development of the current paint-epic) getIntersectRatioViaPt (three times no less), which was massive overkill for what we're trying to accomplish here.

done as part of CURA-12662
2025-08-20 15:13:03 +02:00
Remco Burema
1f60829959 Cleaning, small optimizations.
part of CURA-12662
2025-08-20 09:21:04 +02:00
Remco Burema
9bc1294ce1 Remove useless parameters (use already cached values instead).
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
part of CURA-12662
2025-08-19 09:08:09 +02:00
Remco Burema
28dc0cd32a PaintTool: Optimization refactors.
Don't have so many function-calls in performant code and cache camera-related variables until the camera moves again.

part of CURA-12662
2025-08-19 08:55:55 +02:00
Remco Burema
d339e092e7 Painting: Make fill-polygon miss less gaps.
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
... but one of the problems is that it doesn't give an outline.

part of CURA-12662
2025-08-18 22:35:18 +02:00
Remco Burema
6da4ca66a8 Painting: Have a sensible coordinate system.
Using the camera is more standard, and while it has some downsides ('smearing'/large skews on surfaces angled away from the camera) it seems to have the least quirks (or at least ones that users are used to already). -- Also the what was here previously was just wrong, I'm just saying it could in theory have been solved the way I originally wanted to, but that'd take a long time to get completely right and efficient.

part of CURA-12662
2025-08-18 21:05:09 +02:00
Remco Burema
b091cc23a1 Have the projection of the paint-stroke involve the camera after all.
This fixes the issue that it wouldn't flood over the 'rim' whenever the endpoints of a stroke was wholly within one plane, but the stroke itself would overlapp another. Plus also handle click on single point and use transformed mesh consistantly.

part of CURA-12662
2025-08-14 14:30:12 +02:00
Remco Burema
392e614887 Get PaintTool in a working state again after rewrite of projection.
Various fixes applied; method of drawing changed a bit (use qpath, otherwise we can't fill, right-size the brush in various ways (w/h of UV-canvas taken into account, fix that 'stroke-coords' are _yet another_ coord system instead of the same as one of the existing) also, with the stroke; fix that it should have been a convex hull of the union, not a convex hull of the intersection -- also take the scale of the model into account (which we need to) (but this has a side-effect in that the brush is now always the same size, regardless of which size the object is -- makes sense, but not 100pct sure if wanted) -- various other things cleaned up etc.

part of CURA-12662
2025-08-13 11:09:57 +02:00
Remco Burema
4f465bc30f Merge remote-tracking branch 'origin/CURA-12660_painting-UI-improvements' into CURA-12662_paint_splatter_issue 2025-08-12 20:31:50 +02:00
Remco Burema
a746a60afb Intersection each polygon with the stroke; paint that instead of dumping it to UV directly.
This prevents 'paint splatter', that is, previously, we had just a begin and an end point (actually we had a temp stopgap that iterated per triangle, but similar problems persisted), which we then mapped directly to UV and drew the stroke in that space. This causes the stroke to overlap parts of the UV-map that it didn't touch in 3D at all.

Now, we instead gather each triangle, map that to the estimated stroke plane, intersect the result with the stroke-shape, then map the resulting polygon back to UV-space.

At the moment this code isn't fully working yet -- but I solved all of the obvious things that can be wrong, and it could partially be that I based this branch off of a moment in time the other branch wasn't functionally properly.

part of CURA-12262
2025-08-12 19:29:43 +02:00
Erwan MATHIEU
175a72e12b Fix direct import
CURA-12584
2025-08-08 08:32:09 +02:00
Erwan MATHIEU
88ab3c1732 Fix crash when trying to clear material painting
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
CURA-12585
2025-08-07 11:19:14 +02:00
Erwan MATHIEU
3927b5e379 Merge branch 'CURA-12661_make-more-global-paint-undo' into CURA-12449_handling-painted-models-map 2025-08-07 11:15:49 +02:00
Erwan MATHIEU
243b7c56a6 Merge branch 'CURA-12660_painting-UI-improvements' into CURA-12661_make-more-global-paint-undo
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
2025-08-07 11:08:49 +02:00
Erwan MATHIEU
db514f0be7 Properly prepare the model for painting
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12660
The UV-unwrapping is now done in a background job, and the UI displays a waiting state. This fixes the issue where the user would start painting but the model was not ready yet, and the first stroke would be missing.
2025-08-07 11:03:51 +02:00
Erwan MATHIEU
8a59faceb1 Merge branch 'CURA-12660_painting-UI-improvements' into CURA-12661_make-more-global-paint-undo
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
2025-08-06 16:39:49 +02:00
Erwan MATHIEU
08a9bbe52c Merge branch 'CURA-12660_painting-UI-improvements' into CURA-12449_handling-painted-models-map
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
2025-08-06 16:34:41 +02:00
Erwan MATHIEU
e69a436942 Fix sometimes wrongly displayed view
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
CURA-12660
This required a refactoring of the management of the active view. The previous behavior was that anyone could set the active view, depending on certain conditions. But now we also have a view that is set by a tool, so sometimes the actually set view would be incorrect. Now each Stage requests an active view, and each tool CAN also request an active view. Then the Controller decides which view should actually be active depending on the active stage and tool.
2025-08-06 16:15:05 +02:00
Erwan MATHIEU
2e8cc4da82 Fix display not updating when changing tool
Some checks failed
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
conan-package-resources / conan-package (push) Has been cancelled
printer-linter-format / Printer linter auto format (push) Has been cancelled
conan-package-resources / signal-curator (push) Has been cancelled
CURA-12660
Previous fix caused issues when moving to preview
2025-08-05 16:10:57 +02:00
Erwan MATHIEU
310128d87e Merge branch 'CURA-12660_painting-UI-improvements' into CURA-12449_handling-painted-models-map 2025-08-05 15:57:57 +02:00
Erwan MATHIEU
cf24ed91e9 Improve fix for opacity issues
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
CURA-12660
Previous fix caused issues when moving to preview
2025-08-05 15:55:23 +02:00
Erwan MATHIEU
c75c668604 Allow user to display and select material color painting
CURA-12584
2025-08-05 15:34:57 +02:00
Erwan MATHIEU
9e186af74b Merge branch 'CURA-12660_painting-UI-improvements' into CURA-12449_handling-painted-models-map 2025-08-05 14:08:45 +02:00