UI models for drawing.
drawing works on tablet computers. I'm not happy with the dichotomy
between image painting programs (like Photoshop) and vector drawing
programs (like Illustrator). Neither type is a good fit for pen-based
sketching. To begin with, you've got to have vectors in order to edit
pen strokes. Photoshop has paths, but they're hard to edit. Illustrator
has this incredibly annoying habit of wanting to bend and join up paths
whenever they come near each other, which makes its pencil tool pretty
much useless — the details of your strokes are often lost, and the set
of path objects you end up editing bears no relationship to the strokes
you actually drew.
Then there's the problem of inking. Why on earth do most programs make this ridiculous assumption that filled regions are defined by a single curve?
Try drawing something you want to fill in, like a house or a stop sign
or an animal. Do you draw the entire cat in a single
stroke? Hello? Was anybody thinking when they designed these programs?
Okay, so Flash doesn't make that assumption. In Flash you can make several
strokes surrounding a region and then dump the paint bucket in the
middle of the region. But Flash has so many other inconsistencies
that make drawing difficult. For example, suppose you draw two
separate filled shapes. Just moving one shape on top of the other
will erase what's underneath; move it away and you've taken a bite out
of the other shape. If the two shapes are the same colour,
they'll automatically merge into one big shape, making it impossible to
separate them or recover the original shapes. But if they are
different colours, they won't merge. Whenever your strokes
intersect, they cut each other up, so you end up with lots of tiny
pieces. You can move the control points individually, but if they
get stuck to each other (at an intersection) they're impossible to
unstick, and if you open a hole, the fill disappears. In short,
my problem with Flash is that simple actions cause unexpected loss of
information: your pen strokes are lost and your shapes are lost.
Here's the idea that popped into my head a few minutes ago. What
if there are no fill objects, only stroke objects — and then
fills are defined entirely in terms of strokes? So:
- Every time you put down the pen, move the pen, and lift then pen,
you create exactly one stroke. The program strives to preserve
this stroke in its original form as a single object unless you
explicitly cut it up or join it to another stroke. - Filling is a property of a group of strokes. For example, a
fill might be defined internally as "the region enclosed by the left
side of stroke 3, the right side of stroke 7, and the left side of
stroke 8," where left and right are defined the way you would see it if
you were an ant walking along the stroke in the same direction it was
drawn. (You wouldn't have to specify a fill this way; the program
could figure out such a specification based on where you dump the paint
bucket.)
- The strokes around a fill do not have to form a completely closed
region; the fill closes itself off by interpolating the missing parts
of the boundary. (You could set an option to say how you want the
boundary to be closed off, say with a straight line or a smooth curve
or a sharp corner, just like the option for round, bevel, or mitre
joins on hard corners of paths in Illustrator.) - You could define all sorts of other cool fill styles, too —
like fuzzy fills that go a little outside the boundaries, or a fill that looked
like it was drawn in crayon, or a fill that looked like a patch of grass
growing in the region. - Then you could move around and adjust strokes without ever losing your stroke shapes or your fills. You could move, scale, rotate, smooth, or apply other effects to individual strokes or groups of strokes.
- You could create filled regions with no outline by making the
strokes invisible, but you would still be able to see and edit
invisible strokes in the editor.
- The strokes and fills would be arranged from front to back
in the drawing layer, just as with Illustrator objects, and you
could rearrange them to control what appears on top.
Has anyone heard of or seen or a drawing program that thinks like this?
If you draw, do you think a program like this would work for you?
I wonder how metamouse turns his sketches into
vector drawings. Hours of tediously adjusting Bézier control
points? Or is there a better way?