Re: Feature idea: rotate brush while following a path
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
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
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
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
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