Commit graph

37 commits

Author SHA1 Message Date
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
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
586c2939a6 Enable undo/redo buttons when appropriate
CURA-12661
2025-08-04 15:46:51 +02:00
Erwan MATHIEU
53ef6fbdf3 Merge remote-tracking branch 'origin/CURA-12660_painting-UI-improvements' into CURA-12661_make-more-global-paint-undo 2025-08-04 15:29:15 +02:00
Erwan MATHIEU
9685764721 Implement undo-redo by full stroke
CURA-12661
2025-08-04 15:19:04 +02:00
Erwan MATHIEU
63843b59c4 Merge remote-tracking branch 'origin/main' into CURA-12660_painting-UI-improvements
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
2025-08-04 11:55:26 +02:00
Erwan MATHIEU
6547eb6ff3
Merge branch 'main' into CURA-12660_painting-UI-improvements 2025-08-04 08:46:04 +02:00
Erwan MATHIEU
78daa94ebf Save and restore painting tool settings
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12660
2025-08-01 17:08:53 +02:00
Erwan MATHIEU
ab58dec5d1 Fix unability to paint with visible message box
CURA-12660
When a message box is displayed, some offscreen rendering passes (face selection) render an unpredictable result and we are unable to start painting.
This went through a refactoring of the rendering passes. Since doing the offscreen rendering outside the Qt rendering loop caused some troubles, we now use the rendering passes only inside the Qt rendering loop, so that they work properly. Tools also have the ability to indicate which extra passes they require, so that we don't run all the passes when they are not required.
Since this issue also concerns the support blockers placement and rotation by face selection, they have been updated so that they now also always work.
The face selection mechanism using the Selection class was partially working and used only by the rotation, so now it has been deprecated in favor of the new mechanism.
2025-08-01 13:10:03 +02:00
Erwan MATHIEU
91e986697d Fix painting after changing the selected object
CURA-12660
2025-07-30 16:54:05 +02:00
Erwan MATHIEU
da0509cda3 Fix painting through an invisible object
CURA-12660
2025-07-30 15:58:26 +02:00
Erwan MATHIEU
5d2aca4e31 Avoid crash when UV coordinates not loaded/generated
CURA-12664
2025-07-30 12:10:40 +02:00
Erwan MATHIEU
bbddcab4e9 Proper paint-on-seam UI
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
CURA-12578
2025-07-03 11:05:09 +02:00
Erwan MATHIEU
7dcc5cd470 Expose brush shape to QML
CURA-12543
2025-06-24 13:11:00 +02:00
Erwan MATHIEU
7cca040033 Merge remote-tracking branch 'origin/CURA-12544_saving-and-loading-painted-files-in-Cura' into CURA-12566_save-proper-data-in-painted-texture 2025-06-19 10:35:53 +02:00
Erwan MATHIEU
4caba52f05 Basically working multipurpose painting
CURA-12566
2025-06-18 16:00:47 +02:00
Remco Burema
e27926a968 Paint: Have a stroke properly propagate over the texture-triangles.
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
part of CURA-12543
2025-06-18 15:02:06 +02:00
Remco Burema
d2ade67cad Paint: 'Substrokes per face' data-structure.
part of CURA-12543
2025-06-18 13:41:20 +02:00
Remco Burema
56f669d1fd Paint: Replace undo-redo UI code with qml Action.
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
part of CURA-12543
2025-06-18 12:50:21 +02:00
Remco Burema
01c02e4479 Paint: Simplify and clarify input-event-code.
part of CURA-12543
2025-06-18 12:42:45 +02:00
Remco Burema
4fae9b231a Paint: Make calculation of Baricentric-coordinates a bit more robust.
part of CURA-12543
2025-06-18 12:06:04 +02:00
Remco Burema
75946d8871 Shape of brush is an enum now, not a string.
part of CURA-12543
2025-06-18 11:56:08 +02:00
Remco Burema
4a87b48084 Stopgap to prevent texture-patch borders from messing up the painting.
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
This code is expandable into the real solution later, see the TODO left in the code by this commit.

part of CURA-12543
2025-06-05 08:25:20 +02:00
Remco Burema
40f02dc15f Defensive coding; deal with degenerate triangles, co-linearity or query pt equal to corner.
This shouldn't happen on a well UV-mapped, manifold mesh -- well, unless someone manages to click exactly on one of the triangle corners. Better to get this fixed now then to run into floating point shenanigans later.

part of CURA-12543
2025-06-05 08:23:22 +02:00
Remco Burema
12d788db62 Review comments: Fix crash when click next to object.
Refactoring that part to up top caused the problem I think -- getSelectedObject(0) over getAllSelectedObjects()[0] is clearly the better call in this case anyway.

part of CURA-12543
2025-06-04 21:00:27 +02:00
Remco Burema
d28c2aac68 Painting: Fix non-drag not producing a circle (square was already OK though).
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
part of CURA-12543
2025-05-28 17:12:42 +02:00
Remco Burema
c9ca999f10 PaintTool: Undo/Redo should be working now.
Also fix missing pen-shape I suppose.

part of CURA-12543
2025-05-28 16:43:33 +02:00
Remco Burema
4e5b0115ea Painting: Separate brush image didn't work properly, construct stroke-image by pen instead.
This also simplifies things nicely.

part of CURA-12543
2025-05-28 14:39:07 +02:00
Remco Burema
109f37657b Painting UI work: Update image-part(s) instead of pixel(s) w.r.t. render-backend.
part of CURA-12543
2025-05-28 12:32:36 +02:00
Remco Burema
704f9453f0 Properly completed drag to paint (no more just clicking points).
Some checks are pending
conan-package / conan-package (push) Waiting to run
unit-test / Run unit tests (push) Waiting to run
The most important thing to make it work is actually notifying the scene that something has changed -- the rest are just refactorings and (hopefully) optimizations.

part of CURA-12543
2025-05-27 17:03:38 +02:00
Remco Burema
33b5918acd Painting: Sort-of able to drag the mouse now, not just click.
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
Also typing. The way it now works is way too slow though, and it doesn't add 'inbetween' the moude-move-positions yet. Also several other things of course.

part of CURA-12543
2025-05-22 11:02:08 +02:00
Remco Burema
a176957fa7 Painting: Set color, brush-size, brush-shape.
part of CURA-12543
2025-05-22 10:48:22 +02:00
Remco Burema
3ae85e3e2a Refactored paint-view into its own thing.
part of CURA-12543
2025-05-21 21:53:37 +02:00
Remco Burema
c5592eea83 Slightly optimize and refactor the w.i.p. paint-tool.
Just enought so that the truly ugly things are out of it.

part of CURA-12543
2025-05-21 15:19:07 +02:00
Remco Burema
19ea88a8ce W.I.P. Start of paint-tool plugin UX work.
Should be able to paint pixels now if the tools is active, and the model loaded is with UV-coords (that rules out our current impl. of 3MF at the moment -- use OBJ instead), and you position the model outside of the build-plate so the paint-shadr that is temporarily replacing the 'disabled' one is showing.

Will need a lot of extra features and optimizations still!

part of CURA-12543
2025-05-20 15:56:21 +02:00