5.2. Creating animated brushes

When your new animated brush is created, it is displayed within the image window. To save the brush into gih format, select FileExport As…, name your work with the gih extension, and press the Save button. The following window is displayed:

Figure 7.18. Dialog to export an image as Brush Pipe

Dialog to export an image as Brush Pipe

Dialog to save an image as GIMP image hose


Cette fenêtre de dialogue comporte de nombreuses options pas toujours faciles à comprendre. Elles vous permettent de régler l’animation de votre brosse.

Espacement (%)

L’Espacement est la distance entre deux marques de la brosse quand vous tracez un trait avec le pointeur. Vous devez considérer que dessiner avec une brosse est comme donner des coups de tampon. Si l’espacement est faible, les coups de tampon seront très rapprochés et le trait paraîtra continu. Si l’espacement est grand, les coups de tampon seront séparés : c’est intéressant avec les brosses figurées, comme le « poivron vert ». La valeur varie de 1 à 200 et ce pourcentage correspond au « diamètre » de la brosse : 100% est 1 diamètre. À 50 les poivrons se chevauchent à moitié (1/2 diamètre du 1er au 2ème), à 100 ils sont bord à bord (1 diamètre), à 150 ils ont 1/2 diamètre d’écart (1 diamètre et 1/2) et à 200 ils ont 1 diamètre d’écart (2 diamètres).

Description

C’est le nom donné à la brosse, qui apparaîtra en haut de la fenêtre de sélection des brosses (en mode grille) quand la brosse sera sélectionnée.

Taille des cases

That is size of cells you will cut up in layers. Default is one cell per layer and size is that of the layer. Then there is only one brush aspect per layer.

Nous pourrions très bien n’avoir qu’un seul grand calque et découper à l’intérieur les cases qui serviront pour les différents aspects de la brosse animée.

For instance, we want a 100×100 pixels brush with 8 different aspects. We can take these 8 aspects from a 400×200 pixels layer, or from a 300×300 pixels layer but with one cell unused.

Nombre de cases

C’est le nombre de cases (une case par aspect) à découper dans chaque calque. Par défaut, c’est le nombre de calques puisqu’il n’y a qu’un calque par aspect.

Afficher comme :

C’est l’expression de la façon dont vous avez arrangé les cases sur les calques. Si par exemple vous avez placé huit cases à raison de deux cases par calque sur quatre calques, GIMP affichera : 1 rangée(s) de 2 colonne(s) par calque.

Dimension, Ranks, Selection dropdown

C’est là que les choses se compliquent ! Des explications sont nécessaires pour comprendre comment arranger les cases et les calques.

GIMP starts retrieving cells from each layer and stacks them into a FIFO stack (First In First Out: the first in is at the top of the stack and so can be first out). In our example 4 layers with 2 cells in each, we'll have, from top to bottom: first cell of first layer, second cell of first layer, first cell of second layer, second cell of second layer, …, second cell of fourth layer. With one cell per layer or with several cells per layer, result is the same. You can see this stack in the Layers Dialog of the resulting .gih image file.

Dans un deuxième temps, GIMP crée, à partir de cette pile, un tableau informatique ayant les Dimensions que vous aurez indiquées. Vous disposez de quatre dimensions.

En informatique, un tableau se présente sous la forme tableau(x,y,z) pour un tableau à 3 dimensions. Il est facile de se représenter un tableau à 2 dimensions : sur une feuille de papier, c’est un tableau avec des lignes et des colonnes. Avec un tableau à 3 dimensions, on ne parle pas de lignes et de colonnes, mais de Dimensions et de Rangs. La première dimension constitue l’axe des x, la seconde l’axe des y, et la troisième l’axe des z. Chaque dimension possède des rangs de cellules.

To fill up this array, GIMP starts retrieving cells from the top of stack. The way it fills the array reminds that of an odometer: right rank digits turn first and, when they reach their maximum, left rank digits start running. If you have some memories of Basic programming you will have, with an array(4,2,2), the following succession: (1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,2),(3,1,1),…, (4,2,2). We will see this later in an example.

Outre le numéro de rang que vous donnez à chaque dimension, vous pouvez lui ajouter un mode Sélection. Vous disposez de plusieurs modes qui seront appliqués lors du dessin :

Incrémentiel

GIMP choisit un rang dans la dimension concernée en fonction de l’ordre que les rangs ont dans cette dimension.

Angulaire

GIMP choisit un rang dans la dimension concernée selon l’angle de déplacement de la brosse.

The first rank is for the direction 0°, upwards. The other ranks are affected, clockwise, to an angle whose value is 360/number of ranks. So, with 4 ranks in the concerned dimension, the angle will move 90° clockwise for each direction change: second rank will be affected to 90° (rightwards), third rank to 180° (downwards) and fourth rank to 270° (-90°) (leftwards).

Au hasard

GIMP choisit un rang au hasard dans la dimension concernée.

Velocity, Pressure, Xtilt, Ytilt

Ces options concernent les tablettes graphiques perfectionnées.

Exemples

Une brosse animée à une dimension

Tout ça c’est bien joli, mais à quoi ça sert ? Nous allons voir ça progressivement. En fait, vous pouvez placer dans chaque dimension les cases qui donneront une action particulière à votre brosse animée.

Commençons par une brosse à 1 dimension qui nous permettra d’étudier l’action des modes de Sélection . Nous pouvons la représenter ainsi : Pour cela, suivez les étapes suivantes :

  1. Select FileNew… from the main menu.

    Set Width and Height for example to 30 pixels.

    In the Advanced Options, set the Color space to RGB color and set Fill with to Transparency.

    Using the Text tool create 4 layers « 1 », « 2 », « 3 », « 4 ». Delete the « background » layer.

  2. Select FileSave… from the main menu to first save your image as an .xcf file to keep its properties.

    Select FileExport As… from the main menu to export the image as an animated brush with the .gih extension.

    Export the image with a .gbr extension in the brushes directory in your personal GIMP folder. The location of this folder depends on your OS:

    • Linux: /home/user_name/.config/GIMP/2.99/

    • macOS: /Users/user_name/Library/Application Support/GIMP/2.99/

    • Windows: C:\Users\user_name\AppData\Roaming\GIMP\2.99\

  3. In the Export Image as Brush Pipe dialog, provide a Description, set the Spacing (percent) to 100, set the Cell size to 30×30, set Dimension to 1, and set Ranks to 4, and the Selection drop-down to incremental. Then click the Export button.

  4. In the Brush Dialog, click on the button Refresh brushes .

    Your brush appears among the other brushes. You can use it immediately, without restarting GIMP.

    Select your brush. Select pencil tool for instance and click and hold with it on a new image:

    Vous voyez 1, 2, 3, 4 se suivent dans l’ordre.

  5. Take your .xcf image file back and save it as .gih setting the Selection drop-down to random:

    Les chiffres s’affichent au hasard

  6. Now set the Selection drop-down to angular:

Une brosse animée à 3 dimensions

Nous allons maintenant créer une brosse à 3 dimensions permettant de dessiner une main dont l’orientation change suivant la direction de la brosse (4 directions), alternant régulièrement main droite et main gauche, et changeant de couleur de façon aléatoire (noir/bleu).

The first question we have to answer to is the number of images that is necessary. We reserve the first dimension (x) to the brush direction (4 directions). The second dimension (y) is for Left/Right alternation and the third dimension (z) for color variation. Such a brush is represented in a 3D array « myarray(4,2,2) »:

There are 4 ranks in first dimension (x), 2 ranks in second dimension (y) and 2 ranks in third dimension (z). Thus there are 4×2×2 = 16 cells. We need 16 images.

  1. Création des images de la dimension 1 (x)

    Open a new 30×30 pixels image, RGB with Transparent Fill Type. Using the zoom draw a left hand with fingers upwards.[2] Save it as handL0k.xcf (hand Left 0° Black).

    Open the Layers Dialog. Double click on the layer to open the Layer Attributes Dialog and rename it to handL0k.

    Duplicate the layer. Let visible only the duplicated layer, select it and apply LayerTransformRotate 90° clockwise. Rename it to handL90k.

    Effectuez les mêmes opérations pour créer handL180k et handL-90k (ou handL270k).

  2. Création des images de la dimension 2 (y)

    Cette dimension possède 2 rangs, un pour la main Gauche et l’autre pour la main droite. Le rang main gauche existe déjà. Nous allons créer les images de la main Droite par un simple retournement horizontal.

    Duplicate the handL0k layer. Let it visible only and select it. Rename it to handR0K. Apply LayerTransformFlip Horizontally.

    Agissez de la même façon sur les autres calques main gauche pour créer leur équivalent main droite.

    Re-order layers to have a clockwise rotation from top to bottom, alternating Left and Right: handL0k, handR0k, handL90k, handR90k, …, handR-90k.

  3. Création des images de la dimension 3 (z)

    La dimension 3 possède 2 rangs, un pour la couleur noire et l’autre pour la couleur bleue. Le premier rang, noir, existe déjà. On voit bien que les images de la dimension 3 vont être une duplication, en bleu, des images de la dimension 2. Nous aurons ainsi nos 16 images. Mais un alignement de 16 calques est difficile à gérer. Nous allons donc utiliser des calques à deux images.

    Select the handL0k layer and let it visible only. Use ImageCanvas Size… to change the canvas size to 60×30 pixels.

    Dupliquez le calque hand0k. Sur la copie, utilisez l’outil Remplissage pour remplir la main de bleu.

    Sélectionnez l’outil Déplacement. Double cliquez dessus pour accéder à ses propriétés. Cochez l’option « Déplacer le calque courant ». Déplacez la main bleue dans la partie droite du calque avec précision en vous aidant du zoom.

    Make sure only handL0k and its blue copy are visible. Right click on the Layers dialog: Apply the Merge Visible Layers command with the option Expand as Necessary. You get a 60×30 pixels layer with the black hand on the left and the blue hand on the right. Rename it to « handsL0 ».

    Agissez de même sur les autres calques.

  4. Mise en ordre des calques

    Layers must be set in order so that GIMP can find the required image at some point of using the brush. Our layers are yet in order but we must understand more generally how to have them in order. There are two ways to imagine this setting in order. The first method is mathematical: GIMP divides the 16 layers first by 4; that gives 4 groups of 4 layers for the first dimension. Each group represents a direction of the brush. Then, it divides each group by 2; that gives 8 groups of 2 layers for the second dimension: each group represents a L/R alternation. Then another division by 2 for the third dimension to represent a color at random between black and blue.

    L’autre méthode est visuelle, basée sur la représentation du tableau 3D. La corrélation entre ces deux méthodes est donnée dans l’image suivante :

    Comment GIMP lira-t-il ce tableau ? GIMP commence par la première dimension qui est programmée pour un choix « angulaire », par exemple 90°. Dans ce rang 90°, en jaune, il choisit, dans la deuxième dimension, de façon « incrémentielle » une alternance G/D. Puis, dans la troisième dimension, sur un mode aléatoire, il choisit une couleur. Finalement, nos calques doivent avoir la disposition suivante :

  5. Voilà. Your brush is ready. Save it as .xcf first, then export as .gih with the following parameters:

    • Espacement : 100

    • Description : Mains

    • Cell Size: 30×30

    • Nombre de cases

    • Dimensions: 3

      • Dimension 1 : 4 rangs Sélection : Angulaire

      • Dimension 2 : 2 rangs Sélection : Incrémentielle

      • Dimension 3 : 2 rangs Sélection : Au hasard

    Place your .gih file into the GIMP brush directory and refresh the brush box (see steps above). You can now use your brush.

    Figure 7.19. Voici le résultat en traçant une sélection elliptique avec la brosse :

    Voici le résultat en traçant une sélection elliptique avec la brosse :

    Cette brosse alterne main droite et main gauche régulièrement, les couleurs noir et bleu au hasard, selon quatre directions de la brosse.




[2] Ok, we are cheating here: our hand is borrowed from https://commons.wikimedia.org/wiki/File:Stop_hand.png.