GNOME Bugzilla – Bug 163049
gimp should allow "jitter" when painting with the paint tools.
Last modified: 2005-10-25 16:42:23 UTC
Some of the other paint applications allow adding a random "jitter" to brush strokes to help create more "human" results. http://adrian.gimp.org/patches/gimp-jitter-paint/ has a patch to allow this. There are a couple things that could be tweaked yet. Rather or not to jitter before or after stroke interpolatin (Painter seems to do latter, so thats what the patch does currently). You could also allow the "jitter" in X/Y to be adjusted independtly. Or possibly even in the direction or normal to a stroke. But the patch above seems to behave basically the same way Painter does.
Interesting. A lot of people asked for a way to remove jitter from their strokes. Adding jitter is a concept that's new to me.
Check out any of the current generation proprietary paint apps that digital artists are using. They all support adding jitter. Theres a small distinction between the type of jitter folks complain about, and the type Painter allows you to add. Namely, the current stoke jitter problems in GIMP seem to be before stroke interpolation, causing what should be smooth strokes to have irregularities. The painter style jitter randomly displaces the paint "dab" from where the stroke computation would of put it. So the "stroke" is still smooth (in theory... current gimp has issues with this) but the actual placement of the compositing of the brush is randomized. To confuse matters slightly, the terminology to describe this feature others apps use isn't very consistent. Painter uses the term "jitter" to do what the above patch does. (aka, add randomize perturbations to the location of the brush dab). However, PS7 tends to use "jitter" in a more generic sense. They use it to descibe any sort of paramaters that has random modulation. So in PS7, you have "size jitter", "color jitter", "opacity jitter". Painter supports these same options, they just use it as a "random" expression input.
I'd like to suggest a small change to the UI for this feature. Please consider using a scale entry and I also don't see a need for a boolean toggle. It should be sufficient to set the jitter amount to 0 in order to disable it. That would remove the need for a frame to hold the slider.
I can imagine that you want to be able to quickly switch between jittered and non-jittered painting, so the toogle can be useful.
Created attachment 50153 [details] [review] patch to add "jitter" to paint tools attaching the current patch, just for kicks. nothings changed really. If I get to it, I'll play with the ui and see what I like better
I've applied the patch and played around with it a bit -- and I definitely like this feature, especially for the airbrush. There are issues with the ui, but it already seems usable, so I would favor applying the patch and then working within cvs to improve it.
I second this - have this in my local tree, too, and I like it. Didn't notice any ill effects yet. As for improvements, setting the value should be similiar to setting the opacity, using a scale.
It can be applied after the coding style issues have been fixed, in particular but not limited to the use of // for comments.
Okay, I have committed the patch, with the coding style fixed (I hope). I also changed the default jitter level from 0.0 to 0.2, since with the toggle switch, 0.0 is completely useless. 2005-10-03 Bill Skaggs <weskaggs@primate.ucdavis.edu> * gimp/app/paint/gimpbrushcore.c * gimp/app/paint/gimpbrushcore.h * gimp/app/paint/gimpclone.c * gimp/app/paint/gimppaintbrush.c * gimp/app/paint/gimppaintoptions.c * gimp/app/paint/gimppaintoptions.h * gimp/app/tools/gimppaintoptions-gui.c: Apply patch from Adrian Likins to add "jitter" to paint tools (bug #163049), with small fixes for coding style and default jitter set to 0.2 instead of 0.0.
It's a little odd that this works with some paint tools but not others. Compare pencil/paintbrush/airbrush/clone to dodgeburn/eraser/smudge/convolve. IMO it should apply to all brush-based paint tools, even the ones where it has a somewhat odd effect (smudge), because that's more intuitive. The effect with clone is rather interesting, though. It seems particularly strange that it doesn't work for eraser; I thought eraser worked very similarly to paintbrush except it effected the alpha channel.
I did some cleanups/fixes to this in my local tree. Will commit later today.
Hey..this is cool! Mich, I hope you had noted that it can't be turned off as of the commit in #9 (neither set back to zero).
Enabled jitter for all brush tools and set core->jitter always, so it can be switched off again. 2005-10-04 Michael Natterer <mitch@gimp.org> * app/paint/gimpbrushcore.c (gimp_brush_core_start): set core->jitter here for all brush-based paint tools. (gimp_brush_core_interpolate): cleanup. * app/paint/gimpbrushcore.h: removed trailing whitespace. * app/paint/gimpclone.c (gimp_clone_motion) * app/paint/gimppaintbrush.c (_gimp_paintbrush_motion): removed jitter stuff here.
Anything left to do here or can this bug be closed as FIXED?
I still think that this control should have a scale entry, like opacity.
Okay, I changed it to a scale entry: 2005-10-25 Bill Skaggs <weskaggs@primate.ucdavis.edu> * app/tools/gimppaintoptions-gui.c (jitter_options_gui): Use a scale entry instead of spinbutton for jitter amount, as discussed in bug #163049. I made the range of the scale 0 - 2, because that seems like the region that people will most commonly want to work in. The range of the spinbutton is 0 - 50. These values can easily be changed if they don't seem appropriate to people. Calling this fixed on the basis of comments, then. But feel free to add more comments if changes seem desirable.