Reply to topic

How to get the smooth&creamy brush strokes like photoshop

User avatar andreasresch
Registered Member
Posts
20
Karma
1
OS
Hey.

Thanks for the tip. Although it might work, it blocks the "Masked Brush" feature and prevents people from using it for something more effective or creative. This issue defintely should be analyzed as it's a core funtionality for painting. This together with the inability to create individual brush collections because of the faulty tag system prevents me (and maybe many other users) from using Krita for their daily work. I've been following the updates of Krita for a long time now, but they still seem to be active bugs.

Cheerio.
ramskulls
Registered Member
Posts
130
Karma
2
williambrown wrote:I hope somebody finds this useful


This is amazing. I'm gonna go try this out! Great find!
williambrown
Registered Member
Posts
3
Karma
0
So I'm gonna roll back what I said about a layer+mask being the best way to implement the blending properly. It should be possible to do it reasonably with a single composition operation, and I'm pretty sure I know where the problem is.

I've also got another example of odd behavior with Krita's flow: with a constant dynamic opacity, the darkest strokes happen with flow of 50%. Higher and lower values both give lighter strokes

Image
paprika
Registered Member
Posts
4
Karma
0
how about Mypaint's brush tweak capabilities
I'm not much of an artist but I seem to achieve something similar in mypaint just from playing around.
there some experimental stuff in this prerelease: https://community.mypaint.org/t/mypaint ... eased/1573
Steven
Registered Member
Posts
26
Karma
0
Well I mean no disrespect to the devs (I think a lot of stuff are more intuitive and well thought in Krita than in Photoshop, which is really awesome especially for a free software), but when more than 6 months ago I took a lot of time to make tests on the trial version of Photoshop (that I downloaded just for that, in order to voluntarily help them figure out what the main issue with the Flow setting in Krita was) and finally understood the Math behind it and took a few hours to write a long message explaining it all as clearly as I could (I'm French and not an English native speaker, so I did my best) the answer I got was "well if you get it then make a patch yourself" instead of a true attempt at understanding my demonstration and implementing it in Krita later... This is disappointing, frustrating, and honestly it seemed kind of disrespectful regarding all the work I did to help on my free time and all the users waiting for this issue to be fixed as well.
I get that there are a lot of stuff to fix and improve here and there, but flow is a core feature in a painting program such as Krita so I think it should be a priority to fix it, and most importantly it would not be a big change in the code that would take days and days of work, but just multiplying 2 variables you most likely already have for the code to work...

Steven wrote:Hello,

As we talked in another topic, I also think the way Krita manage the flow setting is "wrong", because when you change it you get messy result at low opacity instead of smoother ones (the way dabs are blending with each other, and above all the way the opacity build up quickly to black).

After a few tests, I figured the settings for the same type of result are :
(with pen pressure deactivated)

Photoshop -> x% Opacity and y% Flow
Krita -> x% Opacity and (x% * y%) Flow

Example :
Photoshop : 50 % opacity and 40% Flow
Krita : 50% opacity and (50% x 40% = 20% Flow)

=> That means in Photoshop the Flow setting already takes Opacity setting into account, while in Krita it is completely separated...
Krita seems illogical to me about this, because a dab can never be darker than the max opacity anyway, so right now for example with 20% opacity it doesn't matter whether you put 80% flow or 50%...)
Do you see what I'm getting at ? In other programs Flow isn't the "absolute Opacity of each dab" as you thought, but the opacity for each dab in comparison with current opacity ! In other words, it's a PERCENTAGE OF CURRENT Opacity, and not a "pure" percentage of opacity.

=> To get better control over Flow and "smooth and creamy brush strokes" in Krita, the Flow setting should be automatically multiplied by current opacity at all times.
Now it is mathematically logical and I'm 100% that it is the solution we've been looking for !
It would be a big improvement for those of us who like to work a lot with Flow setting but can't really do that in Krita right now... I really hope devs will take this post into account, because it's currently an issue for a lot of us and by solving it I really think Krita would without question become the best painting program out there !



I'll try my best to explain it again :

What it currently is :

Dab opacity = current dynamic flow (except when flow = 1, which is kind of a mystery to me)

What it should be :

dab opacity = current dynamic flow * current dynamic opacity

(note that here, current dynamic flow = the current flow value depending on pen setting like pressure if activated and current dynamic opacity = the current opacity value depending on pen setting like pressure if activated)

That's it, just a simple multiplication to do every time a dab should be drawn to get a coherent result... ^^


So yeah I don't know how its coded and can't patch it but it should look like something like this :

function DrawDab (CursorX, CursorY, ShapeWidth, ShapeHeight, ShapeAngle, ShapeColor) {
var CurrentOpacity = OpacitySetting * PenPressureOpacity; //if pen pressure is activated
var CurrentFlow = FlowSetting * PenPressureFlow; //if pen pressure is activated
var DabOpacity = CurrentOpacity * CurrentFlow;

draw shape centered at coordinates (CursorX, CursorY) with Height = ShapeHeight, Width = Shapewidth, Color = ShapeColor and Opacity = DabOpacity;
shape. rotate(ShapeAngle)
}

I know it's more complicated because you have to take care of dynamic color settings, shape dispersion, and other parameters depending on the brush settings... but it's irrelevant here because my point is that only the DabOpacity variable (or whatever it's called in the real code) needs to be changed !
User avatar boudewijn
KDE Developer
Posts
4368
Karma
19
OS
Did you miss https://krita.org/en/item/new-test-buil ... g-loading/ ? I haven't read your whole post, because I need to fix the Windows build first, but I thought the flow stuff was now all done.
Steven
Registered Member
Posts
26
Karma
0
Hello !

I indeed missed that, my bad ! I will test it and post any issue here :-) Thanks a lot !
Steven
Registered Member
Posts
26
Karma
0
boudewijn wrote:Did you miss https://krita.org/en/item/new-test-buil ... g-loading/ ? I haven't read your whole post, because I need to fix the Windows build first, but I thought the flow stuff was now all done.


Yeeess !!! :-D This is awesome ! It works perfectly for me :-D I can't wait for Krita 4.2 ! Thank you ! On another note, if I remember well the team was also working on a different management for brushes presets because of issues with tags, etc... How is it going ?

Thank you so much for making this patch @williambrown ! I'm glad I could help a little with the math :-)
User avatar boudewijn
KDE Developer
Posts
4368
Karma
19
OS
I'm working on that still, but it's a lot of work, and I've had some downtime because of physical issues. Still am not as productive as I would like to be, but there's progress.
Steven
Registered Member
Posts
26
Karma
0
Ok thank you for the update ! Good luck with that and thanks again, I hope you will get better soon !
williambrown
Registered Member
Posts
3
Karma
0
oops, I guess forgot to post back on this thread when the changes got pulled in.

Yeah, the Photoshop comparisons from Steven and andreasresch were very helpful for me, so thanks to you guys

I also hope you feel better boudewijn

 
Reply to topic

Bookmarks



Who is online

Registered users: Arran, BadBunny, Baidu [Spider], Bing [Bot], bogdan_c, Deevad, dikasetyaprayogi, gfielding, Google [Bot], joninchaurbe, kde-jriddell, niccolove, Sogou [Bot], TheraHedwig, toplisek, tymond, Yahoo [Bot]