SourceForge.net LogoLinuxFund.org Logo
Home Press Mailing List Documentation Screenshots People SourceForge Downloads

Film Gimp Brushes

The brush architecture converts each stroke into a sequence of dabs. By the way, Raph Levian's Wet Dream, a water color paint system with interesting brush ideas (not Film Gimp).

What Brushes Should Be Included - Jan 21, 2003

David Nagel made a very nice set of charcoal brushes, which are now being included in Film Gimp. Some old brushes need to be removed from the distribution. David says, of the brushes currently in distribution, very few of them even work -- so many are unnecessary. The ones that work have .vbr extensions. The ones with .gbr extensions that work are indicated with a naming convention like xxxf16.gbr. In other word, they're 16-bit float ("f16") Gimp Brush Files (".gbr"). All the rest are 8-bit carryovers from The GIMP and don't work at all in Film Gimp.

David says, if you were wondering which of the brushes that I designed should be included/excluded in future releases, I'd say you can cut out any of the brushes larger than 200 pixels, as they just add to the download time. The 40 brushes ranging from 10 x 10 to 200 x 200 take up only about 500 KB total in compressed form. If people want the larger brushes, they can download them separately. But hey, I made those brushes for people to use as they see fit, so include/exclude whatever you want. I'm going to keep coming out with more and more, and I don't imagine you'd want that much data in the standard installation.

Sean Ridenour's Procedural Brushes Proposal - Jan 24, 2003

Maybe there could be a sort of "painting language" plug-in. Nothing complicated, just something a bit more flexible than just the basic add,
subtract, etc. operations.

Something like:
myBrush {
OutputR = InputR + (ColorR * TabletPressure);
OutputG = InputG + (ColorG * TabletPressure);
OutputB = InputB + (ColorB * TabletPressure);
};

And the system could automatically substitute some user-defined value for TabletPressure when the mouse is used instead of the tablet, etc.

This would have the advantage of the artists being able to write their own brush operations without having to know the internals of the Film Gimp code or having to recompile Film Gimp if they added or changed any of the operations.

Robin's note: This reminds me of Filter Factory. Maybe we could adapt that concept to apply to procedural brushes?

David Nagel's Brush Dynamics Mock-up - Jan 19, 2003

Here's a screen shot of a concept for Brush selection with brush dynamics. Some of the stuff (like "Lighting") probably falls into the category of "wish list" items, but you get the idea. I suppose each of the major sections would be collapsible to save screen real estate for people with smaller monitors. Notes on this interface follow at the end of this message.

Notes:

1. Blending modes: As per the current "Mode" option, with a random option. User can also select blending color options, which would allow the brush to paint only on a selected color. (Good for rotoscoping.)

2. Advance Dynamics: Fairly self-explanatory. It allows the user to define random or tablet-controlled variations on a standard brush, such as color jitter, rotation of the brush image, scattering of the brush and noise.

3. Brush Options: Basically the same as in the current version, but with expanded options for further control.

4. Lighting would be a feature that would allow a brush to be lit as if it had height. The Luminance values of the brush image could be used as a bump map. Here's an example from one paint program.

5. "New Brush" is the same as the current feature.

6. "Save" saves the current dynamics options with the current brush selection.

7. "Save As" creates a new brush file with the currently selected brush and dynamics options.

Sam Richards' Brush Bug Example - Dec 2, 2002

Smoothness of the brush has problems, especially when they are semi-transparent. Try taking the paint-brush, setting the transparency to 50% and painting a line. You will see the sampling of each brush (basically its stamped down). This is a gaussian soft brush stroke zoomed up, with the bottom one a clone of the top one, but with some levels applied to it to emphasise the problem. This is actually with gimp-1.2. Sean Ridenour says, open the Brush Selection dialog. Change the part that says "Spacing" to whatever you want. This should make the problem go away. Sam says, not, although it does reduce it. It should be possible to have a brush where the brush size and hardness is truely user definable in a much more flexable way than the current gimp approach. Maybe one approach is to attempt to get a plugin working that can simulate brushes. That way we can easily have procedurally defined brushes simulating things like oil or charcoal, etc.

Karl Rasche's Brush Bug Example - Dec 2, 2002

A round brush can look pretty bad. This image shows a bunch of clicking with a 50% opaque round brush (the 'spider veins' at top center are from a 'gaussian' brush'...). The edges look nasty. This was with 1.2.3, zoomed 300%.

Robin Rowe's Scraper Brush Proposal - Dec 5, 2002

This design would make brushes scrape instead of dab.

One approach to brush design would be to note the current motion vector, calculate the right-angle line (cross-section) through the center of the (round) brush where the vector crosses (like a 'T'). Let's call that the mid-line. That line segment is solid in the middle and transparent at the endpoints. Drag (smudge) the mid-line crossways along the motion vector. Treat the mid-line as a 1D scraper. That would make a 2D brush calculation very fast, smooth, and simple -- as though the brush was 1D.

Because a 2D brush isn't really 1D, the mid-line approach may need a corrective step after the scrape. For the corrective, stamp the front and back edges of the 1D scrape (with half circles) to correct for the (round) shape of the brush. It may be the corrective need only be applied to the
endpoints, not all the points in between. Make the brush act as a 1D scraper except for the back of the first point and front of the last point. In other words, create a snake from a 1D scrape with a 2D head and tail.

A checkmark in a brushes dialog could optionally turn off the corrective, enable artists to use 2D brushes as pure 1D scrapers. That would make brushes soft on the sides of the motion, but crisp on the front and trailing edges. Artists may appreciate that control.

Procedural brushes (plug-ins) are a good idea, too. There should be a generic procedural brush plug-in that has all the plumbing already coded, and is just waiting for the brush procedure itself. Make it easy for procedural brush coders to create plug-ins.


Questions to rower@movieeditor.com
Created January 27, 2003; updated January 27, 2003