Whither Krita?

Moritz Moeller realritz at virtualritz.com
Fri Sep 25 00:46:30 CEST 2009


On 09/25/2009 07:00 AM, Sven Langkamp wrote:
> I think the "from scratch" was targeted at you reyes proposal.

REYES rendering can be used to render procedural brushes. This would be 
part of the brush engine. From scratch? Depends on you definition of 
that term.
There are 4 OSS REYES implementations I'm aware of. Lots of code to look 
at and steal from. Plus, since it is only 2D what one needs, lots of 
simplifications to the aforementioned code. :)

> It's always the question how much you want expose the node system to the
> user. Some users might be overwhelmed by it.

Totally. But you can easily have a Beginner Mode with a layer stack that 
works like Photoshop or the like. This is essentially just a single 
chain of nodes w/o branches.
If you allow layer groups, you get nesting. AfterEffects allows netsted 
compositions. You can even view them as a node graph (at least you 
could, in the past). But you can't edit them. Adobe had an internal 
version that allowed editing the node tree a few years back, essentially 
making AfterEffects a full-blown node-based editor.
However, product managament was too scared this would alienante the 
current user base and there were othe reasosn too, why it ultimately 
never shipped (performance certainly one of them, AfterEffects is dead 
slow compared to something like Nuke).

What I'm getting at is: in Beginner Mode you have a layer stack. At any 
time, you can view this as a node tree to better undertand how the wto 
relate to each other.
This node view is read only, in Beginner Mode.
In Normal Mode, the node tree becomes editable. Once edited, the edits, 
if they can't be reflected in the stack metaphor, require Normal Mode to 
be tweaked.
All parts of the node tree that were created in Beginner Mode and not 
affected by the edits are still shown in the Layer palette.
This is btw more or less straight from the white paper I wrote for 
Eclipse 4.0 (the image editing app, not the IDE), in 1998.

There are many ways to hide complexity from a user w/o sacrifcing power

> Editing draw strokes might be nice if you do it like MyPaint only for
> the last stroke. It gets more complicated to use if you want to modify
> single path points, just try to modify a calligraphy stroke in Karbon.

I'm not sure what complication you talk about? The brush editing I 
propose has got nothig to do with the lame (sorry) way Karbon or any 
other vector app I ver used (Corel, Illustrator, Inkscape) handle these 
strokes, after initial creation.

The Eclipse 4 whitepaper contained a wole bunch of ideas on editing 
natural media strokes that were far beyon point edting. In fact, while a 
needed feature, point edting is probably the one method artists using 
natural media would want to use least. And that is probably what you 
were getting at.

If you have stroke whose thickness you are happy with, you can redraw 
just a part of it. Drag-Select the part of the stroke you want to edit 
(along the length), put down your stylus, redraw.

There are bunch of options how this can be mapped back to the stroke.
One way would be to just connect the stroke drawn with the bits that 
weren't selected.
Another way is to have a guide marker run along the stroke at a constant 
pace and the user just provides feedback for the paramter they want to 
edit, on the tablet (e.g. position, pressure, angle, tilt, etc.)
Yet another way would be to map the length of the edited bit to the 
distance the stylus moved on the tablet by a factor. If the stylus is 
not at the same position at the end, the part of the original stroke 
that comes after just gets moved to fit.
Yet another way would be to just warp the stroke into the selected bit 
(the unselcted bits of the stroke stay absolutely put). This is 
admittedly hard to provide visual feedback for, while drawing.

There were 4 or 5 other methods. What they all had in common was that 
the artist used the stylus continuously to do the editing and by that I 
mean he did not use the stylus to select and move individual points of 
the spline definiting the pricinpal direction.

One thing to keep in mind is that positoon, width and angle are just the 
very basic parameters of a stroke.
But a procedural brush possibly has dozens of others.
Allowing these to be edited, in a natural way, using the stlyus 
continuiosuly, is a core interface metahphor a good procedural brush 
system has to employ, imho.

But this is talking about the UI already, I was, so far just talking 
about implementation. :)

> Saving the path would get a possible maintainance problem as future
> paintops have to work in the same way to keep the image looking the
> same. If you send someone a picture he needs all the paintops you used
> to create your image, so you would have to included the whole image as
> fallback.

That problem exists with text layers too. You need the fonts to render 
them correctly. That is why Text layers are saved as bitmaps too, in PSD 
files. And such dependencies and version mismatches for file format 
features are the reasons why a PSD file always contains a flattened 
image of the whole composition.
Essentially, anything that depends on a plug-in componnent which can not 
be assumed available on a system opening the image must be stored in a 
flattened way.
As with text, I'd actually store the outlines of the letters used, or 
even the whole font, if the font allowed embedding (this is alegal 
problem, not a technical one).
Similarly, for procedural brushes, one could store as much 
parametrically, as possible to re-create the brush at the intended 
rendering res for the image (say, 300ppi) if the paintop wasn't available.
And certainly, this should be an option, so one can save files of much 
smaller size if all dependecies can be assumed to be present, when 
opening the image again.

.mm



More information about the kimageshop mailing list