--===============0186877382== Content-Type: multipart/signed; boundary="nextPart33653953.aNj2I6sHF4"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit --nextPart33653953.aNj2I6sHF4 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Okay, I tried to make a nice diagram in Karbon, but it crashed, so here's t= he=20 plain text version of my Grand Vision for the background, layers, foregroun= ds=20 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=20 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= =20 where interaction with a media model can be implemented. Note: Impasto models thick, 3-d paint, where tufts of thick oipaint can cast shadows.=20 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=20 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=20 adjustment layers. Adjustment layers can also be attached to selection mask= s,=20 per layer. The composited layers is either scaled and color corrected, or color correc= ted=20 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=20 that. We need perhaps to add a light source or two, in OpenGL mode... I thi= nk 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. =2D-=20 Boudewijn Rempt=20 http://www.valdyas.org/fading/index.cgi --nextPart33653953.aNj2I6sHF4 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBELk40daCcgCmN5d8RAp7QAKDHcHUz9M8Dsul8Zb/j8m4/n1TArQCfd96F t8peVolo8IGsdOQMnxzWcrA= =eEAp -----END PGP SIGNATURE----- --nextPart33653953.aNj2I6sHF4-- --===============0186877382== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kimageshop mailing list kimageshop@kde.org https://mail.kde.org/mailman/listinfo/kimageshop --===============0186877382==--