There are two scenerios that assistants are a bit wonky to use currently. I have some ideas but none of them is very good, and even research in other programs didn’t help much.
So I’m looking for fresh ideas how to improve access to assistants in those two scenerios:
you want to make one single line or a bezier curve in a nice way and it’s done better with assistants, but to do that, you gotta go to the assistant tool, set it up, then move to the brush, enable snapping, then go to the assistant tool again to remove it
how to make it faster/easier?
you want to draw something in perspective (or have a lot of assistants), but you are right now drawing near the horizon, so the assistant tool has a hard time to guess which direction you want to go
how to temporarily choose a specific assistant or a specific direction (in case of 2pp assistant) in a fast/easy way?
This could be resolved by buttons on the toolbar, or some new widgets on the canvas visible even when the brush tool is used, or new shortcuts, or new docker, or any other thing GUI-wise that you can think of. Probably some of them would be impossible to do (and quite a lot might require full rework, which I’m not going to do right now), and of course I couldn’t implement five ideas that contradict each other, but still, having ideas to choose from is better than just implementing the first one.
Right now the more ideas the merrier, because I need some inspiration… later I will show some solutions I already came up with in case they can be improved or spark new inspiration, and then some best idea will be selected and implemented, hopefully (though, as usual, the process might change).
(scenario 2) I would be glad to see docker “assistants” similar to the docker “layers”. All existing functions, but adapted to “assistants”: renaming, grouping, hiding, blocking, isolation of one active “assistant” (or group).
And after thinking more… it may be easier to add “assistants” directly to the layers panel. This suggests the possibility of linking the assistant’s activity to certain layers (groups) or globally, by analogy with the “global selection mask” and “local selection mask”.
For some reason it seems to me that assistants can quite organically fit into the layers panel.
I have no solution for bezier curves right now. But in general a hotkey that makes the brush snap horizontally or vertically (depending on the direction you draw in) would be really great. So pretty much as if you would hold down V and Shift. So I paint, want a straight line and then press the key and draw my straight line (or hold the key down, we’d need to discuss that further I guess). Just like it works in Photoshop when you hold Shift while using the brush.
Maybe like in Blender, while drawing (in Blender moving, scaling or rotating an object), with an active assistant you could constrain the brush to move in X, Y or Z with the fitting key on the keyboard. Or toggle through active assistants. So Krita keeps the last selected one “in mind” and indicates it through some kind of highlight, but lets you switch to others.
Assistants in the layers panel sound cool, I’d need to deep dive a bit more into that idea tho.
S1 maybe like a v key for assistant where you would draw a line and it would try to read it as a single line or a curved line by simplifying it. A square could add a perspective plane. But maybe mostly line and bezier curve.
S2 maybe the same assistant key when a assistant is active is able to press and user makes a motion to a given vanishing point selecting that direction until you release it by tapping the same key again.
For scenario 2, I agree with @EyeOdin 's idea, that some kind of gesture towards the VP desired would be ideal. It could be thought of as a circle menu of sorts, where, once triggered, a “point” appears where the user’s cursor was, and the UI highlights the VP the user nearest to where the user is pointing to, relative to the centerpoint. The selection is made by releasing the hotkey, I think. Or pressing again, I think people have different preferences here.
It may not be strictly necessary to draw anything except the highlighted VPs on the screen, but showing the centerpoint used to calculate the direction for the user’s gesture would probably be helpful.
Being able to name the assistants would be quite helpful in cases where there are a lot of them.
A while back there was a cool little tool by Epic Games called “Carapace”, where you could load images and create perspective lines/VPs. (No longer developed as far as I know, didn’t see anything about it for at least 4 years now).
Just for inspirational purposes, here’s a video showing it. I post it because the tool is completely based on hotkeys. Maybe there’s something as a starting point, UI/UX wise. The tool’s source code was released, too if that is of any interest.
Probably not the answer you’re looking for, but I don’t think I’ve ever used the bezier curve or line assistant. I don’t think there’s any possible way to make it fast enough to ever be usable in a professional sense. Both the curve and line assistant are better handled by more easily accessible options such as
Creating lines is usually done in other programs by simply holding shift while dragging the pen. This creates a line between the start and stop, in a single button press with no switches of the tool.
Bezier curves are best learned through practice, but if I have a very long line that I need to be almost perfect, I will usually make a new layer (shortcut), draw the line as best I can in one swoop, transform (shortcut), click the ‘liquify’ transform, fix the line with the liquify tool, hit enter, then ‘merge with layer below’ (shortcut). This can be done faster than setting up any assistants.
That being said I wish I didn’t have to do that, my previous program stored brush strokes as vector lines I could tweak/smooth/liquify with shortcuts like ctrl or shift immediately after drawing them, then continue on drawing like nothing happened. Much like the line assistant, I don’t think there’s any way to make it worth it time-wise in a professional sense.
When you put the pen down and begin drawing along an assistant, the program should be in a superposition of which assistant/perspective direction you’re actually using. Right now it tries to guess which one you’re on in the first couple milliseconds of drawing, then it locks you into it. I always hated that. You have the entire line to figure out which way I’m going, Krita, wait a bit and see where I’m actually going and then render or re-render the line on that one instead dummy.
Some more quick ideas while you’re working on assistant that I can flesh out or post a new thread on if you’d like:
I agree entirely on the ‘assistants should have their own version of a layers panel’. This would allow much easier organization and control of each individual assistant.
Horizontal and Vertical mirror options should be removed from the top bar and made into a ‘mirror’ assistant, which can be placed down at any angle. They may be functionally different to an assistant code-wise, but artists view them the same way and expect to find them in the same place.
There should be some way to apply assistants to one layer only. (Perhaps ‘global’ vs ‘local’)
Control over each assistant should be unified as much as possible. The idea I had would be to have 1 control point be ‘transform’, where moving it moves the entire assistant. One point be ‘rotate and scale’, where moving it rotates and scales the entire assistant around the transform point, and the last one(s) would be the accessory control points, which controls things such as the curvature of an ellipse, etc.
Naming schemes should stay a bit more cohesive, for instance fish-eye should be renamed to 5-point perspective if 2-point perspective is going to stay the same
3 point perspective without making a bunch of separate vanishing points or a 2 point + vanishing point would be nice too.
4 point perspective would also be nice, with the ‘vertical’ axis following a dipole pattern
There should be some sort of assistant for 5 point perspective, without having to use 2 'fish-eye’s and a vanishing point.
An omnidirectional perspective assistant would also be nice for trickier scenes.
While I agree on many things, I’m not sure in removing the mirror buttons from the top bar and also on the topic of renaming very well known things like fish-eye. 95% of all people will speak of fish-eye perspective instead of 5-point perspective. If anything, I would make the names “complete” by adding the info of 5-p-p to it.
“Toggle Snap to Assistants” in the toolbar could be visible in the default interface since so you wouldn’t need to go into the brush tool options all the time. I know theres a shortcut (Cmd+Shift+L) but a symbol would be good for a noticable check while using it. Would just need a new icon, right now it only shows “Toggle Snap to Assistants”, takes up just too much space. With a highlight (like the mirror buttons for example, they have a blue background when activated in my theme of Krita).
I think we can already go a loooong way with simple tweaks without much code involved.
I agree, there’s also an important difference between 2-point, 3-point etc. perspective assistants and the fisheye perspective assistant - the former are rectilinear, while the fisheye assistant is curvilinear. It’s a much bigger difference than just adding another VP.
The only and only way to make things much much much faster, is
to provide the features and make it so that hotkeys can be assigned to them. Except that, no shortcut key will be assigned when Krita is started.
And it’s up to the user to pick which keys to assign to it.
create a whole “perspective drawing” mode which once activated, changes dynamically some parts of the UI and many shortcuts, and let you work faster in perspective or with all other the drawing assistant tools in this mode; in such case you can always switch back to the usual normal mode, to recover your shortcut setup when you’re not in “perspective drawing” mode.
This mode can have a different name if you judge it more appropriate…
Scenario 1: A ruler mode, if you enable this, you get a single assistant that all other tools will use. Think of it a drawer from which you pick a ruler/ or curve guide. It creates only one type. Just like Sketchbook’s ruler, ellipse and perspective tools. They can get a toolbar button each to enable/ disable them. If you activate one, any of the others is disabled.
If you want to create a more sophisticated setup, you use the assistant tool instead. So two tools, one for simplicity (easy to use activate and forget) and one for complexity (harder to set up, but a huge time saver in the long run).
Scenario 2: press a hotkey and Krita will remap the stroke to a different direction (this only works as long as the mouse button is pressed/ pen is on the tablet. Might be possible to do this for the last stroke as well, when the mouse button is no longer pressed/ the pen leaves the tablet. It’ll just toggle direction for the stroke on each hotkey press.
As a workaround for 1 (not a replacement): there could be a predictive stroke mode, which is a post-processed brush smoothing. This is usually done for vector brushes, but also works for pixel brushes as you can see here in the Sketchbook documentation: Steady and Predictive Stroke - Sketchbook.