Yet another brush interface proposal

Valerie valerie_vk at yahoo.com
Tue Mar 25 03:04:23 CET 2008


> Er... why? I still think the "brush" and "paint" should be separated... 
> so, all the color jitters and color fades would apply to some sorts of 
> "paint", regardless of the brush, and all the size/position/etc jitters 
> would apply to some types of "brush", regardless of the paint.

Oh I have nothing against your idea. I just have no idea what you're
talking about. :P As long as all the options are concentrated in the 
same place, I'm fine with what you're doing underneath (BUT, 
they need to be in the same place, else the user won't understand
what's going on any more than they understand why the hell Gimp
has "opacity" and "brush editing" in completely different panels.
Please, spare us the internal architecture mumbo jumbo).

> Btw, I'll also vote for "drawers" over "folders"... a folder is 
> something I would put artworks in, but not brushes or paints :-).

Oh thanks! :D

> > As for the the double-edge stroke, it is actually my most-wanted
> > feature from a graphics program, and the reason I first took interest
> > in Inkscape (it was near impossible in Gimp), then in Krita. 
> > 
> > http://img80.imageshack.us/img80/4430/doubleedgenf2.png
> 
> The basic problem with this is that it's a stroke that cannot be done in
> real-time, because you can't calculate any given part of the stroke 
> until the entire stroke is completed. (At best you can hope it's fast 
> enough to have a dynamically-updating preview.) Not to say that it 
> shouldn't be done, just that this is a fairly significant caveat in 
> terms of how it could be implemented.

Which is why the tool forces you to switch to bezier mode. :)
Calculating the length of a bezier path is a lot easier than dealing
with real-time stroke. The tool then take the length of the bezier as
parameter for brush variations and uses the path as guide. That said,
if someone somewhere gets some crazy algorithm that gets 
around the problem one day in the distant future, that's another
matter. The closest I can think of though of drawing "free-hand"
double-edge curves is having a vector tool like Inkscape's pencil
tool, and it only shows you the path drawn until you're done, then the 
shape gets mapped onto the curve. So instead of click-click-enter
the procedure would be click-draw-release. That said, I'm fine with
Bezier.

> I use boxes for pencils :-). And I've got an old powerdrill box
> that I made layers and compartments in for my oils. Brushes go into
> peanut butter jar, inks into the drawer of my great-grandfather's
> desk, etc. But then, I don't really have a work place for working
> with real media.

Behold! The "peanut-butter jar" concept! (now observe the user's
utter confusion). It'd make a good joke though. Maybe on day, for
April's fool, the Krita coders can make a joke announcement on
renaming the tools and options. :P

> That said, I think the concept of a drawer is really appropriate here.
> Putting paints into a folder merely destroys the artwork in that folder.

Thanks! The mock-up wasn't very clear, that's my fault, but I think 
the users can get used to the concept.

> Like in Project Dogwaffle's Optipustics? 

That's cool. Though... that interface looks rather intimidating, heh.

> Well I have something against "stealing" badly written ugly difficult to
> maintain code from other foss projects.

Ah, understood.

> > > http://img80.imageshack.us/img80/4430/doubleedgenf2.png
> 
> And I wonder if it's not something best done with a vector shape rather
> than in bitmap.

Yes and no. There are several aspects to this question:

1. Should a Vector program be used to do this (ie Inkscape)?
- Inkscape still hasn't implemented stroke effects of the sort, so in
Inkscape, you either use the calligraphy tool, or you have to make a
whole shape each time (and some of us Really don't want to do that
for hair strokes and such)
- the calligraphy tool does work well, but you need a tablet to get
the right effect, or you're constantly switching between calligraphy
and tweak tools. And for long/complex paths, the tweak tool is still
rather slow.
- those mountains of paths feel... awkward to deal with, at least for
me. You can't just take an eraser and erase part of it, you have to
select the path (among many others) and hope tweaking gets the job
done.
- finally, after tracing, one usually wants to color the resulting
lineart. Having to switch between programs just to adjust the lineart
then is awkward.

Basically, I've tried tracing in Inkscape, and I Am happy that at least
it works. But it's not as quick as the "two-click + enter" solution
that I'm proposing. That and, I want to maintain the ability to edit
the lines when I've started coloring on a separate layer. There are
pros and cons to both vector and raster solutions.

2. Should it be done with a vector or a raster tool in Krita?

Again, I actually think both could be used:
- the vector solution is fine, but depends on how quickly the rest
of you can code shaped paths into Krita.
- but a raster/brush solution is also helpful: you may not be
wanting to do a simple line, but say... dots. Or tomatoes.
You get the idea? Gimp's "stroke to path" option basically has an 
entry for brush.
- also, people may want to use the raster dynamic options: position
jitter, size jitters (making the resulting stroke look as though it
was done with a tablet), color dynamics.
- that said, this Could be a dedicated tracing tool aside from the
generic brush, with presets (such as double-fade) that take
specific values, and that you can only use in Bezier mode. In this
case, the normal brush loses the "map length to path" option, and
this tool gains it instead (along with the option to do fixed distances
like the brush tool, and the option to take on brushes as parameters,
with its whole set of jitters and fade possibilities. Actually, the
vector and brush versions could be separated).

I'll make a mock-up.

> Wow... that looks incredibly cool... but no, that's something I'd put in
> the stroke-generating layer in my hypothetical hierarchy, not the color 
> layer. So if Krita had that, you could drag a natural brush with ink 
> along all of those sub-paths. (Even better would be combining that with 
> a path tool, for later-editable stuff, although that's starting to 
> really blur the line between raster and vector graphics...)
> 
> My hierarchy is:
> 
> raw input -> stroke tool -> paint tool -> color filter -> paint operator
> 
> (I realized something... "hairy", which is the paint tool may need to 
> generate multiple masks; basically for the above to work, really each 
> bristle should produce its own mask.)

(again, I don't get it because I know nothing about painting
algorithmics :P )

This sounds like the node-based approach though that the rest of
you were discussing a while back, so each stroke is basically
generated from position nodes that can be edited no matter how
far along you've been. Is that it? What's the interface though?
(because if I start drawing, I kind of really don't want to 
think of the blob of paints on my canvas as vectors :P It can be
that architecture-wise, of course, but the interface should make
sense to an artist)

That said, maybe I should start studying again the advanced path
stroke options we had also started discussing back then. Currently,
my basic proposal is:
- space (or something else): stroke path
- enter (or something else): convert to selection

My advanced proposal would be to have a vector component or vector
layer "attached" to raster layers, much like layer masks. You can
turn them off or leave them visible. Objects on that layer are
objects that you can drag around. By pressing "space", you can leave
raster footprints on the attached raster layer, basically like those
kid stamps, except that since those are vector objects, you can modify
then in any way you need before proceeding to the next "stamp." Enter
makes a selection out of it instead.

I'm still not sure what this would be useful for though, though
some people out there may find a fun use for it. I'm in no hurry
to see this get done really, since I'd rather stuff this option
into a separate "workspace" to avoid confusing users.

(really, workspaces will vary in complexity. The simplest could have
nothing but a paper texture and a few basic brush tools for people
to have a quick sketch)


      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs


More information about the kimageshop mailing list