Re: RFC: unified system of "PaintObjects" (long)

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

 



On 09 Feb 2001 11:32:16 +0100, Jens Lautenbacher wrote:
> 
> Hi all,
> 
> This mail comes from some discussions I had with Sven around the time
> just before 1.2.0, the recent discussion about textures and natural
> painting and a chat on IRC yesterday with Sven.
 
[ SNIP ]

> As David already pointed out, it doesn't make sense to only provide
> for the possibility for a pipe to select from a fixed set of
> pregenerated pixmaps. this is nice for the current limited pipe, but
> when using a general pipe as a provider for textures/patterns/brushes
> one wants to have the possibility to match certain or all dimensions
> of the data space to a function.
> 
> Here the question naturally arises: what kind of functions should be
> possible? Only transformations? Only some set of functions that are
> predefined in the core? Or could there be some possibility to handle
> user provided functions? How would these (if possible) be specified in
> a fileformat? or just LUTs that are used by functionality that is
> special to the object (e.g. for textures, there needs to be some
> special functionality on how to map the input state (mainly pressure I
> assume) to the final buffer returned. Here a LUT or a simply scalar
> function seems to be the way to go.
> 
> For performance reasons, all ProviderObjects should automatically have
> a LRU Cache (or some tuned variant of it) to store already computed
> values. This of course can be handled in a base class for them, so
> implementing another provider doesn't need the programmer to cope with
> this anymore.

[ WARNING: This mail contains some scary ideas ]

This would be neat, I bet some pretty fancy natural effects could be
done with this stuff too. I also tend to think that we dont yet know
what to demand from the thing before we can play with it. Even the
current brushpipe stuff was good enough so that it could do some really
amazing things with the multidimensional stuff (have, for example, some
brush strokes that take the direction from the pen direction, and choose
a different stroke shape depending on the pressure, for example. Or
wood-carving brush, you could have a shaded bevel-thing that scales
according to pressure and stuff. 

Another thing is I really wouldnt want to *lock* the parameters to the
brush file. It would be nice if the options dialog had a checkbox to
"[x] use default values" but unchecking that would make it possible to
remap the XInput modifiers to different things. It would also be good if
one could  then save this new resulted brush in a new file.


> Another thing that should be really well thought about is how far this
> abstraction is presented to the user. Having all of the paintobjects
> fulfill a generic interface w.r.t the paintcore it makes it possible
> to e.g. use a texture as a brush and vice versa. I would still
> strongly argue against presenting such a possibility to the user. From
> his/her point of view, a brush is NOT a pattern, nor a texture. 
> 
> I'd think that a user wishing to use a brush as a pattern can always
> load the brushfile in the gimp, and save it as a pattern (remember
> that we talk about general pipes here already: laoding a brush and
> saving it as a pattern will result in a pattern that changes according
> to the input state in the same way as the original brush does.)

So would this mean one could have something like multilayer XCF files as
patterns, that "dig in" the layerstack if one uses more pressure? This
would be pretty awesome. The "Tommer" example comes to mind first: Have
something like this:

    Layer 1: skin pattern
    Layer 2: some red goo
    Layer 3: some tissue layers
    Layer 4: guts and stuff
    Layer 5: rib bones or something

Yes. This is a gross example, but it demonstrates the idea pretty well.
So then you can draw "wounds" to a image, and depending on your pen
pressure you get different stuff. Maybe I am on crack with this, who
knows. But it doesnt sound like too impossible. Then the brush shape
could be used as a transparency mask when composing the strokes
together. Think of the brush as a layered "box" of soil, that has
different stuff on different depths. Then the brush stroke can be tought
as a shovel digging into this "box". I dont know if I made myself clear
with this though :o(

Ok, maybe it was gross example, but we could do something else like this
too. Ever did the crayon trick as a kid, when you first painted a paper
full of different bright colors and then took the black grayon and
painted a black layer on top of everything. Then you took a sharp stick
and used it to draw shapes on it, so the black layer was scraped off and
you saw the bright colors underneath. Something like this would be
another good example of what this could achieve. And less gross too :o)

Also oil painting, maybe some 3D effects even? We dont even need any
real calculation, but have a multilayer image with layer 1 having
totally flat, thin, nearly transparent paint, then gradually going
towards a very bumpy, textured and rough surface. Depending on the pen
pressure, pick stuff from appropriate layer again. It could give pretty
interesting results.

Again, I understand I cant even imagine _what_ one could finally do with
this stuff, so it is best to leave some freedom there.

Thanks for hacking on this stuff anyways, folks! And sorry if I went overboard.. :)

Tuomas



[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux