Re: Feature idea: rotate brush while following a path

2000-06-16 Thread Jarda Benkovsky

Adrian Likins wrote:
 Or the opacity changes as you paint, or the brush rotates with
 pen pressure, or the spinning brush gets its color from a gradient based
 on pen tilt, or ... ;- Generilizing all this stuff will offer a ton
 of flexibily, and storing "patches" of it will make users happy.

another nifty and relatively easy feature would be to have different
start and end pixmaps (of course rotating too). It would allow for
arrows and such things. 

Jarda Benkovsky



Re: Feature idea: rotate brush while following a path

2000-05-30 Thread David Hodson

Tom Rathborne wrote:

 On Mon, May 29, 2000 at 02:28:33PM +0200, Raphael Quinet wrote:
  [...] rotate a brush automatically according to the local
  tangent of the path that the brush is following. [...]

 [...] What other transformations could be added? How about: blur,
 colour rotation, scaling...

I wrote a short piece on implementing this sort of thing a while ago.
Wrote the code and it seemed to work OK; but I was having trouble
deciding on the best way to incorporate it into the existing GUI, and
I thought that 1.2 was closer than it has turned out to be, so I left
it for later. The writeup is at:

  http://www.ozemail.com.au/~hodsond/gimpbrush.html

for those who might be interested.

-- 
David Hodson  --  [EMAIL PROTECTED]  --  this night wounds time



Feature idea: rotate brush while following a path

2000-05-29 Thread Raphael Quinet

Well, it looks like I will not be able to attend the GIMP Developers
Conference at the end of this week (too bad - I really wanted to be
there), so here is an idea that could be discussed: there could be an
option to rotate a brush automatically according to the local tangent
of the path that the brush is following.  To make it even nicer, the
user should be able to specify what is "local": how many pixels should
be taken into account for calculating the angle.

This would be very useful with pixmap brushes/hoses/whatever you call
them: if your brush is an arrow and you select Edit-Stroke on a
circle, then the arrows would follow the circle without having to
specify multiple cells with different angles in the brush itself (of
course it should still be possible to use the existing "orientation"
parameter in the brushes that have it).  Another example would be an
animated brush containing several frames of a person walking, and you
want to draw this along a curved path.  I actually tried to create a
brush like that, including 15 frames in 8 possible orientations, but 8
is not precise enough and the 120 cells already take more than 1 Mb.
Being able to rotate the brush dynamically would be a way to trade CPU
cycles for memory (besides the fact that it would provide more precise
rotations than 45 degrees steps).

Another crazy thing that I tried to do (when I saw some people asking
if there was a way to draw text along a path) was to create a script
that would let you enter a text string, then dynamically generate a
brush that would contain all the letters as individual cells.  Then
you could draw freely with this brush and see the letters appearing
along the path.  Unfortunately, it does not really work because all
letters are facing straight up (unless I include several versions of
the letters in the brush, but that takes way too much memory).  Being
able to rotate the brush dynamically would solve the problem.  This
would be an ugly hack for putting text on a path, but that could help
some users until the text tool is re-written.

-Raphael

P.S.: If I have the time, I will also write down some of my ideas about
  how "active layers" could work.  The user would be able to
  associate some PDB calls with a layer so that it would be possible
  to have a "shadow effect" layer that is updated when the "object"
  layer is modified.  Or a "blur" layer that blurs the layers below.




Re: Feature idea: rotate brush while following a path

2000-05-29 Thread Tom Rathborne

Raphael:

On Mon, May 29, 2000 at 02:28:33PM +0200, Raphael Quinet wrote:
 Well, it looks like I will not be able to attend the GIMP Developers
 Conference at the end of this week (too bad - I really wanted to be
 there), so here is an idea that could be discussed: there could be
 an option to rotate a brush automatically according to the local
 tangent of the path that the brush is following.  To make it even
 nicer, the user should be able to specify what is "local": how many
 pixels should be taken into account for calculating the angle.

I was thinking about this yesterday! I think brush spacing is also
important in this case - you would want to be able to stroke with,
say, a rainbow line, and have both edges of the stroke come out
perfectly smoothly, as if you had stroked with a couple dozen parallel
single-pixel brushes.

Brush pressure/alpha/transparency is also important. When you're
stroking a circle, you don't always want the inside of the circle to
be more opaque just because the brushstrokes are somehow "denser"
there. You _do_ want this if you're trying to imitate natural media,
though.

If I recall correctly, DeluxePaint IV on the Amiga (or DeluxePaint
Animation on the PC) and an animbrush auto-gen facility which let you
turn your static brush into an animated brush by rotating it and
storing all the frames. Maybe I did that by hand - I don't remember
now. Anyways, this would end up being a _lot_ of data to have in your
image hose so I agree that rotating the brush automagically to match
the local tangent is a good idea.

[example of walking person snipped]

If you're stroking a circle clockwise and your animated person will be
walking around the outside, then stroking the circle counterclockwise
would make your person walk on the _inside_ of the circle ... so there
should be built-in facilities to mirror/flip the active brush as well.

I think that most basic image transformations should be applicable to
an XCF that is intended to be used as an image hose. For example, if
you have a 15-layer image of a person walking, there should be a
one-step script to make it N times as tall, rotating N steps through
360 degress. That would cut out a lot of tedious rotation.

What other transformations could be added? How about: blur, colour
rotation, scaling...

Oooh, here's an interesting question: what happens when you're using
the smear tool with a brush which gets smaller the faster you go?  Is
the smeared data shrunk along with the brush? That could look really
really cool.

Of course all these transformations should be available on-the-fly,
and it would be nice to be able to load an image hose and then just
"add" another dimension to it - a dynamic version of the image hose
save dialog.

Just my 2/100 of a Euro.

Tom

-- 
--   Tom Rathborne [EMAIL PROTECTED] http://www.aceldama.com/~tomr/
--  "We promise according to our hopes, and perform according to our fears."
-- -- Francois, Duc de la Rochefoucauld 



Re: Feature idea: rotate brush while following a path

2000-05-29 Thread Adrian Likins

On Mon, May 29, 2000 at 09:03:11AM -0400, Tom Rathborne wrote:
 Raphael:
 
 On Mon, May 29, 2000 at 02:28:33PM +0200, Raphael Quinet wrote:
  Well, it looks like I will not be able to attend the GIMP Developers
  Conference at the end of this week (too bad - I really wanted to be
  there), so here is an idea that could be discussed: there could be
  an option to rotate a brush automatically according to the local
  tangent of the path that the brush is following.  To make it even
  nicer, the user should be able to specify what is "local": how many
  pixels should be taken into account for calculating the angle.
 
 
 If I recall correctly, DeluxePaint IV on the Amiga (or DeluxePaint
 Animation on the PC) and an animbrush auto-gen facility which let you
 turn your static brush into an animated brush by rotating it and
 storing all the frames. Maybe I did that by hand - I don't remember
 now. Anyways, this would end up being a _lot_ of data to have in your
 image hose so I agree that rotating the brush automagically to match
 the local tangent is a good idea.
 
I think this is something I would like to see as well. The simplest
approach would be increase the "angular" resolution of Pipes, and then just
generate a pipe by rotating the brush shape. The primary reason I would
like to see this, is to make it possible to create a "gimpressionist" style
painting tool. The plugin currenty works by taking a single brush shape,
rotating it X number of times, and then painting to the image with whatever
rotated brush fits closest to any edges it finds in the image. No reason
we cant do that with a painting tool ;-

I think the ideal solution is pretty much a 2.0 thing, and that
is generalizing all the paint tools and storing "patches" that represent
various tools. Tools like DeepPaint seem to get a lot of distance out
of this, and we could do it as well.

 What other transformations could be added? How about: blur, colour
 rotation, scaling...
 
 Oooh, here's an interesting question: what happens when you're using
 the smear tool with a brush which gets smaller the faster you go?  Is
 the smeared data shrunk along with the brush? That could look really
 really cool.

Or the opacity changes as you paint, or the brush rotates with
pen pressure, or the spinning brush gets its color from a gradient based
on pen tilt, or ... ;- Generilizing all this stuff will offer a ton
of flexibily, and storing "patches" of it will make users happy.
 
 Of course all these transformations should be available on-the-fly,
 and it would be nice to be able to load an image hose and then just
 "add" another dimension to it - a dynamic version of the image hose
 save dialog.
 

To some small degree, we can already do this, at least with
respect to tablet pressure. You can load an Image pipe which changes
based on brush direction and speed, and then alter its opacity or size
based on tablet pressure. Granted, not as flexible as we'd like, but
its kind of cool anyway, and demonstrates its doable.

Adrian