mypaint / libmypaint

libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
http://mypaint.org
Other
310 stars 86 forks source link

GIMP 2.9.5 MyPaint-Brushes weird effect #91

Closed SenlinOS closed 7 years ago

SenlinOS commented 7 years ago

Lubuntu 16.04, GIMP 2.9.5 PPA (Just updated) 2017-06-20, The latest version of libmypaint-master is installed, but questions remain.

Such as: MyPaint Brushes deevad-v6 (The brush parameter is the default) spray2: A spacing stroke appeared in the splash effect. watercolor expressive: Using this brush will cause GIMP to Feign death. Some MyPaint Brushes: There will be a big of spacing or no flow.

If there is the problem with GIMP, please close this report.

manuq commented 7 years ago

There were indeed breaking changes. I'm fine having changes breaking the tests to add new features, but in this case it seems many brushes have to be updated or made from scratch again to be usable.

captura de pantalla de 2017-06-20 10-25-53

Here I'm comparing MyPaint master on the left with MyPaint stable on the right. Trying to do the same strokes with the same shape and pressure in both sides.

briend commented 7 years ago

Well, I broke this. Any brushes that rely heavily on Speed need to be tweaked slightly to get back the original look. I can work on updating the brushes, there shouldn't be a whole lot that rely so heavily on speed, but obviously these ones are quite a bit different now. For instance with Classic Ink Blot, if you reduced the Offset By Speed from .13 to .04 it seems to bring it back to normal. Sorry about this...

On the bright side, you should notice that Speed behavior is consistent across zoom levels and brush radiuses. Previously changing either of these would directly affect the speed, so the effect of Speed would either diminish or explode, causing major brush consistency issues. It just seems no one really noticed this issue before :-/.

manuq commented 7 years ago

@briend thanks for your work, is really great. I will see if I can come with a script to automate the change to all brushes.

briend commented 7 years ago

Thanks @manuq :). I don't think it's so simple though. Previously, if a brush was "designed" at 50% zoom (like many devaad brushes), those Speed settings didn't work "as designed" if the next person was using 100% zoom (they would be tempered a bit). Same thing with the default brush diameter, effectively. So I think we're going to just have to compare and tweak manually, and even then for the comparison we need to decide if comparing at 100% zoom or 50% zoom for deevad. Sadly, if we do 50% zoom for devaad and capture the personality he intended, it could still seem broken for people that were used to the brushes at 100% zoom.

SenlinOS commented 7 years ago

In other words, all the brushes need to be re-adjusted to use?

briend commented 7 years ago

@SenlinOS Well, not all. I only counted about 8 brushes that even use offset_by_speed, which seems to be the more dramatic change in behavior. However, there are indeed 73 brushes that use either speed_1 or speed_2 as inputs to at least one setting. I am hoping that only a small percentage of those are actually noticeably different.

briend commented 7 years ago

@manuq maybe there is a formula, actually. If we just set our standard for 100% zoom and ignore the "as-designed issue". We should be able to take any speed setting and divide it by the default brush radius (radius_logarithmic) for that brush. In the Classic Ink Blot example, the default brush radius is 2.5. So, 0.13/2.5 is .052 which is pretty close to my suggestion of 0.04. That's easy for base value of offset_by_speed, but to fix the curve points I think we have to drag the slider to adjust the magnitude of the entire set of points. Let me know if your script works, otherwise I can manually fix them.

manuq commented 7 years ago

@briend for offset_by_speed I get better results if I divide the current value by radius_logarithmic * 2.5 . Better testcases are "Experimental speed blot" or "small blot". For finer adjustment I think is important to narrow the UI range (currently goes from -3 to 3). All my tests are at 100% zoom.

Indeed the brushes that have speed1 or speed2 as inputs are a problem. I played with "Classic modelling" but I wasn't able to find a formula to fix it. I know many artists use this brush.

briend commented 7 years ago

@manuq @SenlinOS can you try this branch: https://github.com/mypaint/libmypaint/tree/zoomfix I fixed an obvious problem with offset_by_speed, and I moved the zoom correction to a different place which seems to work better. All the brushes above seem to be ok now, except for modeling. However by tweaking the fine speed to .45 and the gross speed to .75 it seems to be pretty darn close: old on the left, new on the right. On the right, modeling is the only one that was tweaked screenshot from 2017-06-20 21-36-27

briend commented 7 years ago

and... just realized "stroke" is affected by speed. not my day :/

briend commented 7 years ago

Ok norm_dist (which stroke uses) now uses the old logic that includes base_radius. That seems to make sense, I suppose-- distance should include the size of the dab,-- bigger dabs, more distance. Whereas speed shouldn't care how big a dab is-- a tiny dab can move the same speed as a bigger dab. Maybe they are really wheels rolling along the canvas? That's why they have to be round! Now spaced blot looks better, and leaves looks identical. Stroke should be 100% identical for all brushes. screenshot from 2017-06-20 22-20-22

SenlinOS commented 7 years ago

@briend GIMP2.9.5, libmypaint/tree/zoomfix: In addition to the "splash" class brushes effect can be, the other brushes effect is not good, large spacing or no flow. Maybe it works better in MyPaint, but it doesn't work well in GIMP!

briend commented 7 years ago

@SenlinOS are you sure you pulled the latest change I made to the stroke, there should be two commits on that branch above. Can you include a screenshot too?

SenlinOS commented 7 years ago

Gqt

briend commented 7 years ago

Oh wow, that's really broken. I don't think GIMP has it working yet, see this post: https://github.com/mypaint/libmypaint/issues/92 You probably want to use this version of libmypaint, for now: https://github.com/mypaint/libmypaint/releases/tag/v1.3.0 Sorry for the trouble!

SenlinOS commented 7 years ago

This effect is in PPA (more people will use PPA installation, so the problem is very troublesome! ) Gqt

manuq commented 7 years ago

@briend excellent! This branch is very close to the previous situation. I've made two videos. In the smudging tools, some like Classic/blending knife are softer than before, but overall I think we are good.

video 1 video 2

If someone wants to test this branch easily, it can be installed from here:

flatpak remote-add --no-gpg-verify --user mypaint-master-repo http://flatpak-repo.manuq.com.ar
flatpak --user install mypaint-master-repo org.mypaint.MyPaint-Testing
flatpak run org.mypaint.MyPaint-Testing
briend commented 7 years ago

@manuq Thank you for testing!

briend commented 7 years ago

Ok the zoomfix has been merged into master. I will create a new issue on the MyPaint side for the tweaks to a few brushes to get them back to "normal". Thanks for everyone's patience!!