Krita 1.6 - Tablets and Drawing

Hey hey hey, it's time for some more Krita blogging! Let's just hope it doesn't get out of the planet too soon because of blogger messups, or because of lots of 'hey I'm on the plane to Dublin' posts :P
Good, so I'll write a bit about tablet support in Krita 1.6. Essentially, there are 2 things that are both new and noteworthy in this area. Let's start with the first one:

Pressure-changed brush opacity
A lot of people had asked about support for a good setting that allows them to let opacity be dictated by the pressure of their tablet. We already did this in a certain way, but a lot of actual artist-type people didn't like this. I couldn't do a lot about this, until, one day, somebody who knew what he wanted and actually had some coding experience (kig) came on our #koffice IRC channel. A lot of discussion and some hacking later, we arrived at what people actually wanted.
What was changed? If you paint indirectly (uncheck 'Paint direct' in the brush options tab), and check 'Pressure variation: Opacity' in the 'Brushes & Stuff' toolbar, the new alpha darken (this thanks to kig for the sample rgba8 implementation) paintop is being used (together with a redesign on how temporary drawing layers are handled in Krita; they now are a lot faster and don't actually create fake layers in the layer structure. This also fixed a slew of other bugs I never noticed before...). This means, that if you hold constant pressure (less than maximum), the stroke being drawn will clearly show this as a stroke that is being drawn not completely opaque. Before, Krita saturated the opacity to maximum even if you drew at something like 10% pressure. Of course, if you change pressure while drawing, you'll notice the opacity changing likewise in a correct manner. This is shown in the following picture:

The top line is where I slowly increased my pressure on the tablet while drawing. Below, you see some lines where I first drew a semi-constant line, and then drew over that with an area and a line of grey with some slightly varying opacity. You'll notice that overlapping strokes (obviously) increase the darkness. You can make sure that that doesn't happen, as I'll explain below.

Custom pressure curves
Another new feature for Krita 1.6 is the custom curves. By pressing the 'button up' on the Brushes & Stuff toolbar (when the Pixel Brush is activated), you'll activate a dialog that contains curves that will modify the pressure. Basically, the X (horizontal) axis depicts the input strength (left = no pressure, right = full pressure), while the Y (vertical) axis depicts the output strength (what exactly this is, depends on the curve you edit, for instance with opacity, down = 0% opacity, top = 100% opacity). There are lots of reasons why you'd want to use this, for example you might want to invert the 'Darken' behaviour: making the colour lighter the more pressure you give, instead of making it darker. Another reason might be that your tablet tends to give a very discrete, pixelated result when I apply high pressure (as does mine). Before we had this dialog, this meant that if I wanted to draw a line with changing opacity, where at a certain point I wanted 100% opacity, the line would get very ugly and bad. Now, I can say that I want 100% opacity when I have 75% pressure, so that I have a much smoother line. This also gives you the opportunity to make the changes made by difference in pressure much more subtle or brute, depending on what you like. The dialog looks as follows:

Using Alpha Darken to your advantage
As promised before, now I'll tell how you can use Alpha Darken to ensure double strokes on top of each other will give a better result (depending on the context, of course). The idea is that in normal circumstances, you want that if you draw 2 half-overlapping strokes at variable opacity, and use about the same pressure for each, that you don't actually see the area where they overlap. In the first picture, it was very clear where 2 strokes overlapped, even though their opacity levels might have been very close to each other. To fix this, you can create a new layer (it'll be transparent, this is good). Then, set the brush's composite operation to 'Alpha Darken', instead of 'Normal', make sure 'Paint Direct' is unchecked, and see that the opacity changes with pressure (you can do without, but then what would be the point of all this ;) ).
Then just draw strokes, and you'll see that overlapping strokes will look as you'd expect them to be:

Some words of warning: remember to use a single layer per color you want to paint in this way! If you use 2 different colors with alpha darken on the same layer, the result might look jagged. This is because of the way alpha darken works. Also note that if you'd draw on a layer filled with an opaque color, painting with alpha darken will have no effect. This is because the alpha darken composite op works as follows: if the current opacity (of the brush dab you're drawing) is higher than the old opacity (what is shown on the layer), it will replace the old color with the new color, otherwise it will not do anything. Meaning that if the opacity is already 100%, no color will ever be able to replace it anymore.


It's always nice to hear some news about Krita, thanks :)

By danakil at Sat, 09/23/2006 - 02:02