diff options
Diffstat (limited to 'chalk/doc/background_paper.txt')
-rw-r--r-- | chalk/doc/background_paper.txt | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/chalk/doc/background_paper.txt b/chalk/doc/background_paper.txt new file mode 100644 index 00000000..96226fe2 --- /dev/null +++ b/chalk/doc/background_paper.txt @@ -0,0 +1,84 @@ +Background, paper, layers, blobs + +An image in Chalk is imposed upon a plane. Perhaps, using OpenGL, +we'll be able to rotate and elevate that plane at the users' whim. +If we can elevate the plane, there will be a direction of gravity +that naturalistic media can play with. Note: Wet & Sticky make it +possible to "paint" gravity. This looks like a fun feature, but +that needs to be done per-layer, and not for the whole image. + +The plane is represented by the checkered background. Ideally, +we'd be able to set the color of the checks & the size, and the +size shouldn't change with the zoomlevel. The checks are one +pattern, repeated for the whole image: + +O# +#O + +Placed on the plane is optionally the substrate -- a naturalistic +representation of canvas, linen, paper, board, wood, levkas. Or +something weird, kopper, rock, sand... There is one substrate +per image. The substrate can be a small texture repeated for the +whole image, or as big as the image -- the latter is important +if we want to make it possible to perturb the substrate (think scoring +lines into levkas or erasing through the paper). + +Provisionally, the substrate has the following properties: + +height +smoothness +absorbency +reflectiveness + +(Of course, layers below the current layer can influence these values +for layers on top of them.) + +I have a hunch that the effect of these properties are really easy to +render using OpenGL, but not so easy using plain QPainter. In any case, +media layers will need to know these values at every pixel. We need +a really easy & fast way to acquire them. + +We need to avoid the Corel Painter feature where you can use a naturalistic +paper and then paint away the paper structure, mixing the color of the paper +with your paint as if the paper were paint. So, we need to separate paper +and paint thoroughly. + +On top of the substrate and background are the layers themselves. +Some layers are just color; others contain media. Media means color, +but possibly in a kubelka-munk colorspace, and properties like: + +height +graininess +viscosity +wetness +smoothness +absorbency +stickiness (i.e, charcoal isn't sticky at all, acryl paints very +sticky) + +Note: Impasto models thick, 3-d paint, where tufts of thick oipaint can +cast shadows... + +Ordinary color layers (Shoup layers in the terminology of Cockshott) can +make use of the substrate parameters using special paint ops, and ordinary +color can be painted on a media layer, but the ordinary color paintops +do not deposit the above properties. Media paint just leaves color on the +color layers. We need to avoid at all costs the Corel Painter effect where +trying to use a pencil on a watercolor layer causes a nasty flow-impeding +useless error box to popup. + +Media and ordinary layers can be grouped and mixed at will, together with adjustment +layers. Adjustment layers can also be attached to selection tqmasks, per layer. + +The composited layers is either scaled and color corrected, or color corrected and +then scaled, depending on whether the zoom > 100% or < 100%. + +Note: do we need a visualisation layer on top of the layers for things +like wetness, reflectiveness, height? Perhaps this is the right place for that. +We need perhaps to add a light source or two, in OpenGL mode... I think +we do. + +On top of the layers are what Xara calls blobs: the temporary droppings of +tools, like rubber bands, vector paths, brush tqshape cursors. + + |