This month, I’ll be continuing to look at the new Live Path Effects (LPEs) that were added in Inkscape 1.0.x and 1.1.x. Ellipse from points If you’re a frequent user of LPEs, you may already be familiar with the “Ellipse by 5 points” effect (covered in part 69 of this series). As the name suggests, this draws an ellipse that passes through the first five nodes of a path. This new LPE does the same thing, and much, much more. In fact, the name really doesn’t do justice to the capabilities it offers, as it not only allows for the creation of ellipses, but also circles, arcs, and segments. Whereas the old LPE provides no parameters to control its output, this new one comes with quite a few, not all of which are enabled at the same time.
Ce mois-ci, je vais continuer à étudier les nouveaux Effets de Chemin Interactifs (ECI - en anglais, Live Path Effects - LPE) qui ont été ajoutés dans Inkscape 1.0.x et 1.1.x.
Ellipse à partir de points
Si vous êtes un utilisateur fréquent des LPE, vous connaissez peut-être déjà l'effet « Ellipse par 5 points » (abordé dans la partie 69 de cette série). Comme son nom l'indique, cet effet dessine une ellipse qui passe par les cinq premiers nœuds d'un chemin. Ce nouveau LPE fait la même chose, et beaucoup, beaucoup plus. En fait, son nom ne rend pas vraiment justice aux capacités qu'il offre, car il permet non seulement de créer des ellipses, mais aussi des cercles, des arcs et des segments. Alors que l'ancien LPE ne fournit aucun paramètre pour contrôler sa sortie, le nouveau LPE en fournit un certain nombre, qui ne sont pas tous activés en même temps.
Despite all these extra controls, however, the basic functionality is still pretty intuitive, and benefits hugely from applying any changes to the parameters or path shape interactively, making it fun to play around with all the different options. Your starting point will always be a path to which the LPE is applied, although this effect cares about only the positions of the nodes, not the shape of the path segments. For demonstration purposes, however, all my examples will use straight line segments, and I’ll show the original path as a red line with diamonds marking the nodes (courtesy of the “Clone original” and “Show handles” LPEs). The black lines are the output from the LPE. Let’s start with the simplest case: a two-node line using the “Auto ellipse” method. In this case, the effect draws a circle using the two nodes in the path as points at either end of the circle’s diameter. Drag one of the nodes around, and the circle will scale and rotate accordingly. Let’s see what happens if our source path has three nodes, rather than two.
Toutefois, malgré toutes ces commandes supplémentaires, la fonctionnalité de base reste assez intuitive, et bénéficie énormément de l'application interactive des modifications apportées aux paramètres ou à la forme de la trajectoire, ce qui rend amusant le fait de jouer avec toutes les différentes options. Votre point de départ sera toujours un chemin auquel le LPE est appliqué, bien que cet effet ne s'intéresse qu'aux positions des nœuds et non à la forme des segments du chemin. Pour les besoins de la démonstration, cependant, tous mes exemples utiliseront des segments de ligne droite, et je montrerai le chemin original comme une ligne rouge avec des diamants qui marquent les nœuds (grâce aux LPE « Cloner l'élément original » et « Afficher les poignées »). Les lignes noires sont la sortie de la LPE. Commençons par le cas le plus simple : une ligne à deux nœuds utilisant la méthode « Auto ellipse ».
Dans ce cas, l'effet dessine un cercle en utilisant les deux nœuds de la trajectoire comme points aux deux extrémités du diamètre du cercle. Faites glisser l'un des nœuds, et le cercle s'agrandira et tournera en conséquence. Voyons ce qui se passe si notre chemin source comporte trois nœuds au lieu de deux.
Again we have a circle, but this time it circumscribes the triangle created by the three nodes. Once more, dragging the nodes around the page will give you a good idea of how the size and position of the circle relates to the node positions. With three nodes, some of the LPE parameters start to become useful to us. When enabled, the “Arc” checkbox draws an arc connecting the three nodes, rather than closing the whole circle. Enabling the “Other arc side” checkbox instead draws the “other” arc which forms the remainder of the original circle. “Slice arc” can be used with either type of arc to render it as a segment (i.e. a pie-chart “slice”) rather than an arc, by adding straight path segments that join the end nodes to the center of the circle.
Nous avons à nouveau un cercle, mais cette fois-ci, il circonscrit le triangle créé par les trois nœuds. Une fois de plus, faire glisser les nœuds sur la page vous donnera une bonne idée de la façon dont la taille et la position du cercle sont liées aux positions des nœuds.
Avec trois nœuds, certains des paramètres LPE commencent à nous être utiles. Lorsqu'elle est activée, la case à cocher « Arc » dessine un arc reliant les trois nœuds, plutôt que de fermer le cercle entier. En activant la case « Arc opposé », on dessine plutôt l'« autre » arc qui forme le reste du cercle d'origine. L'option « Camembert sur l'arc » peut être utilisée avec l'un ou l'autre type d'arc pour le rendre sous la forme d'un segment (c'est-à-dire une « tranche » de camembert) plutôt que d'un arc, en ajoutant des segments de chemin droit qui relient les nœuds d'extrémité au centre du cercle.
With three nodes, more of the options in the “Method” pop-up menu will also work. The first two (“Auto ellipse” and “Force circle”) just produce the result we’ve already seen. “Isometric circle” treats the path as having straight line segments, even if it hasn’t, and uses the first two segments to define the edges of an isometric rectangle into which it fits an ellipse that appears as if a circle is rendered in that isometric projection. That sounds complex, but if you do much work with isometric or oblique projections, you’ll know exactly what this is for: in short, draw your path with suitable angles (e.g. 120° for isometric, 135° for oblique), and it will render “circles” that are appropriately distorted for the projection. The last two options in the pop-up are thankfully easier to describe: “Steiner ellipse” draws an ellipse that circumscribes the triangle created by the three nodes, while “Steiner inellipse” draws one that inscribes it. The image below shows the “Isometric circle” output, followed by the two ellipses, for the same path that I used earlier. Adding a fourth node to our path is required for the remaining entry in the pop-up: “Perspective circle”. This treats your four nodes as defining a square in a perspective view, and renders a “circle” that fits within that square. This is perhaps most clearly demonstrated using a closed path arranged to give a classic perspective view.
Avec trois nœuds, un plus grand nombre d'options du champ déroulant « Méthode » fonctionneront également. Les deux premières (« Auto ellipse » et « Cercle ») produisent simplement le résultat que nous avons déjà vu. « Cercle isométrique » traite le chemin comme ayant des segments de ligne droite, même s'il n'en a pas, et utilise les deux premiers segments pour définir les bords d'un rectangle isométrique dans lequel il insère une ellipse qui apparaît comme si un cercle était rendu dans cette projection isométrique. Cela semble complexe, mais si vous travaillez beaucoup avec des projections isométriques ou obliques, vous saurez exactement à quoi cela sert : en bref, dessinez votre trajectoire avec des angles appropriés (par exemple 120° pour l'isométrique, 135° pour l'oblique), et il restituera des « cercles » qui sont déformés de manière appropriée pour la projection.
Les deux dernières options de la fenêtre pop-up sont heureusement plus faciles à décrire : « Ellipse de Steiner » dessine une ellipse qui circonscrit le triangle créé par les trois nœuds, tandis que « Inellipse de Steiner » en dessine une qui l'inscrit. L'image ci-dessous montre la sortie « Cercle isométrique », suivie des deux ellipses, pour le même chemin que j'ai utilisé précédemment.
L'ajout d'un quatrième nœud à notre chemin est nécessaire pour l'entrée restante de la liste : « Cercle en perspective ». Cela traite vos quatre nœuds comme définissant un carré dans une vue en perspective, et rend un « cercle » qui s'inscrit dans ce carré. La démonstration la plus évidente est sans doute l'utilisation d'un chemin fermé disposé de manière à obtenir une vue en perspective classique.
With the red lines removed, we can now also see what the remaining checkboxes do. The “Frame (isometric rectangle)” option will draw a bounding box around your circle or ellipse. By default this will be a rectangle, defined by the size of the major and minor axes of the ellipse, but you can use the “Axes rotation” spinbox to rotate the box around the ellipse, resulting in it becoming a parallelogram if the ellipse’s axes aren’t perfectly aligned with the global x and y axes. The “Axes” checkbox simply adds two lines, joining the mid-points of opposite sides of that bounding box in order to divide it into four equal areas. When the “Perspective circle” method is used, however, two alternative options become available. The “Perspective square” checkbox draws lines marking the “square” in perspective space that the “circle” is inscribing: essentially this draws a shape connecting all of the four nodes, even if the original path wasn’t a closed shape. The “Perspective axes” renders a pair of axes as they would appear in perspective, leading to a rather different outcome compared with the plain “Axes” option, especially if you rotate them using the spinbox.
Les lignes rouges ayant été supprimées, nous pouvons maintenant voir ce que font les autres cases à cocher. L'option « Encadrement (rectangle isometrique) » dessine une boîte de délimitation autour de votre cercle ou ellipse. Par défaut, il s'agira d'un rectangle, défini par la taille des axes majeurs et mineurs de l'ellipse, mais vous pouvez utiliser le compteur « Rotation des axes » pour faire pivoter le cadre autour de l'ellipse, ce qui le transformera en parallélogramme si les axes de l'ellipse ne sont pas parfaitement alignés avec les axes x et y globaux. La case à cocher « Axes » ajoute simplement deux lignes, reliant les points médians des côtés opposés de cette boîte englobante afin de la diviser en quatre zones égales.
Toutefois, lorsque la méthode « Cercle de perspective » est utilisée, deux autres options sont disponibles. La case à cocher « Carré en perspective » dessine des lignes marquant le « carré » dans l'espace en perspective que le « cercle » inscrit : cela dessine essentiellement une forme reliant les quatre nœuds, même si le chemin original n'était pas une forme fermée. La case « Axes de la perspective » rend une paire d'axes tels qu'ils apparaîtraient en perspective, ce qui donne un résultat assez différent par rapport à l'option « Axes » ordinaire, surtout si vous les faites pivoter à l'aide du compteur.
The image below compares the two types of bounding box and axes when used on the same perspective circle. The left shows the result of the “Frame” and “Axes” checkboxes, while the images on the right show the corresponding “Perspective” versions. In both cases, the top image shows a rotation of 0° whereas the bottom image shows the result of increasing that value to 15°. To complete our tour of the checkboxes, the “Source path” option does what you might expect: it renders a copy of the original source path as part of the output. Due to the nature of LPEs, the source path is drawn in the same style as the ellipse (and axes and bounding box, if used), so if you want it to appear differently – as I did in my examples – you’ll need to use a “Clone original” or “Fill between many” LPE on a sacrificial path in order to render it as a different object for styling purposes. For general use, however, enabling this option can make it a lot easier to see what’s going on with your ellipse as you interactively tweak it, even if you then turn it off again once things are positioned correctly.
L'image ci-dessous compare les deux types de boîte englobante et d'axes lorsqu'ils sont utilisés sur le même cercle en perspective. L'image de gauche montre le résultat des cases à cocher « Encadrement » et « Axes », tandis que les images de droite montrent les versions correspondantes de la « Perspective » . Dans les deux cas, l'image du haut montre une rotation de 0° alors que l'image du bas montre le résultat de l'augmentation de cette valeur à 15°.
Pour terminer notre tour d'horizon des cases à cocher, l'option « Chemin source » fait ce à quoi on peut s'attendre : elle rend une copie du chemin source original en tant que partie de la sortie. En raison de la nature des LPE, le chemin source est dessiné dans le même style que l'ellipse (et les axes et la boîte englobante, le cas échéant), donc si vous voulez qu'il apparaisse différemment - comme je l'ai fait dans mes exemples - vous devrez utiliser un LPE « Cloner l'élément original » ou « Remplir dans les nuées » sur un chemin sacrifié afin de le rendre comme un objet différent à des fins de style. Cependant, pour une utilisation générale, l'activation de cette option permet de voir beaucoup plus facilement ce qui se passe avec votre ellipse lorsque vous la modifiez de manière interactive, même si vous la désactivez une fois que les choses sont correctement positionnées.
Lastly, if we add a fifth node to our path (with Method set to “Auto ellipse”) we end up with the same result as the old LPE: an ellipse that circumscribes the five nodes. If you want full control over your ellipse, this is probably a better option than either of the Steiner methods. There’s one final thing to mention regarding this LPE: the developers should be commended for putting the effort in to produce really useful tooltips. For example, if you can’t remember how many nodes your path needs for each different method, just hover your mouse over the pop-up for a useful reminder.
Enfin, si nous ajoutons un cinquième nœud à notre chemin (avec la méthode réglée sur « Ellipse auto »), nous obtenons le même résultat que l'ancienne LPE : une ellipse qui circonscrit les cinq nœuds. Si vous voulez avoir un contrôle total sur votre ellipse, c'est probablement une meilleure option que l'une ou l'autre des méthodes Steiner.
Il y a une dernière chose à mentionner concernant cette LPE : les développeurs doivent être félicités pour avoir fait l'effort de produire des infobulles vraiment utiles. Par exemple, si vous ne vous souvenez pas du nombre de nœuds dont votre chemin a besoin pour chaque méthode différente, il suffit de passer votre souris sur la fenêtre contextuelle pour obtenir un rappel utile.
Offset The Offset LPE is pretty straightforward, and does what its name suggests. You may be familiar with the Path > Dynamic Offset feature which puts a handle on your path that you can drag to adjust the amount of offset, letting you create a shape that insets or outsets the original path. In doing so, it modifies the original, unlike the Path > Linked Offset feature that creates a second path which maintains a live linkage to the original. The LPE falls somewhere between these two: there is a live link to the original path shape, but that path is not included in the final output, so, despite this link, the result still leaves you with only one path rather than two. In practice, therefore, this LPE is closer to the Dynamic Offset feature, only with more options. Let’s look at an example. Here I’ve created a crescent shape by performing a Boolean difference operation between two circles. I’ve also adjusted the nodes of the bottom point very slightly in order to demonstrate some aspects of the LPE later on. In both these cases I’ve made a copy of the original shape in blue, but applied an offset to generate the red version. The left-hand image shows the result of the Path > Dynamic Offset feature, while the right-hand version shows the LPE equivalent. As you can see, they look identical.
Décalage
Le LPE Décalage est assez simple et fait ce que son nom suggère. Vous connaissez peut-être la fonction Chemin > Décalage dynamique qui place une poignée sur votre chemin que vous pouvez faire glisser pour ajuster la quantité de décalage, ce qui vous permet de créer une forme qui s'insère dans, ou entoure, le chemin d'origine. Ce faisant, elle modifie l'original, contrairement à la fonction Chemin > Décalage lié qui crée un deuxième chemin qui conserve un lien vivant avec l'original. Ce LPE se situe quelque part entre les deux : il existe un lien vivant avec la forme du chemin d'origine, mais ce chemin n'est pas inclus dans la sortie finale, donc, malgré ce lien, le résultat vous laisse toujours avec un seul chemin au lieu de deux. En pratique, ce LPE est ainsi plus proche de la fonction de décalage dynamique, mais avec plus d'options.
Prenons un exemple. Ici, j'ai créé une forme de croissant en effectuant une opération de différence booléenne entre deux cercles. J'ai également ajusté très légèrement les nœuds du point inférieur afin de démontrer plus tard certains aspects du LPE. Dans ces deux cas, j'ai fait une copie de la forme originale en bleu et j'ai appliqué un décalage pour générer la version rouge. L'image de gauche montre le résultat de la fonction Chemin > Décalage dynamique, tandis que la version de droite montre le LPE équivalent. Comme vous pouvez le constater, ils sont identiques.
If that was all there was to this LPE, it might still be useful as part of an effect chain, but not so much as an effect in its own right. But once we consider the various settings that it offers, it quickly becomes clear that the LPE offset is a far more powerful beast than what went before it. Let’s look at the available parameters. Dealing with these out of order, the “Unit” pop-up should be pretty self-explanatory, setting the type of units used for the “Offset” parameter which, in turn, is used to set the amount of offset that is applied to the path. It can be a positive value for an outset, or a negative value for an inset – but, in practice, it’s usually more effective to switch to the Node tool (F2) and drag the small, red, circular handle on the canvas, to adjust the offset by eye. The “Force update” checkbox determines whether or not the path updates live as you drag the handle, or updates only when you release the mouse button. Usually you should leave this enabled, unless you have a slow machine or a complex path which makes the updates jerk and stutter.
Si c'était tout ce qu'on pouvait se faire avec ce LPE, il pourrait encore être utile en tant que partie d'une chaîne d'effets, mais pas tellement en tant qu'effet à part entière. Mais une fois que l'on considère les différents réglages qu'il offre, il devient rapidement clair que le LPE Décalage est une bête bien plus puissante que ce qui l'a précédé. Examinons les paramètres disponibles.
Le champ déroulant « Unité » devrait être assez explicite, il définit le type d'unités utilisées pour le paramètre « Décalage » qui, à son tour, est utilisé pour définir la quantité de décalage qui est appliquée au chemin. Il peut s'agir d'une valeur positive pour englober ou d'une valeur négative pour s'insérer - mais, en pratique, il est généralement plus efficace de passer par l'outil Node (F2) pour faire glisser la petite poignée circulaire rouge sur le canevas et ajuster le décalage à l'œil. La case à cocher « Aperçu en direct » détermine si le chemin se met à jour en direct lorsque vous faites glisser la poignée, ou s'il ne se met à jour que lorsque vous relâchez le bouton de la souris. En général, vous devriez laisser cette option activée, à moins que votre machine soit lente ou que le chemin soit complexe, ce qui rendrait les mises à jour saccadées.
The “Join” pop-up has the most effect on the shape of the path. In the previous image it was deliberately set to “Rounded” to reproduce the effect of the Dynamic Offset feature, but here’s a demonstration of how each entry appears with this particular shape. It’s worth noting that the result you’ll see is extremely dependent on the shape of your source path. In particular, look at the difference between the two pointed corners in the extrapolated joins, after making only minor tweaks to the nodes of the bottom point. As this shows, tight corners are a particular issue and increasing the “Mitre limit” value will allow some corners to appear that would otherwise be cut off. In the previous examples, increasing this value to 10, for example, allows most of the shapes to extend to give far more pointed ends. The main exceptions to this rule are the Beveled and Rounded types, which don’t take the mitre limit into account. The best option is usually to try each join type, and adjust the mitre limit and/or the individual nodes to get the result you want.
Le champ déroulant « Raccord » est celui qui a le plus d'effet sur la forme du chemin. Dans l'image précédente, elle a été délibérément réglée sur « Arrondi » pour reproduire l'effet de la fonction de décalage dynamique, mais voici une démonstration de la façon dont chaque entrée apparaît avec cette forme particulière.
Il est important de noter que le résultat que vous obtiendrez dépendra fortement de la forme de votre chemin source. En particulier, regardez la différence entre les deux coins pointus dans les jointures extrapolées, après n'avoir apporté que des modifications mineures aux nœuds du point inférieur. Comme le montre cet exemple, les coins serrés sont un problème particulier et l'augmentation de la valeur de « Limite du raccord » permettra l'apparition de certaines pointes qui seraient autrement coupées. Dans les exemples précédents, l'augmentation de cette valeur à 10, par exemple, permet à la plupart des formes de s'étendre pour donner des extrémités beaucoup plus pointues. Les principales exceptions à cette règle sont les types Biseauté et Arrondi, qui ne prennent pas en compte la limite du raccord. La meilleure solution consiste généralement à essayer chaque type d'assemblage et à ajuster la limite du raccord et/ou les nœuds individuels pour obtenir le résultat souhaité.
The Extrapolated Arc join types are particularly interesting. These try to follow the curves of your path to form a more natural join, rather than just projecting straight lines as a mitre does. When working with curved paths, these are well worth trying. If, however, you really want to project the pointiest of mitred corners regardless of the mitre limit, choose any join type other than Beveled or Rounded, and check the “Force mitre” option. Finally, it’s worth noting that this LPE also works with open paths, whereas the Dynamic Offset feature automatically closes them when you try to use it. These two LPEs both offer features that are head-and-shoulders above the options that Inkscape provided previously, and the developers should be applauded for continuing to push the boundaries of what path effects are capable of.
Les types de raccords en Arc extrapolé sont particulièrement intéressants. Ils essaient de suivre les courbes de votre chemin pour former un joint plus naturel, plutôt que de projeter des lignes droites comme le fait un raccord. Lorsque vous travaillez avec des chemins courbes, ces types d'assemblage valent la peine d'être essayés. Toutefois, si vous voulez vraiment projeter les coins raccordés les plus pointus, quelle que soit la limite du raccord, choisissez un type de joint autre que Biseauté ou Arrondi, et cochez l'option « Forcer le raccord ».
Enfin, il convient de noter que ce LPE fonctionne également avec des chemins ouverts, alors que la fonction de décalage dynamique les ferme automatiquement lorsque vous essayez de l'utiliser.
Ces deux LPE offrent tous deux des fonctionnalités qui dépassent de loin les options qu'Inkscape offrait auparavant et les développeurs devraient être applaudis parce qu'ils continuent à repousser les limites de ce que les effets de chemin sont capables de faire.