Simulate Textured Canvas and Similar Mediums

Perhaps in a future version of MyPaint, it might be cool to come up with a virtual paper or media. This would basically be a 8-bit grayscale image or channel that would represent a heightmap, of canvas or paper, or even gesso with cracks, or concrete for airbrush tagging, so that drawing tools would interact with it, while drawing.

Perhaps even a second channel or image could be used for an absorbancy map, while using liquid painting tools, such as brushes, air brushes, and markers.

Awsomebump could help create the Virtual Media.
Even 8 bits within a 1mm range could represent steps of about 0.003mm, which is finer than a fingerprint on glass.
I should think that the painting could be stored on one layer and the maps stored on another.
I should think, to pull this well large samples would work better than small ones.

(I could scan a few pieces of paper, and convert them to heightmaps. )

While things like this can be added post-processing wise, but it the artist interacts with it, the result might seem more organic.

1 Like

I think your are referring to using bump maps, normal maps, or displacement maps to a simulate textured medium to draw on.

A good example of this would be the Infinite Painter app on android which has a specialized background layer that dose a pretty good job simulating textured maps.

This will either require a specialize layer or a modification to the background layer. Also the brush engine needs to know how to deal with textures mediums as well. Plus I think this will also require implementing Cairo( or GEGL) for rendering on the Canvas end.

All-in-all I think this will be a great feature request since one of MyPaint goals is to emulate traditional brushes. Maybe also texture mediums fall along that line as well.

Renamed from Virtual Media to Simulate Textured Canvas and Similar Mediums to clarify topic.

Also moved to Feature Requests Category.

I don’t know if the brushengine can “read” textures/backgroud easily or if this is complicated… The smudge ignores background image color.

But generally I think a bump map texture would fit nicely into the Brush Dynamics (inputs) section. 0(black) to 1(white) input curve. It could just pick the value from the background image. As far as I know, picking color is pretty expensive for the performance though…

1 Like

If it can be done with a simple tile-sized mask, it could be implemented in the brush engine quite effectively I think. It would mean a change to mypaint_brush_stroke_to() or a new mypaint_brush_stroke_to_with_texture() function.

Where texture live in the UI though? Is it its own setting, or is it part of the brush, or is it a property of the canvas?

This is being addressed by @briend. Check it out!

1 Like

I’ve updated most of my brushes to have an underlying “gridmap” texture that is exposed as you reduce the opacity down from 2.0. I’ve documented this here for now.

1 Like