This task is a collection of notes for several small to medium problems and possible solutions regarding painting assistants and the painting assistant tool. The idea is the consolidate all the necessary changes into a refreshed assistant tool. I feel like this is better than peppering small tweaks every minor release, and it would be a good look to have for the release of v5 :) Also perhaps it could lay the groundwork for more ambitious projects and improvements on painting assistants as a whole (eg T11345, T6543, Assistant Layers, Python API?, Animation?, etc)
The motivation for this is to make Krita's assistants more useful, particularly in the perspective drawing department.
My hope is for a refresh to achieve the following:
- Encourage users who didn't use assistants to start using them
- Encourage current users of assistants to use assistants more often than they already do
- Help frequent users get more work done with assistants than they already do
These notes are based on the current stable release of Krita, v4.3
= The Good =
Functionally, most of the assistants are perfectly usable already. These assistants probably won't receive any user-visible changes
- Ruler assistants and Spline assistants
- Elliptical assistants
- Vanishing Point assistant
= The Bad =
- Users want more assistants for various linear perspective drawing workflows
- 2PP Assistant https://bugs.kde.org/show_bug.cgi?id=405644
- 1PP Assistant https://krita-artists.org/t/proposal-for-a-1-point-perspective-assistant-tool/8377
- Yet another 2PP Assistant https://krita-artists.org/t/a-2-point-perspective-assistant-tool/8227
- I want a 3PP assistant
- Assistant control panels hiding each other and other assistants' handles https://bugs.kde.org/show_bug.cgi?id=396979
- No useful right-click menu unique to assistant tool
- No Shift-snapping during assistant creation https://bugs.kde.org/show_bug.cgi?id=406204
- No mechanism to make assistants aware of each other / stitched together / aligned to each other / etc
- Will be necessary for to align 2PP and 3PP assistants together
- Necessary to align Perspective assistant with VP assistant
- Assistant preview doesn't follow where the painting is happening on the canvas
- Can't select multiple assistants and operate on several at once
= The Ugly =
- Perspective Assistant:
- Slashes the canvas FPS if you zoom in too close https://bugs.kde.org/show_bug.cgi?id=411352
- It has "side handles" that just make more Perspective assistants not aligned to anything in particular https://bugs.kde.org/show_bug.cgi?id=331787
- Doesn't integrate with the Vanishing Point assistant https://bugs.kde.org/show_bug.cgi?id=292684
- It's logic is weirdly tangled up in the assistant tool and the painting assistant class
- Doesn't do any of the cool stuff that Transform tool can do eg rotating and resizing
= Proposed Changes =
== Popup Palette / RMB menu ==
TODO
== Alternate actions==
Assuming the configured alternate action key is Shift, we want specific helpful and documented things to happen when the user does the following when the assistant tool is active:
- Shift-LMB-click: TODO
- Shift-LMB-drag: TODO
- Shift-LMB-move: TODO
https://invent.kde.org/graphics/krita/-/merge_requests/414
== Tool Options changes ==
TODO
== On-canvas editor widget changes ==
Worth refreshing the look of the editor widget, what with Krita on android and assistant undo now being a thing,
- Assistants can only be selected by clicking one of their handles, if the user accidentally click-drags, they can just undo it
- Only show widget for currently selected assistant
- Fade out widgets for unselected assistants, but keep snapping status of the assistant (the middle button) visible
- Make buttons bigger
- Handles and side-handles will get displayed over faded-out widgets that belong to other assistants
- Alternate action: shift-click on snapping button causes all other assistants to disable snapping, if they haven't already
- Alternate action: shift-click on deletes all other assistants
- Alternate action: shift-drag on moving button drags a duplicate of the assistant
== More linear perspective grid/drawing assistants ==
The Vanishing Point assistant is incredibly useful and handy on its own already, so there's little to be gained by having a dedicated "2 Point" assistant or a "3 Point" assistant that doesn't amount to anything more than just placing 3 normal vanishing point assistants.
So what I'm interested in introducing is a new set of "strict" perspective assistants that support a different kind of painting assistant workflow, where the user will be periodically tweaking the same assistant depending on what they are drawing. This workflow is in contrast to the usual one-and-done workflow where the assistant remains stationery for the rest of its useful existence.
These assistants will be "strict" in the sense that the tweaks the user makes to it isn't necessarily free-form, but follows very specific rules to maintain its own coherency:
- 2PP Assistant:
- Dragging either VP will cause the opposite VP to move in order to maintain the relative distortion levels around the center of vision
- Dragging the center of vision is restricted to the horizon. Dragging it is also not advised
- https://invent.kde.org/graphics/krita/-/merge_requests/390
- 3PP Assistant:
- TODO
== Rework Perspective assistant and clean it out of the assistant tool and assistant class ==
I think the Perspective assistant has a very specific use-case where it is incredibly useful, and that is when you're painting a landscape and need your grass brush to resize depending on where on the assistant it is being painted on is.
- Remove ability to "drag out" another Perspective assistant from the "side handles"
- Consolidate as much of the Perspective assistant logic out of the assistant tool and parent assistant class and into its own assistant class
- Fix the weird lagginess
- Allow user to adjust how many grid squares gets drawn
- Allow user to drag out side handles to enlarge the grid while keeping VPs the same