Outils pour utilisateurs

Outils du site


issue74:inkscape

Transparency – or its counterpart, opacity – is such a fundamental concept in Inkscape that it was one of the earliest topics covered in this series. Back in Part 3 you were introduced to the Opacity spin-box on the status bar, which gives you the ability to set a single transparency level for a whole object, or even a group of objects. If you want a single object to have varying opacity – such as completely transparent at one end, and opaque at the other – you can use a gradient for the fill and stroke. But what about doing the same for a group of objects? You could set suitable gradients on each individual item in the group separately to get the desired effect, but if your group contains lots of objects, then that approach becomes tedious very quickly. The solution to this problem is masking. This is a technique that uses a grayscale image as a means of specifying the opacity of another object or group. Any white sections in the image cause that part of the masked object to appear opaque. Black sections cause that part to appear transparent. And grays in-between result in varying levels of opacity.

La transparence - ou son contraire, l'opacité - est un concept si fondamental dans Inkscape qu'il a été l'un des premiers sujets abordés dans cette série. Dans la troisième partie, la boîte d'incrément de l'opacité sur la barre d'état, qui vous donne la possibilité de définir un niveau de transparence unique pour un objet entier, ou même un groupe d'objets, vous a été présentée.

Si vous voulez qu'un seul objet ait une opacité variable - telle que complètement transparent à une extrémité, et opaque à l'autre - vous pouvez utiliser un dégradé pour le remplissage et le contour. Mais en est-il de même pour un groupe d'objets ? Vous pouvez définir des gradients appropriés sur chaque élément dans le groupe séparément pour obtenir l'effet désiré, mais, si votre groupe contient beaucoup d'objets, alors l'approche devient pénible très rapidement.

La solution à ce problème est : le masquage. Il s'agit d'une technique qui utilise une image en niveaux de gris comme un moyen de spécifier l'opacité d'un autre objet ou groupe. Toutes les parties blanches de l'image rendent la même partie de l'objet masqué opaque. Les sections noires rendent les parties masquées transparentes. Et les gris entre les deux donnent différents niveaux d'opacité.

Let's look at an example. In this image (below) I've placed a solid red circle on top of a solid green background. The green is there mainly to show the effect more clearly. On top of the circle is a rectangle with a white-black-white gradient. Using this rectangle as a mask for the circle gives the result of a clipped circle that fades from opaque to transparent and back to opaque. Note that anything outside the mask is clipped. In that respect, masking could even be used as an alternative to the clip paths that were introduced in the previous part of this tutorial. Draw your mask entirely in white – or in solid shades of white and black – and any parts of the masked object which lie outside the mask, or which are colored black, will be clipped. Usually I recommend using a clip path in preference to a mask if you simply want a hard clipped edge, but, as we will see later in this article, there are times when it's easier to use a mask.

Regardons un exemple. Dans cette image (ci-dessous), j'ai placé un cercle rouge solide sur un fond vert. Le vert est là principalement pour bien montrer l'effet. Posé sur le cercle est un rectangle avec un dégradé blanc-noir-blanc. L'utilisation de ce rectangle comme masque pour le cercle donne le résultat d'un cercle coupé qui passe d'opaque à transparent, puis redevient opaque.

Remarquez que tout ce qui se situe en dehors du masque est découpé. De fait, le masquage pourrait même être utilisé comme alternative aux chemins de découpe qui ont été présentés dans la partie précédente de ce tutoriel. Dessinez votre masque entièrement en blanc - ou en blanc et en noir - et toutes les parties de l'objet masqué qui se trouvent à l'extérieur du masque, ou qui sont de couleur noire, seront découpées. Habituellement, je recommande d'utiliser un chemin de découpe de préférence à un masque si vous voulez simplement un bord dur découpé, mais, comme nous le verrons plus tard dans cet article, il est parfois plus facile d'utiliser un masque.

You may recall that the fill and stroke of a clip path are irrelevant to the final effect on the clipped object. With masks, however, the opposite is true – the color of each individual pixel is taken into account when calculating its effect on the masked object, so fills and strokes have significance. Did I say pixel? In a vector format? In practice, there are few cases where an SVG file is actually used as a purely vector format. If you want to display an SVG file on a computer screen, or print it to an inkjet or laser printer, it is ultimately converted to pixels. Masking takes place during this final output step, so although the mask may be made up of vector objects, and the item being masked is also a vector, the final result is really generated only at the point that those vectors are converted to individual pixels for display or printing.

Vous vous rappelez sans doute que le remplissage et le contour d'un chemin de découpe ne contribuent pas à l'effet final sur l'objet tronqué. Avec les masques, CEPENDANT, le contraire est vrai, la couleur de chaque pixel individuel est pris en compte dans le calcul de son effet sur l'objet masqué et les remplissages et les contours ont donc une signification.

Ai-je dit pixel ? Dans un format vectoriel ? Dans la pratique, rares sont les cas où un fichier SVG est effectivement utilisé comme un format purement vectoriel. Si vous souhaitez afficher un fichier SVG sur un écran d'ordinateur, ou l'imprimer sur une imprimante à jet d'encre ou laser, il est converti à terme en pixels. Le masquage a lieu pendant cette étape de sortie finale ; ainsi, bien que le masque puisse être constitué d'objets vectoriels, et que l'objet masqué soit vectoriel aussi, le résultat final n'est vraiment généré qu'au moment où ces vecteurs sont convertis en pixels individuels pour l'affichage ou l'impression.

Using a thick-stroked rectangle and strictly black or white pixels, it's easy to see the difference between a clip path and the use of a mask to simulate clipping. In the top pair of images, I've used the rectangle as a clip path, and you can see that the result is aligned with the center line of the stroke. The second and third pairs of images show the rectangle being used as a mask, with only white parts remaining and black parts becoming transparent. It's especially clear in the last pair that the stroke has an effect. By now it should be clear that clipping and masking are similar operations, so it's not really surprising that Inkscape exposes them with the same user interface. Just as with clipping, the masking object must be on top of the object to be masked, in terms of the z-index. You then select both items and choose Set Mask from the context menu, or Object > Mask > Set from the main menu. Releasing a masked object is as simple as selecting it (it will be described as “Masked” in the status bar) then choosing Release Mask from the context menu, or Object > Mask > Release from the main menu. Just as with clip paths, it is possible to edit masks using the node tool without releasing them first, but generally there's little benefit to doing so as you can edit only the outline shape of the path, not its color.

Avec l'utilisation d'un rectangle à contour épais et uniquement des pixels noirs ou blancs, il est facile de voir la différence entre un chemin de découpe et l'utilisation d'un masque pour simuler la découpe. Dans la première paire d'images ci-dessous, j'ai utilisé le rectangle comme un chemin de découpe et vous pouvez voir que le résultat est aligné sur le milieu du contour. Les deuxième et troisième paires d'images montrent le rectangle utilisé comme un masque, avec uniquement la conservation des parties blanches, alors que les parties noires restantes deviennent transparentes. C'est particulièrement évident dans la dernière paire que le contour a un effet.

Il devrait maintenant être clair que le découpage et le masquage sont des opérations similaires ; il n'est donc pas vraiment surprenant qu'Inkscape les propose avec la même interface utilisateur. Tout comme avec la découpe, l'objet de masquage doit être au-dessus de l'objet à masquer, en termes de z-index. Vous sélectionnez ensuite les deux éléments et choisissez Définir un masque dans le menu contextuel, ou Objet > Masque > Définir dans le menu principal. La libération d'un objet masqué est aussi simple que de le sélectionner (il sera décrit comme « masqué » dans la barre d'état), puis de choisir Retirer le masque dans le menu contextuel, ou Objet > Masque > Retirer dans le menu principal. Tout comme avec les chemins de découpe, il est possible d'éditer des masques en utilisant l'outil de nœud sans les libérer au préalable, mais, en général, il y a peu d'avantages à le faire, étant donné que vous pouvez modifier uniquement la forme du contour du chemin, pas sa couleur.

As you've seen, using a grayscale gradient as a mask gives you some control over the opacity of the masked object. You may also recall that Inkscape offers a selection of black and white patterns in its Fill & Stroke dialog, plus a few grayscale bitmap fill patterns. These may previously have seemed rather limiting, but their monochrome nature makes them perfect for use as a mask. The checkerboard pattern is a good example of a situation where it's easier to use a mask than a clip path. This same effect could be achieved by clipping with a complex path, but it's probably not worth the extra effort. Looking closely at the checkerboard, you'll notice that the fill isn't made up of black and white squares, but rather white and transparent. Using white and transparent can sometimes make it easier to see what parts of an object you are masking: white areas will remain visible, and transparent areas will be clipped. A translucent white area will have the same effect as a shade of gray. It may seem counter-intuitive to cover the parts of the object that you want to keep, and expose the parts that will be hidden, but that's the way that masking has been defined in the SVG specification, so that's the way it works in Inkscape.

Comme vous l'avez vu, utiliser un gradient de niveaux de gris comme un masque vous donne un certain contrôle sur l'opacité de l'objet masqué. Vous vous rappelez également sans doute qu'Inkscape propose une sélection de modèles noirs et blancs dans son dialogue Remplissage et contour, plus quelques motifs de remplissage en bitmap niveaux de gris. Vous auriez pu les trouver plutôt restrictifs, mais leur nature monochrome les rend parfaits pour une utilisation en tant que masques. Le motif en damier est un bon exemple d'une situation où il est plus facile d'utiliser un masque qu'un chemin de découpe. Ce même effet peut être obtenu en découpant avec un chemin complexe, mais cela ne vaut probablement pas l'effort supplémentaire. En regardant le damier de près, vous remarquerez que le remplissage n'est pas constitué de carrés noirs et blancs, mais plutôt de carrés blancs et transparents. L'utilisation de blanc et de transparent peut parfois faciliter la perception des parties d'un objet que vous masquez : les zones blanches restent visibles et les zones transparentes seront découpées. Une zone blanche translucide aura le même effet qu'une nuance de gris. Il peut sembler contre-intuitif de couvrir les parties de l'objet que vous souhaitez conserver et d'exposer les parties qui seront cachées, mais c'est la façon dont le masquage a été défini dans la spécification SVG et c'est donc comme cela dans Inkscape.

Because clip paths are defined by a boundary and a concept of what's inside and outside that boundary, it's possible to use only a single path or object to define a clipping shape. Masks, on the other hand, are concerned with only the color of pixels, so it doesn't really matter whether your mask is made up of a single object or a whole load of objects inside a group. This allows you to create complex arrangements of colors and patterns which would be impossible to reproduce using a single path. This example uses a group made up of a few random objects as a mask. You can see that the repeating radial gradient of the rectangle, made up of a white-to-transparent transition, results in a similar pattern being visible from the masked red circle. But by adding extra black and white features to the mask group, you can “override” the pattern with explicit sections of transparency and opacity. One thing to note is the place where the black line crosses the white one: because the black line is on top, the pixels at that position are black, so that part of the masked object is transparent. It doesn't matter what's going on within the group, all that matters is the color of the final pixels. This may not be the best piece of abstract art in the world, but it would have been a lot harder to draw without using masks.

Parce que les chemins de découpe sont définis par une limite et un concept de ce qui est à l'intérieur et à l'extérieur de cette limite, il est possible d'utiliser un seul chemin ou objet pour définir une forme de découpage. Les masques, d'autre part, ne s'intéressent qu'à la couleur des pixels, de sorte que le nombre d'objets masqués (un seul ou tout un tas d'objets à l'intérieur d'un groupe) n'a pas vraiment d'importance. Cela vous permet de créer des arrangements complexes de couleurs et de motifs qui seraient impossibles à reproduire en utilisant un seul chemin.

Cet exemple utilise un groupe composé d'un petit nombre d'objets aléatoires en tant que masque. Vous pouvez voir que le dégradé radial répété du rectangle, composé d'une transition du blanc au transparent, donne un motif similaire dans le cercle rouge masqué. Mais en ajoutant d'autres éléments en noir et blanc au groupe de masque, vous pouvez « passer outre » le motif avec des zones explicites de transparence et d'opacité. Une chose à remarquer est l'endroit où la ligne noire traverse la blanche : parce que la ligne noire est sur ​​le dessus, les pixels à cette position sont noirs, de sorte que cette partie-là de l'objet masqué est transparente. Peu importe ce qui se passe au sein du groupe, ce qui compte c'est la couleur des pixels finaux. Ceci n'est sans doute pas un chef-d'œuvre de l'art abstrait, mais il aurait été beaucoup plus difficile de le faire sans l'aide de masques.

Although you can use masks to create complex arrangements of clipping and transparency, probably the most common use is simply to add “feathering” to the edges of a group so that it fades into the background. In that case all you need for your mask design is a strongly blurred white ellipse, as demonstrated in this wholly unseasonal greeting card design. Throughout this article I've referred to masks as being grayscale images. That's not strictly true – a mask can be any combination of colors that you want. However, anything other than white, black or gray will be converted into a grayscale image before it's used as a mask. This can make it difficult to predict the exact effect of a color on the resultant opacity, so I recommend using pure grayscales when drawing your masks in almost all cases.

Bien que vous puissiez utiliser des masques pour créer des arrangements complexes de découpage et de transparence, leur utilisation la plus courante consiste probablement à tout simplement adoucir les bords d'un groupe pour qu'il s'estompe petit à petit. Dans ce cas, tout ce dont vous avez besoin pour votre masque est une ellipse blanche fortement floutée, comme le montre cette carte de vœux on ne peut plus hors saison.

Tout au long de cet article, j'ai parlé des masques comme étant des images en niveaux de gris. Ce n'est pas tout à fait vrai - un masque peut être n'importe quelle combinaison de couleurs que vous souhaitez. Cependant, n'importe quelle couleur autre que blanc, noir ou gris sera convertie en image à niveaux de gris avant son utilisation comme masque. Cela peut rendre difficile la prédiction de l'effet exact d'une couleur sur l'opacité qui en résulte ; ainsi, dans presque tous les cas, je recommande d'utiliser des niveaux de gris purs lors de l'élaboration de vos masques.

issue74/inkscape.txt · Dernière modification : 2013/11/24 18:02 de andre_domenech