Introducing myself, and a few ideas on brushes.
This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.
This is a read-only list on gimpusers.com so this discussion thread is read-only, too.
Introducing myself, and a few ideas on brushes. | Damien de Lemeny-Makedone | 21 Dec 19:38 |
Introducing myself, and a few ideas on brushes. | Alexia Death | 21 Dec 20:31 |
Introducing myself, and a few ideas on brushes. | Cédric Gémy | 22 Dec 17:12 |
Introducing myself, and a few ideas on brushes.
Hi people.
Let me introduce myself : my name is Damien, aka Kaoron. I am a french comp.
student
specialized in operations research, also a digital painter and a free
software lover.
I use GIMP to draw, and I'm very interested in contributing to the code.
I can speak C a bit, but never actually programmed anything real in this
lanuage and have no experience with glib...
As gimp is one of my favorite tools, I'd really like to learn its internals,
improve my skills and maybe someday make some valuable contributions.
So, I gently request some orientation inside the source code. I pulled git gimp, compiled it, and got intimidated by the amount of source files around.
Besides, I have a few ideas to improve the current brush system.
I - Separate brush tip and stroke
IMHO, the current brush system is unintuitive. There are duplicated features (size), bizarrely located ones (spacing), missing ones (why does hardness have dynamics and no slider ?). Features inside a same dialog doesn't seem logically organized.
As an improvement, I'd like to see a brush system built around brush tips and brush strokes.
I.1 - Tip (+ feature : hardness treshold)
The tip is a raster image (.gbr), layered image (.gih), or a parametric
shape,
greyscale or colored. It represents the unitary blob which will be used to
draw
with brush tools.
*Every* brush tip is subject to the following non-destructive parameters :
- size
- angle
- aspect ratio
- hardness
- hardness treshold (option) : pixels with alpha/grey above treshold
are considered opaque, others transparent.
With all of these, one can get a preview of the brush he's going to use. Parametric shape's spikes can be handled as a special case (I assume hierarchical relations between UI widgets are not a pain to deal with).
At the moment, only parametric shapes can be modified through the brush
editor.
This leads to a weird duplicata in tool options, but it doesn't have a brush
preview.
I.2 - Stroke (+ feature : connect jitter)
The stroke is a set of parameters which will determine how the selected tip
will be painted on the canvas, using a brush tool.
It is subject to the following parameters :
Blending :
- opacity
- option color gradient
- option increment
Behavior :
+ Spacing
+ Jitter
|- Connect (optionnal) : Jitter scatters blobs around, but breaks the line.
With connect, blobs will be connected by a straight line with given
sub-spacing
creating a noisy stroke.
(as a non native english speaker, this seems to fit better to "jitter",
which
denotes nervosity rather than randomness)
Brush tip image + Brush tip options + Stroke presets => Brush tool (simple) Why simple ? 'cause I have another feature proposal.
II - Stacking brushes
Sometimes, you'd like to use several brushes on the same stroke.
For example, drawing the empty outline of a line, or a splattered line.
This can always be done using paths, filters and all the power of gimp, but
it's
not that handy, it's not brushes. Sometimes you just want to wave your hand
and
it's done, or do a rapid try and fail with Ctrl-Z armed and ready to use.
I usually want to do such things. So I thought that several brush strokes could be blended given a stack of brushes with their own presets.
I'd like to have your opinion :
Are these valuable ideas ?
Are they hard to implement wrt gimp internals ?
Where to hack ?
Thank you for reading. :)
Regards, Damien.
Introducing myself, and a few ideas on brushes.
On Monday 21 December 2009 20:38:40 Damien de Lemeny-Makedone wrote:
I use GIMP to draw, and I'm very interested in contributing to the code. I can speak C a bit, but never actually programmed anything real in this lanuage and have no experience with glib...
no worries, its learnable.
So, I gently request some orientation inside the source code. I pulled git gimp, compiled it, and got intimidated by the amount of source files around.
Core code is in app/ subfolder. In it you will find paint core, brush core, dynamics and paint options. And a lot of stuff that are derivates of the above, all other brush class tools.
Besides, I have a few ideas to improve the current brush system.
I - Separate brush tip and stroke
IMHO, the current brush system is unintuitive. There are duplicated features (size), bizarrely located ones (spacing), missing ones (why does hardness have dynamics and no slider ?). Features inside a same dialog doesn't seem logically organized.
Hardness... as is is a bizarre misfeature. it needs to be implemented right.
As an improvement, I'd like to see a brush system built around brush tips and brush strokes.
Brush tips yes. But strokes? There is a plan to make it more convenient to share and use tool options+dynamics+brush tip setups as complete brushes.
I.1 - Tip (+ feature : hardness treshold)
This leads to a weird duplicata in tool options, but it doesn't have a brush preview.
This mess needs to be cleaned up but its not decided yet what is the best way.
I.2 - Stroke (+ feature : connect jitter) The stroke is a set of parameters which will determine how the selected tip will be painted on the canvas, using a brush tool. It is subject to the following parameters : Blending :
- opacity
- option color gradient
- option increment
Behavior :
+ Spacing
+ Jitter|- Connect (optionnal) : Jitter scatters blobs around, but breaks the line.
With connect, blobs will be connected by a straight line with given sub-spacing
creating a noisy stroke.
(as a non native english speaker, this seems to fit better to "jitter", which
denotes nervosity rather than randomness)
Connected jitter do not feel very useful. Can you give me a case for this? The case for current jitter is use of brushes to create a dynamic effect like grass. grass never grows in straight line.
II - Stacking brushes
Sometimes, you'd like to use several brushes on the same stroke. For example, drawing the empty outline of a line, or a splattered line. This can always be done using paths, filters and all the power of gimp, but it's
not that handy, it's not brushes. Sometimes you just want to wave your hand and
it's done, or do a rapid try and fail with Ctrl-Z armed and ready to use.I usually want to do such things. So I thought that several brush strokes could be blended given a stack of brushes with their own presets.
This is a lot of work UI wise to support. you would need to take it up with guiguru. It probably blends together with current plans to make tool presets more usable and perhaps introducing a special brush tool that has slots for stacking those presets and saving that as yet another preset, this time for the stack brush tool. I would like to see it implemented tho.
Please join us in GimpNet irc #gimp channel if you are serious about helping us out.
-- Alexia
Introducing myself, and a few ideas on brushes.
Lo
I - Separate brush tip and stroke
IMHO, the current brush system is unintuitive. There are duplicated features (size), bizarrely located ones (spacing),
missing ones (why does hardness have dynamics and no slider ?). Features inside a same dialog doesn't seem logically organized.As an improvement, I'd like to see a brush system built around brush tips and brush strokes.y.
I.1 - Tip (+ feature : hardness treshold)
I would also mentionned
1. the ability to get some angle in the dynamics would be cool
2. and each dynamic option should be able to be set in intensity
separately
but i don't know how difficult it would be :)
personnaly, i'm not a dev but a graphic designer and i've done a report
on Scribus UI. I mentioned that i could save nearly 3 human-time weeks
of work with little UI improvement (icon here or there, windows some
ways...), and i'm ready to work on it but i would need efficient and
proximate help for the first tries.
May be that being 2 people beginning at the same time would help :)
pygmee