This article is a personal research document done around the 'textured brushes feature' in digital painting.
This article start with an update on my investigations , addressed to Krita development .
Then you can read the original article published on 11 december 2011.
Update :This update add informations to the chapter 'How I guess it works'.
I obviously didn't studied it enough, or missed informations on the first publishing. I hope this update will correct it.
The update is based on what Krita is able now , on Git master 2.7pre-alpha, and I hope it will help the leader of the Krita project and chairman of the Krita foundation Boudewijn Rempt ( aka boud on IRC , #krita channel , freenode ) to polish the feature he started just right after the publishing of the first version of this article ( thanks again about it ).
Note : the 'textured brushes feature' is available since 2.5 and still sleep because -I guess- the result is not what user expect.
Note 2 : Link to the same bug-report page : https://bugs.kde.org/show_bug.cgi?id=313831
The 'textured brushes feature' in Krita since 2.5
( Pixel brush Engine > Pattern )
One of the rare speed-painting tested with tweaking the feature in Krita 2.5
All feeling of 'dynamics' here are simulated by moving the parameters manually
A better test fileI worked on having a better test file this time ( attached to the bug-report ) than my previous poor binary black and white 'checker'.
It helped me to figure-out how the actual parameters works on Git master 2.7pre-alpha. The 'Texture-tester.png' pattern in the tar.gz contain blured dots , from 0 to 100% value.
I also drew a 3D representation under to understand later the 'Cutoff' parameter in a visual way.
Finding the right setting to attribute a pressure dynamics
The target is to give to the user the feeling of having a tool who affect the grain of a texture. For reference , I did test "to the root" and took a photo of 3 traditional art tools and the way they react to a paper texture here.
So , doing high pressure on the stylus should give the feeling to crush all the texture and deposit a lot of 'pigment' on the canvas ( and so affect all the brighter value on our test-texture ) .
In opposite , the lower pressure should only affect the peaks ( dots in black our test-texture ) to give the user the feeling to only touch delicately the texture, and deposit 'pigment' only on the micro summits of it.
Fortunately , the feature exist at 90% I would say in actual Krita . Thanks to my better texture to test , I could find the best parameters to mimic this process.
- the mode is "Mask Out"
- check-box "inverted" is checked
- moving manually the little 'black' pyramid slider from right to left to select the value range to affect.
If this value/data could be linked to a pressure dynamic, I presume the 'textured stroke' feature would work.
Article previously published
The following article was posted on the 11 december 2011.
As a picture worth thousands words, this article is mainly done around visual exemple done this way :
- Pattern sample : a little zone to display the pattern selected as a texture
- Brush mask sample : the brush selected ( brushes belong to the brush kit GPS 1.5 )
- Test stroke : 2 areas to see how the texture behaves on various backgrounds
- Painting test area : A speed painting example to show the rendering quality potential of this brushes
A paper like texture pattern combined with this sort of brush can obtain a very expressive effect. The strokes get more life and tell more about the energy of the painter. We are also used to decrypt this sort of rendering with centuries of traditionnal painting imagery. On low pressure some hair rubs the canvas to reveal his texture , while on high pressure , the mix brush engine create a more consistent color, near to an impasto.
A pastel preset would use a continuous fiber-pressed paper like paper Ingres simulated by this kind of pattern, and a squary brush mask to simulate the foot print of a pastel block. Mix brush engine is inactivated to have a more dry technic result. If I would activate it, I would obtain a sort of crayon/oiled chalk/oiled pastel effect.
Reptilian sort of skin
Reptilian sort of skin ( negative )
Speedpainters can takes a lot advantage to have efficient patterns : most shading part of the artworks can benefit in less than a minute to a big amount of details with only few brush strokes. Leather, trunks, scales, roof, bricks etc...etc... can be simulated this way. For this example above, I show also the same texture can produce another effect with itself negative.
Cracks on a surfaces
Most textures shouldn't be left 'as this' on the canvas, and need further little painting details to make them believable. Apart of that the textured brush does a wonderful job to got a prototype of the visual aspect before a final refinement.
For 3D artist
A texture applied to a cube in Blender
Digital painters are not alone to benefit about textured brush strokes. 3D texture artist use them a lot. A large library of good tile-able patterns is a must have for them.On the example above here is a 1min textures done with a pattern and 2 brushes ( a cloudy one for texture variation , and a rake for scratches on the borders ) and applied to a cube in Blender.
How I guess it works
technical test with rounded brush and checker
I'm not a coder and technician, but I do an attempt here to describe the behavior to help user and developers to understand it. The pattern seams to react just as a 'alpha mask' acting in addition to the 'brush mask'. It's evident with testing the feature with a circle as a brush mask and a pure checkers as a pattern. Black parts become totally transparent while white totally let express the original brush behavior ( a opacity control on the pressure )
Pattern alignment test
Threw many strokes done, the pattern position keeps aligned. This is good, because it allows to brighten parts or darken parts of a textures, and be consistent in a shading. Also, with this behavior, the usage of pattern as textured paper is possible and keep consistent.
Graphic user interface
The texturing as you can use it now in Gimp-painter 2.6
The current GUI in Gimp-painter works, but don't offer many options. A checkbox 'Use texture' ( only available in mixbrush ) activate the feature. A slider 'Grain' under offer the possibility to have an additional alpha control on the pattern. Good to 'calm down' a to strong texture effect. The pattern choice depend of the Gimp internal panel for pattern selection. The preview are really bad, because they offer a little square centered cropped at 100% resolution. For artist working at high resolution for printing, the maximum of 512x512px for pattern size is a hard limitation, and the thumbnail often end up in a cloudy zoom on the texture, not representative at all, and so hard to pick. A good spatial memory ordering helps.
Other majors disadvantages ; the scaling of the texture is not possible to choose on the fly. For this you have to resize your pattern manually and create as many instance of the same pattern at each size you want. Same for a simple negative. Also, default provided patterns needs to be deleted, they all are useless.
Gimp-painter 2.7.2 textures on GUI new toolbar ( abandonned developement )
The toolbar access to the texture as proposed in the version 2.7.2 of Gimp-painter was a brillant idea from the developer of the fork Sigetch. But it seams the main part of Gimp team not agree with him according to the actual 2.7 development ...
Krita 2.4 beta Pattern on GUI toolbar
Krita also propose the same very good access to the pattern via the toolbar, with sharing of ressources via GHNS ( to share or download online patterns on the fly from within Krita ) , organisation via Tag. As a cons, the panel is not undockable nor re-sizable, the preview thumbnails are also fixed size and not offer a good visibility for high res textures.
Krita 2.4 beta Actual textures feature
The actual 'Source->Pattern' features is not usable as a textured brush. The alignment is good, but the texture pattern don't behave yet as an alpha mask , but as the 'source' color of the brush strokes.
A visualization mock-up of a functional GUI for textured brush in Krita
This 'ideal' mock-up feature:
- a selection of the pattern ( thumbnails ) , because preset should ideally remember the associated pattern if in use.
- a 'Scale' silder , to upscale the texture or downscale it according to the need of the artwork.
- a 'Rotation' slider ( optional ) , to rotate the texture panel ; if impossible to do , simple mirroring on X or Y axis is also interresting
- an 'Offset' slider (optional ), to offset the alignment position of the texture on both X and Y axis.
- an 'Alpha' slider , to do as Gimp-painter propose , an additionnal alpha control on the texture itself.
- a checkbox 'Use color' ; to fall back on the actual 2.4 behavior where texture use color input
- a checkbox 'Negative' ( optional ) , to use an inverted version of the pattern too.
I made it to simply to communicate how it can looks, sorry if it's a non-sens coding wise. This is just a user proposition
Ending note :
I hope my article will help developers to make future FLOSS digital painting tools better.
Ressources : materials to do your test ( patterns I use in this article , 3D files , template for my test zone ) textured-brush-floss.zip ( Public domain textures, CC-0 ).
If you have additional thinking or question about feel free to use the comments.