[Gimp-developer] Edge-sensitive painting?



An idea about brush/tool painting that's been on my head for awhile is an "edge-sensitive" painting option.

Say for example that I am digitally coloring an inked linework (black lines, white background).  There are many ways to go about this:  I can use Multiply blending, perform a Color-to-Alpha transition and make it a separate layer, or so on -- but when it comes down to the actual painting process, one thing I have to keep in mind is "bleeding" -- the art of consciously keeping my brush within the lines I'm trying to color, because if I get too close to a line then the tool will paint right through it.  Which is rather duh, but it may create a need to clean up the "spills" later on, depending on what workflow I'm using.

(Yes, there is a way around that too, but I'll get to that later.)

So the idea here is an option so that when GIMP applies a painting operation, it essentially calculates a flood-fill / fuzzy-select (using a sensitivity threshold like existing tools e.g. fuzzy select already have) around the specified brush coordinates that is strictly bounded to the current brush's size/mask. The result is the area that will actually be affected by the brush (other restrictions like a selection mask can still be included).  So in my example, as long as I keep my cursor located on the same side of a given line, the painting will "stop" when it hits the line and won't spill across onto the opposite side, and as a result I'd be able to paint broad areas a lot quicker and more conveniently than in the current form.

The main way this differs from using a normal fuzzy select or flood fill to detect edges is the treatment of unbounded regions.  As a demonstration, create a new image (white BG) and with the Circle 03 brush, paint a wavy line through part of the image that doesn't touch the image edges.  Next, just try to select an area that only affects one side of the line and doesn't cross.  A fuzzy-select will grab everything on both sides of the line, because the white pixels it's operating on are an unbounded region across the entire image layer.  (At this point the solution is to turn on the QuickMask and use painting tools, like the flood-fill, to separate each region -- it does work and with relatively little effort, but is not entirely straightforward.)

On the other hand, an edge-sensitive option would easily be able to determine one side of the line from another and paint accordingly because it isn't giving a fuzzy check across the entire image area, only the immediate vicinity around the current brush coordinates.  For example, you could start painting with the Circle 19 brush and the painting would only affect the region on one side of the line at a time, as long as you keep your brush on the side in question.  (Of course, when you get close to the end of that line, where even the local whitespace is unbounded, then it would start 'bleeding' through onto both sides of the line.  But it would happen around that spot only.)

What do you guys think?

-- Stratadrake
strata_ranger hotmail com
--------------------
Numbers may not lie, but neither do they tell the whole truth.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]