Paper generation

Boudewijn Rempt boud at valdyas.org
Sat Apr 1 11:55:55 CEST 2006


Okay, I tried to make a nice diagram in Karbon, but it crashed, so here's the 
plain text version of my Grand Vision for the background, layers, foregrounds 
in Krita 2.0:

!Background, paper, layers, blobs

An image in Krita 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 makes 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.

!!Background

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

!!Substrate

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 (char)
smoothness (0..1)
absorbency (0..1)
reflectiveness -- r,g,b, as floats with a value between 0 and 1
transmittance (0)

(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.)


!!Layers

On top of the substrate and background are the layers themselves. We have:

* media layers
* shoup layers (the traditional model with just color)
* object layers (kparts or (groups) of flake objects)
* group layers
* adjustment layers

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)

Colorspaces can implement a particular media model. Paintops are the place 
where interaction with a media model can be implemented.

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 masks, 
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%.

!! Physics Visualisation

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.

!! Blobs

On top of the layers are what Xara calls blobs: the temporary droppings of
tools, like rubber bands, vector paths, brush shape cursors.



-- 
Boudewijn Rempt 
http://www.valdyas.org/fading/index.cgi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kimageshop/attachments/20060401/41aa33c0/attachment.pgp 


More information about the kimageshop mailing list