Introduction aux Fleximasks

Commençons par un exemple

Voici une photo :

la photo la photo

Vous souhaitez assombrir le ciel à l’aide du module d’exposition. Mais un arbre se détache sur le ciel, et il doit conserver son exposition.

Vous souhaitez donc masquer le ciel, puis en soustraire l’arbre.

Lorsque vous créez un nouveau masque flexible, un groupe « masque complet » s’affiche. Ce groupe comporte un opérateur, qui est par défaut maximum (union) :

1. groupe "masque complet" : maximum (union)

Un groupe combine ses éléments de bas en haut (à l’instar du Pixelpipe) à l’aide de son opérateur.

Pour simplifier, supposons que vous disposiez déjà de deux masques distincts recouvrant les deux éléments. Il peut s’agir de masques raster provenant d’autres modules, de formes simples, de canaux paramétriques ou d’objets complexes résultant d’une combinaison de ceux-ci. Cela n’a pas vraiment d’importance.

Si vous ajoutez vos deux éléments (ciel, puis arbre) au groupe msque complet, vous obtenez quelque chose comme ceci :

1. groupe "masque complet" : maximum (union)
2. ├ arbre
3. └ ciel

Cela donne :

Le masque complet (1) correspond à l’union du ciel (3) et de l’arbre (2).

Cependant, cela ne permettrait pas d’obtenir le masque souhaité. Une union rassemble tous les pixels de chaque élément ; ainsi, au lieu d’exclure l’arbre du masque, vous l’incluriez dans la zone masquée.

l’union du ciel et de l’arbre l’union du ciel et de l’arbre

Ce que vous voulez faire, en revanche, c’est soustraire l’arbre du ciel. Il faut donc remplacer l’opérateur masque complet par différence :

1. groupe "masque complet" : différence
2. ├ arbre
3. └ ciel

Cela donne :

Le masque entier (1) correspond au ciel (3) moins l’arbre (2).

C’est exactement ce que vous vouliez :

le ciel moins l’arbre le ciel moins l’arbre

Notez que l’ordre a son importance. Une différence conserve la ligne du bas et soustrait tout ce qui se trouve au-dessus. Si vous inversez les deux lignes, vous obtenez l’arbre moins le ciel, ce qui correspond simplement à la partie du tronc située sous l’horizon :

l’arbre moins le ciel l’arbre moins le ciel

Ajoutons un lac

La photo comporte maintenant un lac, et vous souhaitez l’assombrir lui aussi :

la photo, avec le lac la photo, avec le lac

Vous pourriez essayer d’ajouter le lac au groupe masque complet :

1. groupe "masque complet" : différence
2. ├ arbre
3. ├ lac
3. └ ciel

Cela se lit comme suit ::

Le masque complet (1) correspond au ciel (4) moins le lac (3) et l’arbre (2).

Ce n’est pas ce que vous souhaitez : la différence supprime tout ce qui se trouve au-dessus du ciel, donc le lac est également soustrait, et non ajouté.

le ciel moins le lac et l’arbre le ciel moins le lac et l’arbre

Ce que vous voulez faire, c’est soustraire uniquement l’arbre de l’union du ciel et du lac. Relisez bien :

soustraire uniquement l’arbre de l’union du ciel et du lac.

Vous avez donc besoin d’un autre groupe ! Vous devez calculer l’union du ciel et du lac avant de pouvoir en soustraire l’arbre !

Voici à quoi cela ressemble :

1. groupe "masque complet" : différence
2. ├ arbre
3. └ groupe « à atténuer » : maximum (union)
4.   ├ lac
5.   └ ciel

Et cela donne :

Le masque entier (1) correspond à ce que vous souhaitez atténuer (3), moins ce que vous ne souhaitez pas atténuer, c’est-à-dire l’arbre (2). À son tour, ce que vous souhaitez atténuer correspond à l’union du ciel (5) et du lac (4).

Cela donne exactement le résultat souhaité :

le masque correct le masque correct

Il existe plusieurs façons de procéder

Souvent, différents masques donnent le même résultat. Ici, l’arbre ne chevauche pas le lac, il n’y a donc rien à soustraire du lac. Vous pourriez tout aussi bien soustraire d’abord l’arbre du ciel, puis ajouter le lac :

1. groupe "masque complet" : maximum (union)
2. ├ lac
3. └ groupe "ciel sans arbre" : différence
4.   ├ arbre
5.   └ ciel

Voici comment lire ce texte :

Le masque complet (1) est l’union du ciel sans arbre (3) et du lac (2). À son tour, le ciel sans arbre correspond au ciel (5) moins l’arbre (4).

Et cela donne le même masque :

le même masque, construit autrement le même masque, construit autrement

Choisissez celui qui correspond le mieux à votre perception de la photo. Et gardez à l’esprit que, dans ce cas précis, les deux masques ne sont identiques que parce que l’arbre et le lac ne se chevauchent pas. Si une branche surplombait l’eau, la deuxième version la rajouterait au lac, et seule la première la maintiendrait hors du masque.

Lecture d’un masque

Un groupe contient les lignes auxquelles son opérateur s’applique. L’opérateur s’applique de bas en haut (comme les modules dans le pixelpipe). On lit chaque groupe comme suit :

l’[opérateur] de [l’élément du bas], …, [l’élément du haut]

ou, pour une différence :

[élément du bas] moins [tous les éléments situés au-dessus]

On lit l’ensemble du masque de l’extérieur vers l’intérieur et de bas en haut ; ainsi, dans notre exemple :

  1. Le masque complet est une différence : sa ligne inférieure (à atténuer) moins sa ligne supérieure (arbre)
  2. Sa ligne inférieure, à atténuer, est l’union de ciel et lac
  3. arbre est l’élément qui sera soustrait de à atténuer

En résumé : (ciel plus lac), moins arbre.

Comment y parvenir

Procédez de l’extérieur vers l’intérieur, en partant de la phrase qui décrit ce que vous voulez.

  1. Identifiez la dernière étape. Dans « ciel et lac, mais pas arbre », la dernière étape est « mais pas » : une coupure. Le masque entier est donc une différence.
  2. Identifiez ce qui est supprimé. Dans une différence, il s’agit de la ligne du bas. Ici, c’est « ciel et lac ». Comme il y a plusieurs éléments, ils forment leur propre groupe : un maximum (union) (pour les additionner), nommé à atténuer.
  3. Identifiez ce qui supprime : tout ce qui se trouve au-dessus de la ligne du bas. Ici, arbre.
  4. Répétez l’opération à l’intérieur de chaque nouveau groupe, jusqu’à ce que chaque ligne ne comporte plus qu’un seul élément.

Construisez ensuite le tout dans le panneau :

  1. Définissez l’opérateur de masque complet sur différence
  2. Ajoutez un groupe avec maximum (union), et renommez-le to dim (clic droit sur le groupe → renommer)
  3. à atténuer étant sélectionné, dessinez ciel et lac
  4. Cliquez à nouveau sur le titre de à atténuer pour le désélectionner, puis dessinez arbre : si aucun groupe n’est sélectionné, les nouvelles formes sont placées dans masque complet
  5. Si une ligne se retrouve au mauvais endroit, faites-la glisser : à atténuer doit être la ligne du bas de masque complet

La règle unique

Chaque groupe est une pile de lignes contenant un opérateur. Une ligne est soit un élément, soit un autre groupe. Lisez chaque groupe en partant de la ligne du bas vers le haut. Tout ce qui suit concerne le choix de l’opérateur et le classement des lignes dans le bon ordre.

La puissance de la composition

Une fois que vous en avez saisi l’essentiel, créer des masques plus complexes ne consiste qu’à ajouter davantage d’éléments. Il n’y a rien de nouveau à comprendre.

Par exemple, chaque élément de notre exemple pourrait être composé de plusieurs éléments. L’arbre pourrait être l’union de deux canaux paramétriques (un canal Hz pour sélectionner les feuilles, un autre pour le tronc et les branches) et de quelques coups de pinceau soustractifs pour nettoyer la sélection. Ce n’est pas un problème : l’élément arbre devient un groupe de différence. Au sein de ce groupe, vous placerez l’union des canaux paramétriques en bas, car vous souhaitez soustraire de cette union, et les coups de pinceau au-dessus.

Le résultat ressemblera à peu près à ceci :

1.  groupe "masque complet" : différence
2.  ├ groupe "arbre" : différence      <-- l'arbre devient un groupe
3.  │ ├ groupe "nettoyer" : maximum (union)
4.  │ │ ├ coup de pinceau N
    │ │ ├ ...
5.  │ │ └ coup de pinceau 1
6.  │ └ groupe "tronc, branches et feuilles" : maximum (union)
7.  │   ├ canal Hz "feuilles"
8.  │   └ canal Hz channel "tronc et branches"
9.  └ groupe "à atténuer" : maximum (union)
10.   ├ lac
11.   └ ciel

Le ciel et le lac pourraient eux-mêmes être une combinaison de canaux paramétriques et de formes. Peu importe. Le masque s’agrandit, mais le principe reste toujours le même.

Les opérateurs

Chaque image montre le résultat obtenu par un groupe composé de deux formes. Le cercle bleu correspond à la ligne du bas, le rose à la ligne du dessus ; le jaune représente le masque.

maximum (union), minimum (intersection), différence, exclusion maximum (union), minimum (intersection), différence, exclusion

opérateur en termes simples l’ordre a-t-il de l’importance ?
maximum (union) « ajouter » : tout ce que couvre n’importe quelle ligne non
minimum (intersection) « ne conserver que le chevauchement » : là où chaque ligne recouvre non
différence « découper » : la ligne du bas, moins toutes les lignes situées au-dessus oui
exclusion zones recouvertes par un nombre impair de lignes rarement*

Avec deux lignes, l’exclusion signifie « l’une ou l’autre, mais pas les deux » : le chevauchement est supprimé. Une troisième ligne rétablit la zone où les trois lignes se chevauchent.

* Uniquement avec trois lignes ou plus présentant des bords adoucis ou une opacité partielle.

Contours flous : les variantes d’union et d’intersection

Les masques ne se limitent pas à « à l’intérieur » ou « à l’extérieur » : les contours flous et l’opacité les rendent partiels. C’est pourquoi l’union et l’intersection se déclinent en plusieurs variantes. Toutes les variantes d’une famille se comportent de la même manière sur des formes pleines ; elles ne diffèrent que par la manière dont les zones partielles se combinent (les contours indiquent ici le point médian de chaque adoucissement) :

maximum (union), écran (union lisse), somme (union), minimum (intersection), produit (intersection) avec des formes adoucies maximum (union), écran (union lisse), somme (union), minimum (intersection), produit (intersection) avec des formes adoucies

opérateur en termes simples
maximum (union) la rangée la plus forte l’emporte ; le chevauchement des plumes peut laisser un pli
écran (union lisse) les plumes qui se chevauchent se fondent harmonieusement, sans plis
somme (union) les zones partielles s’additionnent, ainsi deux rangées de force moyenne donnent une force totale
minimum (intersection) la rangée la plus faible l’emporte ; les plumes qui se chevauchent peuvent laisser un pli
produit (intersection) fort uniquement là où toutes les rangées sont fortes ; s’estompe rapidement, pas de pli

En cas de doute, utilisez maximum (union) pour ajouter et minimum (intersection) pour restreindre.

L’ordre a son importance dans une différence

Une différence conserve la ligne du bas et supprime tout ce qui se trouve au-dessus. En inversant l’ordre des lignes, vous obtenez l’opération inverse :

différence avec les lignes dans les deux ordres différence avec les lignes dans les deux ordres

Ainsi, pour soustraire A de B : créez un groupe différence avec B en bas et A au-dessus. Formulez-le sous forme de phrase, en lisant de bas en haut : « B, moins A ».

Si le résultat est l’opposé de ce que vous souhaitiez, faites glisser les lignes pour les intervertir.

Des groupes à l’intérieur de groupes

Un groupe peut être une ligne d’un autre groupe, comme à atténuer dans l’exemple. Le résultat final se comporte alors comme une seule forme, de la même manière que les parenthèses fonctionnent en arithmétique.

Tous les masques ne nécessitent pas d’imbrication. « Les parties claires, uniquement à l’intérieur de ce dégradé » correspond à un seul groupe minimum (intersection) contenant un canal de luminance et un dégradé dessiné, dans n’importe quel ordre.

La méthode rapide : composer

Cliquez avec le bouton droit sur une ligne et choisissez « composer », puis un opérateur. La ligne est placée dans un nouveau groupe avec cet opérateur, en tant que ligne inférieure, avec un groupe vide au-dessus dans lequel dessiner. Pour découper quelque chose dans une forme finie, composez-la avec différence et dessinez dans le groupe vide.

Inversion

  • « Inverser » sur un élément (clic droit → Inverser) : cela sélectionne ce qui était auparavant exclu. « Tout sauf ce cercle ».
  • « Inverser la sortie » sur un groupe (clic droit → inverser la sortie) : inverse le résultat final du groupe.

Ces opérations ne donnent pas le même résultat lorsqu’un groupe comporte plusieurs lignes. Dans un groupe union de deux cercles, l’inversion de chaque cercle donne tout sauf la zone où ils se chevauchent. L’inversion de la sortie du groupe donne tout sauf les deux cercles.

Opacité

L’opacité s’applique à une ligne avant qu’elle ne soit combinée. Dans un groupe différence, un élément à 50 % d’opacité ne découpe qu’à mi-hauteur. L’opacité propre à un groupe s’applique à son résultat final.

Aide-mémoire

Je veux… construire
A et B ensemble maximum (union), dans n’importe quel ordre
Uniquement là où A et B se recoupent minimum (intersection), dans n’importe quel ordre
B sans A différence, B en bas, A au-dessus
A ou B, mais pas là où ils se chevauchent exclusion
Tout sauf A A, inversé
A et B, sans C différence : un groupe union de A et B en bas, C au-dessus
Coups de pinceau légers qui se fondent sans démarcation trame (union lisse)

Texte de Daniele Pighin traduit de l’anglais avec Deepl. Original ici.