After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 119240 - Dynamic Brush stroke panel and/or Dynamic path stroke
Dynamic Brush stroke panel and/or Dynamic path stroke
Status: RESOLVED FIXED
Product: GIMP
Classification: Other
Component: Tools
git master
Other All
: Normal enhancement
: 2.8
Assigned To: Alexia Death
GIMP Bugs
Depends on:
Blocks: 127786
 
 
Reported: 2003-08-06 07:21 UTC by Valerie Van Kerckhove
Modified: 2010-03-07 13:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Photoshop 7 brush panel (28.88 KB, image/jpeg)
2003-08-08 17:17 UTC, Valerie Van Kerckhove
Details
The photoshop 7 dual-brush feature (35.29 KB, image/jpeg)
2003-08-08 17:18 UTC, Valerie Van Kerckhove
Details
Photoshop 7 brush shape dynamics (28.47 KB, image/jpeg)
2003-08-08 17:19 UTC, Valerie Van Kerckhove
Details
Photoshop 7 brush texture option (27.75 KB, image/jpeg)
2003-08-08 17:21 UTC, Valerie Van Kerckhove
Details
Not sure how to explain this... Photoshop 7 brushes again (28.98 KB, image/jpeg)
2003-08-08 17:22 UTC, Valerie Van Kerckhove
Details

Description Valerie Van Kerckhove 2003-08-06 07:21:16 UTC
Right now, control over the outcome of a brush stroke is rather limited: 
while the gradient brush is great for colors, control over other 
parameters is much more limited: for size for example, without the use of 
a graphics tablet, you can only set a brush to "fade"... 

In fact, this is limited even when using a graphics tablet: what if you 
want brush strokes that fade as they become bigger, instead of becoming 
more opaque? More on that later though.

In Photoshop, last time I checked, there is Size Fade, Opacity Fade and 
Color Fade. The Gradient Brush surpasses the Color Fade feature, I suggest 
we take it one step further with the other parameters as well.

What I'm suggesting is a "Dynamic Brush Stroke" panel. This panel would 
have several sub-sections accessible through tabs, and in which you can 
edit the following parameters: size, opacity, color and maybe orientation 
(yay!) through editable curves, which would look something like this:

1|
 |       ____
 |      /    \_____
 |_____/
 |
 |
0|__________________


Steps: [   ]         Continuous: [check box]
Presets: [drop-down menu]
Repeat: [drop-down menu]

.In the case of the Size feature, an extra input box will be added: 
maximum value, which sets the maximum size of the brush (1 being the 
normal size, 2 being its double, etc).

.In the case of Color, the gradient will be listed on the left side 
instead of the 0 and 1 values.

.In the case of Orientation, 0 will be replaced by -180 and 1 by 180 
degrees.

.The default will be of course a strait line, at the value 1 for Size and 
Opacity, and at the angle 0 for Orientation.

.Steps specifies the number of steps before the end of the curve is 
reached for that particular feature.

.Presets are preset behaviours, such as:
- Default will be the default strait line at 1 or other.
- Linear fade is a strait line from 1 to 0.
- Reverse linear fade is the opposite of the previous.
- Sinusoidal fade is a sinusoidal line from 1 to 0.
- etc.

.Continuous would force the end value of the curve and the start value to 
be the same. There can be discontinuities in between though. Maybe 
an "Advanced" brush editor panel could be implemented for the more complex 
curve editting.

.Repeat is like the repeat option already present for gradients and such, 
and specifies how the brush behaves after a cycle.

A final tab would show an "overall brush preview" screen: it takes the 
biggest value entered in Steps for all the parameters, and from there 
shows the combination of all the curves. 

An animated brush preview would also be nice.

Of course, if such a feature is too demanding in ressources, then 
a "Dynamic Path Stroke" feature could be implemented instead: you have 
roughly the same panel as described before, and you select a portion of a 
path to get stroked accordingly. This eliminates the need for real-time 
processing of the brush stroke, and allows you to easily make 
modifications to the parameters you've set.

As for graphics tablets, the same type of panel could be used as well: 
this way you can easily set your pen to make brush strokes become more 
opaque as they become smaller, or less opaque as they become bigger, etc. 
You just get rid of "steps", and have the bottom line represent the 
minimum to maximum pressure values instead.

It might also be interesting if the ordinary brush panels and the stylus 
panels can be used simultaneously: thus for each feature (size, opacity, 
color and orientation), you can choose if it follows the normal brush set 
(in which case it follows the curve defined for normal brushes) or the 
stylus settings (thus being dependent on the pressure). A quick example is 
a gradient brush independant of the pressure settings but which changes 
size with different pressure values.

The biggest problem I see with what I'm suggesting though 
is "overkill". :S Maybe a simpler option would be to get rid of the 
curves, and simply have presets, repeat types and number of steps 
instead...
Comment 1 Raphaël Quinet 2003-08-06 09:28:45 UTC
Lots of good ideas, thanks for the suggestions.  Now we will have to
sort this out and see what can be implemented in reasonable time.  ;-)
By the way, it would be nice if you could take some screenshots of how
the Photoshop dialogs are structured (of find some on the web) and
attach them to this bug report (use the link "Create a new attachment").
Most of the developers do not have access to Photoshop, Paint Shop Pro
and other proprietary software, so some screenshots could be useful.
Comment 2 Valerie Van Kerckhove 2003-08-08 17:17:27 UTC
Created attachment 19039 [details]
Photoshop 7 brush panel
Comment 3 Valerie Van Kerckhove 2003-08-08 17:18:30 UTC
Created attachment 19040 [details]
The photoshop 7 dual-brush feature
Comment 4 Valerie Van Kerckhove 2003-08-08 17:19:44 UTC
Created attachment 19041 [details]
Photoshop 7 brush shape dynamics
Comment 5 Valerie Van Kerckhove 2003-08-08 17:21:11 UTC
Created attachment 19042 [details]
Photoshop 7 brush texture option
Comment 6 Valerie Van Kerckhove 2003-08-08 17:22:40 UTC
Created attachment 19043 [details]
Not sure how to explain this... Photoshop 7 brushes again
Comment 7 Valerie Van Kerckhove 2003-08-08 17:26:57 UTC
Yikes! If there was a way to create multiple attachments in one go 
instead of making attachments seperatly, then I apologise for having 
attached them one by one... All screenshots are of the Photoshop 7 
brush panel.

The version of Photoshop I actually have access to is Photoshop 6. 
Photoshop 6 is Really limited when it comes to bush dynamics. 
Basically, when you select brush, there's a clickable icon to the 
right of the overhead bar that leads to the following drop-down menu:

-------------------------------
Brush Dynamics: 

   Size: [drop-down menu]  [   ] steps

Opacity: [drop-down menu]  [   ] steps

  Color: [drop-down menu]  [   ] steps
--------------------------------

All the drop-down menu have the same three options: 
------
Off
Fade 
Stylus
------

Off = nothing special.
Fade = from higher value to lower value, or from foreground color to 
background color for color.
Stylus = depends on pressure sensitivity received from the tablet.

Judging from a few screenshots I had seen though, Photoshop 7 seemed 
to be a Lot more advanced when it comes to brush editing. However, 
since I didn't have access to Photoshop 7, I did not know exactly to 
what extent. Since you suggested that I look it up though, I went to 
look for screenshots (easier than downloading the trial version 
that's over 150 megs :s ), and I must say, what I saw left me rather 
puzzled: it is Very different from Photoshop 6. 

You can see for yourself from the screenshots (lots of them, but 
you'll see why).

Among other features, here's the highlight of things that may be 
considered "new":
- now even the angle can be easily adjusted (before only size and 
opacity were easily adjusted. Kind of.)
- the "jitter" feature for nearly all features: it's there to 
introduce a certain randomness. Thus, you get randomness in size, 
angle, etc. That's how I understood it anyway.
- texture: you can use the brush as if painting in on textured paper.
- dual brush: two brushes will be used combined. I guess a brush pipe 
can be used to achieve similar results, but there's always the 
control issue.
- "orient to path" feature
- use of all the capabilities of a graphics tablet (including the 
wheel for the Intuos2 series)

Well initially I had thought up several tool box design possibilities 
regarding the idea I've had. However, after seeing all this, I think 
I'll try to rethink a few things first. Where do the developpers 
discuss how you implement features, anyway? I don't think I saw any 
extensive discussions of this type in the Gimp mailing lists listed 
in the Gimp website...(though I did find several very long threads 
regarding the 1.4 vs 2.0 debate :s )
Comment 8 Raphaël Quinet 2003-08-10 11:48:52 UTC
Thanks for the screenshots from Photoshop 7 and for the ASCII art from
Photoshop 6.

The gimp-developer mailing list is by far the best place to discuss
these issues.  Most of the time, the discussions are more technical
and do not drift into debates like for the version number of the next
release.  The traffic in the last month has also been much higher
than usual.  Another place where features are discussed is on IRC and
at the Gimp Developers Conference, which is just ending now.  To some
extent, Bugzilla is also used for discussing some features.

Since we are in a feature freeze now, it is unlikely that your
proposal could be implemented in the next few weeks.  However, feel
free to post a summary of your proposal on the gimp-developer mailing
list (including a link to this bug) if you want to get the ball
rolling.
Comment 9 Austin Donnelly 2003-08-12 16:52:50 UTC
Setting milestone to "future"; please change if someone wants to 
code this up before 2.0
Comment 10 Valerie Van Kerckhove 2005-03-08 16:04:45 UTC
Just out of curiosity: are there any short-term plans to at least include a
simple "size fade" for brush? The present "fade out" feature just isn't very
good when you want to work with more or less solid batches of colors, and when
you use large brushes you have to set the hardness to minimum (which is
something you don't necessarily want to do, especially if you don't want the
brush stroke to be "fuzzy") in order to simulate a brush size decrease. Right
now the only way to create a solid-color sharp edge is by using path stroke.
It's too cumbersome.
Comment 11 weskaggs 2006-06-16 16:17:54 UTC
Raising target from Future to 2.6 because at least a simple size-fade would be pretty straightforward to implement, and nice to have.
Comment 12 Martin Renold 2006-10-10 11:26:34 UTC
Concerning your "Dynamic Brush Stroke" panel, I think I have done roughly what you describe in MyPaint.

http://people.ee.ethz.ch/~mrenold/mypaint/
Comment 13 weskaggs 2006-10-11 19:26:10 UTC
Very nice!  It would be great to have a gimp painting tool with that much flexibility.
Comment 14 david gowers 2006-10-17 23:44:29 UTC
In that archive, see 'brushsettings.py' for a full list. It is quite comprehensive, inc. stuff like hue/saturation/brightness variation.
One notable gap is tilt -- I think that should be allowed to influence input (for example, color application; tilt based color variance could simulate having different colors on different sides of your brush. (most obviously, FG and BG))

Does mypaint handle event timestamps better than gimp? I know there is a bug filed about accurate event timestamps which relates to ink tool behaviour (and will relate to other tools if time becomes involved in how brushes are drawn) -- addressing that could be a step towards this.

That sounds like another thing that should be mentioned here -- A nice 'prototype' might be a pressure curve for the ink tool, influencing jitter/spatial offsetting, since that is the only parameter that applies in the case of the ink tool.

I think such a pressure curve widget might be wise to provide a quick way of curve adjustment -- so the end and start points can be adjusted without needing to pop up a separate window (I imagine this would speed up the majority of changes)
Something like a mini-curve with a button beside it that pops up a full curve editor.

Comment 15 Martin Renold 2006-10-19 18:37:02 UTC
[event timestamps] MyPaint does first order lowpass filtering to calculate things like the current speed, and everything with the word "slow" in the description. I'll explain the formula if someone wants to know. I can't find that ink bug report you refer to right now, but IIRC a more complex approach was taken there.
Comment 16 Alexia Death 2008-05-23 16:50:52 UTC
Isn't this bug almost covered by the new dynamics in SVN?
Comment 17 david gowers 2008-05-24 09:10:06 UTC
Mostly. Missing points:
 * curves (of course)
 * distance input variable
 * setting hardness for non-VBR brushes (as in eg. pressure->hardness dynamics toggle)
 * brush rotation (== angle) output variable
 * direction input variable

Other things we might want to consider making available in some form later (mainly taken from http://svn.gna.org/viewcvs/mypaint/trunk/brushsettings.py?rev=29&view=auto)

* switching 'size' output between linear and logarithmic
* jitter output variable (offsetting the position that a brush dab is drawn at relative to the interpolated position)
* color jitter output variable (possibly 3x, one each for H S L)
* XYZ random output variable , where XYZ could be eg. size, hardness -- this is so that increasing input pressure could increase output jitter or output size randomization
* some way of influencing weighting when more than one input is influencing an output.
Comment 18 Martin Nordholts 2008-05-29 17:08:26 UTC
We might make some more progress on this before 2.6, but not a complete fulfillment. Perhaps for 2.8 though? Setting 2.8 milestone.
Comment 19 Alexia Death 2009-01-22 13:00:00 UTC
Assigning this bug to myself for now. Cant promise much for 2.8 but there will be something.
Comment 20 Martin Nordholts 2010-01-23 09:32:01 UTC
With the current estimates we won't have time to do this for 2.8, moving to 2.10.
Comment 21 Alexia Death 2010-01-23 09:59:05 UTC
The only part of this currently not implemented is the curves. Since the previously used silder system for mixing ratios is removed, its a regression, if we move it to 2.10. Im putting it back to 2.8 for now. If there really is no time, the silder system needs to restored and then this bug bumped, but Id say its not much of an effort win over doing the curves and it would break the dynamics file compatibility.
Comment 22 Alexia Death 2010-03-07 13:37:16 UTC
Fixed in master. Now dynamics have working curves.