Outils pour utilisateurs

Outils du site


issue92:inkscape

Table des matières

1

Erratum: During magazine layout, it's common for images to be cropped or dropped entirely. Unfortunately, that happened to a couple of the images in last month's article which may have caused confusion – some of the cropped parts were directly referenced in the text. I've put the full images online at http://www.peppertop.com/fc/ Back in part 29, I showed one use for putting a single object into a group: as the start of a method for producing mirrored or kaleidoscopic drawings using clones. This time, I'm going to use a single object in a group, plus a bit of cloning, to perform some sneaky tricks with clipping and masking. Let's start with a familiar image to which we'll apply a clipping path. Remember, all the parts inside the bright green clipping line will remain visible once the clip is applied, whereas those outside it will be hidden.

Erratum : Pendant la mise en pages du magazine, il est courant que les images soient recadrées ou supprimées entièrement. Malheureusement, c'est arrivé à quelques images dans l'article du mois dernier, ce qui pourrait avoir semé la confusion, certaines des parties manquantes étant directement référencées dans le texte. J'ai mis les images complètes en ligne sur : http://www.peppertop.com/fc/

Dans la partie 29, j'ai montré une raison de créer un groupe avec un seul objet : débuter un procédé pour produire des dessins en miroir ou kaléidoscopiques en utilisant des clones. Cette fois-ci, je vais utiliser un seul objet dans un groupe et un peu de clonage, pour effectuer quelques trucs un peu rusés avec la découpe et les masques.

Commençons avec une image familière à laquelle nous allons appliquer un chemin de découpe. Rappelez-vous, toutes les parties à l'intérieur de la ligne de découpe vert vif resteront visibles une fois la découpe appliquée, alors que celles à l'extérieur seront cachées.

2

Having clipped our image down to just show her head, what if we then decide we also want the hands? We could release the clip and construct a more complex path that includes the hands as well, before re-clipping. But that still leaves us with a single object, with the head and hands at a fixed distance apart. If we want to move the hands independently of the head – or maybe scale or rotate them – we're out of options. The next obvious approach would be to import the image a second time and clip it to show the hands. Now we have two images, each clipped differently, resulting in two separate objects that can be modified independently. With a linked image, that might be a reasonable approach, but if our images are being embedded so that the resultant SVG can be shared more easily, we've now got two large bitmap images bloating our file. What we really want is a way to include the image just once, but create two completely separate clips from it. From the introduction, you've probably already deduced that the answer is to group our image before clipping it. Here I've denoted the group with a dotted box for illustrative purposes – it doesn't appear in a real drawing.

Après avoir découpé notre image pour garder seulement sa tête, que faire si nous décidons alors que nous voulons aussi les mains ? Nous pourrions retirer la découpe et construire un chemin plus complexe qui comprend aussi les mains, avant de redécouper. Mais cela nous laisse toujours avec un seul objet, avec la tête et les mains à une distance fixe. Si nous voulons déplacer les mains indépendamment de la tête - ou peut-être les mettre à l'échelle ou les faire pivoter - nous sommes à court d'options.

Une deuxième approche évidente serait d'importer l'image une deuxième fois et de la découper pour montrer les mains. Maintenant, nous avons deux images, chacune découpée différemment, résultant en deux objets distincts qui peuvent être modifiés de façon indépendante. Avec une image liée, cela pourrait être une approche raisonnable, mais si nos images sont intégrées de façon que le SVG résultant puisse être partagé plus facilement, nous avons maintenant deux grandes images bitmap gonflant notre dossier. Ce que nous voulons vraiment, c'est un moyen d'inclure l'image une seule fois, mais d'en créer deux découpes complètement séparées.

Vu l'introduction, vous avez probablement déjà compris que la réponse est de grouper notre image avant la découpe. Ici, j'ai indiqué le groupe par une boîte en pointillés à des fins d'illustration - il n'apparaît pas dans un vrai dessin.

3

The result (below right) doesn't look altogether different from our first attempt, but that's because the effect is not a visual one, but rather a structural one. Previously, our clipping path was applied directly to the image. If you were to look in the XML Editor you would see that the image has “clip-path” attribute whose value is the ID of a path stored in the <defs> section of the XML file. With the image grouped and then clipped, however, the clip-path attribute is now on the group itself and the image either has no clip-path attribute at all, or its value is set to “none”. The difference is subtle, but useful. By clipping the group, we've effectively created a window through which we're viewing just a part of the image at any time, but the image itself is still the full size. We can demonstrate this by double-clicking to enter the group, then dragging the image around. We're moving the un-clipped image inside the clipped group, not moving the group itself, and the effect is quite different. You could also scale, rotate or skew the image if you want, all without the size or shape of the “window” being affected.

Le résultat (en bas à droite) n'a pas l'air tout à fait différent de notre première tentative, mais c'est parce que l'effet n'est pas visuel, mais plutôt un effet de structure. Auparavant, notre chemin de découpe a été appliqué directement sur l'image. Si vous regardiez dans l'éditeur XML vous verriez que l'image a un attribut « clip-path » dont la valeur est l'ID d'un chemin mémorisé dans la section <defs> du fichier XML. Avec l'image groupée puis découpée, toutefois, l'attribut clip-path est maintenant sur le groupe lui-même et soit l'image n'a pas d'attribut clip-path du tout, soit sa valeur est réglé sur « none ».

La différence est subtile, mais utile. En découpant le groupe, nous avons effectivement créé une fenêtre par laquelle nous regardons juste une partie de l'image à un moment donné, mais l'image elle-même a encore sa taille complète. Nous pouvons le démontrer en double-cliquant pour entrer dans le groupe, puis en faisant glisser l'image. Nous déplaçons l'image non découpée à l'intérieur du groupe découpé, le groupe lui-même ne bouge pas, et l'effet est tout à fait différent. Vous pouvez également redimensionner, faire pivoter ou incliner l'image si vous voulez, le tout sans que la taille ou la forme de la « fenêtre » ne soit affectée.

4

It's a useful trick in its own right – combined with performing an “object to path” on your clipping path before the clip is applied (see Part 13) the simple expedient of grouping your image before clipping means that you can not only change the clipping path itself without releasing it, but you can also move the focal point of the content within it. Clearly you could move the image like this to bring the hands into view through the “window”, but that still doesn't get us two separate clips. For that we need to get a little devious. The steps we'll be taking aren't difficult, but they do need to be done in the right order. Once you've done it a few times, it will become second nature to you. To make things clearer, I suggest starting with a new file, and opening the XML Editor so that you can see exactly what's happening at each step in the process.

C'est une astuce utile en soi, combinée avec un « Objet en chemin » sur votre chemin de découpe avant d'appliquer la découpe (voir partie 13), le simple fait de grouper votre image avant signifie que vous pouvez non seulement changer le chemin de découpe lui-même sans le libérer, mais vous pouvez également déplacer le point focal du contenu à l'intérieur. Il est clair que vous pouvez déplacer l'image ainsi pour mettre les mains dans la vue à travers la « fenêtre », mais cela ne nous fournit toujours pas deux découpes séparées. Pour cela nous allons avoir besoin d'être un peu retors.

Les étapes que nous allons suivre ne sont pas difficiles, mais elles doivent être faites dans le bon ordre. Une fois que vous l'aurez fait plusieurs fois, cela deviendra une seconde nature pour vous. Pour rendre les choses plus claires, je suggère de commencer avec un nouveau fichier et l'ouverture de l'éditeur XML pour pouvoir voir exactement ce qui se passe à chaque étape du processus.

5

Step 1: Drag and drop your image into the document. I chose to embed the image to really prove the point, but linking works as well. In the XML Editor you should see an <svg:image> tag with an “xlink:href” attribute. If you've embedded the image, then the attribute will contain a Base64 encoded version of the image's binary content (if you linked the image it will contain the path to the original image). Step 2: Group the image. An <svg:g> element will appear in the XML Editor – expand it out to see that your image is still inside it. Step 3: Draw your clipping path. You should see it appear in the XML Editor as a sibling of the group. Step 4: Select both the path and the group, then apply the clipping path using either Object > Clip > Set, or by selecting “Set clip” from the right-click context menu. Note the effect in the XML Editor: your path is moved into the <svg:defs> section, and the group gains a “clip-path” attribute that references the path by its ID.

Étape 1 : Faites un glisser-déposer de votre image dans le document. J'ai choisi d'intégrer l'image pour avoir une vrai preuve, mais la lier fonctionne aussi. Dans l'éditeur XML vous devriez voir une balise <svg:image> avec un attribut « xlink:href ». Si vous avez intégré l'image, l'attribut contiendra une version encodée Base64 du contenu binaire de l'image (si vous avez lié l'image, il contiendra le chemin vers l'image originale).

Étape 2 : Groupez l'image. Un élément <svg:g> apparaîtra dans l'éditeur XML, dépliez-le pour constater que votre image est toujours à l'intérieur.

Étape 3 : Dessinez votre chemin de découpe. Vous devriez le voir apparaître dans l'éditeur XML comme un frère du groupe.

Étape 4 : Sélectionnez à la fois le chemin et le groupe, puis appliquez le chemin de découpe soit avec Objet > Découpe > Définir, soit en sélectionnant « Définir une découpe » dans le menu contextuel du clic droit. Notez l'effet dans l'éditeur XML : votre chemin est déplacé dans la section <svg:defs>, et le groupe gagne un attribut « clip-path » qui référence le chemin par son ID.

6

Step 5: Double-click to enter the group, and select the image. Keep an eye on the status bar to confirm what's happening, and the XML Editor should also highlight the image's entry. Step 6: Clone the image using Edit > Clone > Create Clone, or by pressing ALT-D. Note in the XML Editor that an <svg:use> element is created with an “xlink:href” attribute that references the image by its ID. That's your clone! No matter how complex the parent object is, a clone is actually always just a simple little <svg:use> element that holds a reference to the original. Step 7: Currently you have an image, and a clone of that image, both inside a single group. Let's put the clone somewhere more useful. With the clone selected, use Edit > Cut or CTRL-X to remove it from the document (watch it vanish from the XML Editor before your very eyes), and put it on the clipboard. Remember, what we've actually put on the clipboard is just a small <svg:use> element, not the heavyweight binary data of the original image.

Étape 5 : Double-cliquez pour entrer dans le groupe et sélectionnez l'image. Gardez un œil sur la barre d'état pour confirmer ce qui se passe, et l'éditeur XML devrait également mettre en évidence l'entrée de l'image.

Étape 6 : Clonez l'image en utilisant Editer > Cloner > Créer un clone, ou en appuyant sur Alt+D. Remarquez dans l'éditeur XML qu'un élément <svg:use> est créé avec un attribut « xlink:href » qui référence l'image par son ID. C'est votre clone ! Peu importe la complexité de l'objet parent, un clone est en fait toujours juste un simple petit <svg:use> qui contient une référence à l'original.

Étape 7 : Maintenant, vous avez une image et un clone de cette image, tous deux dans un même groupe. Mettons le clone à un endroit plus utile. Avec le clone sélectionné, utilisez Édition > Couper ou Ctrl+X pour le supprimer du document (regardez-le disparaître de l'éditeur XML devant vos yeux) et le mettre dans le presse-papiers. Rappelez-vous, ce que nous avons effectivement mis dans le presse-papiers est juste un petit élément <svg:use>, pas les données binaires lourdes de l'image originale.

7

Step 8: Inkscape doesn't really care where we paste the clone, so long as the ID it references still exists in the document. So double-click on the background until the status bar tells you you're out of the group, then use Edit > Paste or CTRL-V to paste the clone into the document. Step 9: If everything went well you should now be looking at another, un-clipped copy of your image. Remember, the clip was applied to the group, but we've taken our clone from a lower level, before the clip has been applied, giving us access to the original image again but without requiring a second copy of all that binary data. Step 10: There's nothing special about this clone – you can treat it as you would any other. That means you can clip, mask, group, rotate, skew or blur it, and much more besides. So let's complete our original task, and clip it to show just the hands.

Étape 8 : Inkscape ne se soucie pas vraiment de l'endroit où nous collons le clone, tant que l'ID qu'il référence existe toujours dans le document. Donc, double-cliquez sur le fond jusqu'à ce que la barre d'état indique que vous êtes hors du groupe, puis utilisez Édition > Coller ou Ctrl+V pour coller le clone dans le document.

Étape 9 : Si tout va bien, vous devriez maintenant voir une autre copie, non découpée, de votre image. Rappelez-vous, la découpe a été appliquée au groupe, mais nous avons pris notre clone à un niveau inférieur, avant que la découpe ne soit appliquée, nous donnant accès à l'image d'origine à nouveau, mais sans nécessiter une deuxième copie de toutes les données binaires.

Étape 10 : Il n'y a rien de spécial à propos de ce clone, vous pouvez le traiter comme n'importe quel autre. Cela signifie que vous pouvez appliquer une découpe, un masque, grouper, pivoter, incliner ou flouter, et bien plus encore. Nous allons donc terminer notre tâche d'origine et le découper pour montrer seulement les mains.

8

There you have it – two different clips of the same image, with just a single copy of the binary data embedded into your document. Of course you don't have to stop at two copies, you can add as many clones as you like. Each one only adds a tiny amount to the document size, but gives you a complete copy of the original image to work with. Although I've demonstrated this technique with clipping, it works equally well with masking, allowing you to use all the fine control over opacity that masking provides (see Part 14 for more details). You can even mask some clones whilst clipping others to produce something like this information sheet that uses only a single embedded image. As I mentioned in step 8, Inkscape doesn't really care where you paste the clone. In the examples above I've simply pasted it outside of the original group, but you could also paste it into a different group entirely – even one that is, itself, clipped or masked. And don't forget that layers are just groups with some extra metadata. There's nothing to stop you cutting a clone to the clipboard (even one that's not in a group), then switching to a different layer before pasting.

Et voila ! Vous avez réussi : deux découpes différentes de la même image, avec une seule copie des données binaires incorporée dans votre document. Bien sûr, vous n'êtes pas obligé de vous restreindre à deux copies, vous pouvez ajouter autant de clones que vous le souhaitez. Chacun ajoute seulement une petite quantité à la taille du document, mais vous donne une copie complète de l'image originale avec laquelle travailler.

J'ai montré cette technique avec la découpe, mais elle fonctionne aussi bien avec les masques, vous permettant d'utiliser tout le contrôle fin sur l'opacité fournie par les masques (voir la partie 14 pour plus de détails). Vous pouvez même masquer certains clones tout en en découpant d'autres pour produire quelque chose comme cette feuille d'information qui n'utilise qu'une seule image intégrée.

Comme je le disais à l'étape 8, Inkscape ne se soucie pas vraiment de l'endroit où vous collez le clone. Dans les exemples ci-dessus, je l'ai tout simplement collé à l'extérieur du groupe original, mais vous pouvez aussi le coller dans un groupe totalement différent - même un qui est lui-même découpé ou masqué. Et n'oubliez pas que les calques ne sont que des groupes avec des métadonnées supplémentaires. Il n'y a rien qui vous empêche de couper un clone vers le presse-papiers (même un qui n'est pas dans un groupe), puis de passer à un autre calque avant de coller.

9

Don't think that this technique is limited to bitmaps either. As you know, any Inkscape object or group can be cloned, and equally any can be put into a group. So you could draw a complex character or scene, group it (let's call that “Group 1”), then group it again (“Group 2”). Clip or mask Group 2 and you can still enter the group, clone Group 1, cut it to the clipboard, and use it elsewhere in your drawing. I use this technique a lot when creating comic strips. Typically I add some movement to a comic by zooming or panning the scene between frames, but rather than copy or redraw the background and characters I usually use clones that are then scaled as necessary before being clipped to fit in the frame. With this approach, any changes to the originals are automatically propagated to the clones, so I don't need to update multiple panels each time there's a tweak to be made. This strip, for example, really consists of only one panel (the top one), with the background being cloned and clipped to create the second two panels, and the heads added in different poses on top to introduce a little more variety. Finally the text was added in a separate layer to produce the finished comic.

Ne pensez pas non plus que cette technique soit limitée aux bitmaps. Comme vous le savez, n'importe quel objet ou groupe Inkscape peut être cloné, et tous peuvent aussi être mis dans un groupe. Ainsi, vous pouvez dessiner un personnage ou une scène complexe, le grouper (appelons-le « Groupe 1 »), puis le grouper à nouveau (« Groupe 2 »). Appliquez une découpe ou un masque sur le Groupe 2 et vous pouvez toujours entrer dans le groupe, cloner le Groupe 1, le couper vers le presse-papiers, et l'utiliser ailleurs dans votre dessin.

J'utilise beaucoup cette technique lors de la création de bandes dessinées. Typiquement j'ajoute du mouvement à une bande dessinée en zoomant ou décalant la scène entre les images, mais plutôt que de copier ou redessiner l'arrière-plan et les personnages, j'utilise habituellement des clones qui sont ensuite mis à l'échelle, si nécessaire, avant d'être découpés pour s'adapter dans le cadre. Avec cette approche, les modifications apportées aux originaux sont automatiquement répercutées sur les clones, donc je n'ai pas besoin de mettre à jour plusieurs planches à chaque fois qu'il y a un réglage à faire. Cette bande, par exemple, consiste en réalité en un seul panneau (celui du haut), avec le fond cloné et découpé pour créer les deux panneaux suivants, et les têtes ajoutées dans différentes positions par dessus pour introduire un peu plus de variété. Enfin, le texte a été ajouté dans un calque séparé pour produire la bande dessinée finale.

issue92/inkscape.txt · Dernière modification : 2015/03/09 09:38 de auntiee