Aller au contenu

Drawings, art layers et subart

Tutoriel vidéo — bientôt disponible

Un drawing Harmony n'est pas une seule image. C'est quatre couches empilées — Underlay, Colour Art, Line Art, Overlay — et OSA vous laisse viser n'importe laquelle avec de l'illustration, en empiler plusieurs sur une seule, et le faire par exposition.

La table des art layers

Les quatre art layers

De haut en bas, dans l'ordre où Harmony les dessine :

Couche Tag Typiquement
Overlay Art OL effets peints par-dessus tout
Line Art LA les traits du dessin — la valeur par défaut
Colour Art CA aplats et peinture
Underlay Art UL roughs, repères, tout ce qui passe sous la peinture

Une illustration sans tag d'art layer va sur Line Art. Ce défaut est une constante unique lue par le collecteur, l'Inspector et la logique de pile, si bien qu'il y a exactement une réponse à « où atterrit l'art non taggé ? ».

Lire la table

La table Art Layers de l'Inspector est la vérité sur un drawing :

Colonne Ce qu'elle dit
Art Layers les quatre couches, plus les subart imbriquées dessous
Type Vector ou Bitmappar couche, pas par drawing
Frames combien d'expositions cette couche porte réellement de l'art

Un drawing peut être vectoriel et bitmap à la fois

Line Art en vectoriel et Colour Art en bitmap est légal dans Harmony, et OSA le produit. C'est pour cela que Type est une colonne de cette table et non un réglage du drawing : le type appartient à chaque couche, décidé par l'illustration qui y atterrit. Un interrupteur unique sur le conteneur ne pourrait que se tromper sur la moitié d'entre elles.

Chaque ligne porte ses propres boutons :

Bouton Fait
+ ajouter de l'art à cette couche — un fichier, ou toute une séquence
remplacer ce qui s'y trouve
vider la couche

Subart layers : une art layer, plusieurs images

Une art layer peut contenir plus d'une image. Ces images supplémentaires sont des subart layers, et elles se lisent comme une pile.

Overlay Art          ← the layer
└── Subart-000       ← a track on it

Une image ne paie pas la hiérarchie. La première séquence qui atteint une couche vit sur la ligne de l'art layer elle-même, à plat — il n'y a pas de track à déplier, parce qu'il n'y a encore rien à ordonner.

La deuxième passe dessous, et la première ne bouge pas. L'art layer garde son illustration et la nouvelle venue devient un enfant, en bas de la pile. Rien ne bouge sous votre main : la ligne que vous venez d'importer est là où vous l'avez laissée.

Cela découle du modèle, pas du goût : ici un slot porte de l'illustration et a des enfants en même temps — exactement comme Photoshop traite un calque, et comme le collecteur le lit. Pousser la première image ailleurs réarrangerait l'arbre pour dire ce qu'il disait déjà.

La promotion existe toujours, pour le seul cas qui en a besoin : placer une track au-dessus de l'illustration propre de la couche. Il n'y a pas d'index au-dessus de la ligne de la couche : y faire glisser un slot pousse donc cette illustration dans une track, et le nouveau venu prend le dessus. Le geste, c'est le glisser ; le menu contextuel dit la même chose en toutes lettres — « Move this layer's artwork into the stack ».

L'ordre de l'arbre est l'ordre de la pile : le premier enfant est le dessus. Le collecteur lit exactement cela, donc ce que vous voyez dans l'arbre est ce qui se composite dans Harmony.

Pourquoi imbriqué et non des frères à plat

Deux frères revendiquant la même art layer est une erreur dans cette application — OSA les peint tous les deux en rouge et refuse l'opération. L'imbrication préserve l'invariant : il y a toujours exactement un Overlay sur la frame, et la pile en est le contenu.

Les noms sont à vous, et la profondeur n'a pas de plafond

Subart-000 n'est que le nom par défaut d'une track qui naît — le même défaut qu'Octo Vector Bridge utilise pour nommer une passe. Renommez-la, dans l'un ou l'autre outil, comme le plan l'exige. Rien en aval ne s'appuie sur cette chaîne : OSA lit un dossier de tracks par structure, en prenant les numérotées (01_contour, 02_detail) dans l'ordre du numéro, puis les non numérotées par ordre alphabétique. Une passe renommée rim_light s'importe exactement comme une passe laissée telle quelle.

Ce que les noms de dossiers doivent dire, c'est l'art layer : OSA lit Underlay, Colour Art / Color Art, Line Art, Overlay, les indices ink et line, et les sigles UL / CA / LA / OL comme des mots entiers — la même grammaire qu'OVB écrit, donc un export tombe directement en place. (Des mots entiers à dessein : un dossier nommé Fola ne doit pas devenir Line Art parce qu'il en contient les lettres.)

Et une pile n'a pas de plafond. Une track peut contenir des tracks, sur autant de niveaux que vous voulez — le + de n'importe quelle ligne ajoute une séquence à l'intérieur de cette ligne, un import de dossier lit les tracks imbriquées récursivement, et le glisser dans l'arbre fait de même. Aussi profond que cela aille, tout s'aplatit dans l'unique art layer au bout; la profondeur sert à organiser comme vous pensez, pas à être vue un jour par Harmony.

Chaque track dit quel type de donnée elle porte

Une ligne subart porte l'icône de son type de contenu, lu depuis le fichier source — pas depuis un réglage :

Signifie
vectoriel — un .svg écrit en traits natifs, ou un .tvg
raster — un PNG, TGA, TIFF, JPEG ou un calque PSD

Les deux sont dessinés pour être distingués d'un coup d'œil, parce qu'à 14 pixels vous lisez la forme, pas le détail :

  • vectoriel est un point d'ancrage sur une courbe — un carré bleu plein posé sur une courbe en S claire qui le traverse. C'est la poignée de Bézier que tout programme de dessin affiche : un point que l'on peut saisir, sur une ligne définie par des maths.
  • raster est un damier — une grille deux par deux de carrés clairs et sombres dans un cadre gris. C'est la grille de pixels, et le même damier que tout éditeur d'images emploie pour dire « ce sont des échantillons, pas des formes ».

L'un est une courbe encore modifiable ; l'autre est une grille de valeurs. C'est toute la différence entre les deux formats, et toute la différence entre les deux icônes.

Une art layer ne peut pas mélanger vectoriel et raster

L'art layer de Harmony est l'un ou l'autre. Empilez un .svg et un .png sur la même Colour Art et ils ne peuvent pas être écrits tous les deux.

La track du dessus fixe le type de la couche, et les tracks de l'autre type sont ignorées — nommées, une par une, dans le rapport d'import :

vector and bitmap in one art layer: the top track is vector, so 2 bitmap track(s) were skipped (flats.png, shadow.png)

C'est une note, pas un échec : la construction a eu lieu, simplement pas en entier. Et les tracks ignorées restent dans votre arbre de staging — OSA n'aplatit que ce qui a réellement atterri, donc rien de ce que vous avez créé n'est supprimé pour avoir perdu une pile. Déplacez-les vers une autre art layer, ou convertissez-les, et elles atterriront la fois suivante.

Deux tracks vectorielles ou plus sur une même couche, c'est très bien : elles cohabitent, dessinées de la base vers le haut, et la dernière dessinée passe au-dessus.

Déplacer l'illustration d'un endroit à l'autre

Rien ici n'est à sens unique. Deux menus contextuels couvrent les déplacements, et ils répondent à deux questions différentes.

Dans l'arbre : envoyer une couche vers une autre couche

Clic droit sur une art layer dans l'arbre de staging et trois sous-menus apparaissent, chacun listant les quatre couches :

Verbe Fait
Move to l'illustration quitte cette couche et atterrit sur celle-là
Copy to elle y atterrit et reste ici
Swap with les deux couches échangent leur contenu

Ainsi, des aplats arrivés sur Line Art passent sur Colour Art sans rien réimporter, et une paire arrivée à l'envers se corrige d'un seul Swap.

Chaque destination est décidée par un plan avant que vous ne la voyiez : OSA calcule ce qui arriverait à chacune des quatre couches et n'allume que celles qui ont quelque chose à faire. Une destination impossible est grisée avec la raison dans son info-bulle, plutôt qu'absente — dans une application sans prévisualisation, une entrée qui meurt en silence se lit comme un bug.

Sur le conteneur, cela vaut pour toutes les frames

Faites un clic droit sur le dessin plutôt que sur une couche, et les trois mêmes verbes s'appliquent à toutes ses frames d'un coup. C'est le même plan et la même action, à qui l'on remet toutes les couches déplaçables du conteneur — cent frames redirigées en un geste, et un seul Ctrl+Z.

Dans le panneau Art Layers : conteneur ⇄ pile

Clic droit sur une ligne du panneau Art Layers de l'Inspector : le menu propose le déplacement que cette ligne peut faire.

Sur cette ligne L'entrée Ce qu'elle fait
le dessin Move the drawing's artwork into <Layer> l'illustration propre du dessin cesse d'être la sienne et devient une piste sur la couche que son menu déroulant nomme
une art layer Move this layer's artwork into the stack l'illustration posée sur la ligne de la couche descend dans une piste, libérant le dessus de la pile
une piste subart Use as <Layer>'s own artwork la piste sort de la pile et devient l'illustration propre de la couche
une piste subart Use as the drawing's own artwork pareil, mais elle devient l'illustration du dessin

Les icônes sont celles du panneau lui-même. La ligne du dessin porte l'icône de frame, chaque couche porte sa pastille — et une piste porte son type de donnée, vectoriel ou bitmap, lu dans son fichier. Les deux lignes de piste ci-dessus montrent la même icône bitmap seulement parce que c'est une piste d'exemple : les deux entrées existent sur toute piste, quel que soit son type.

C'est cette paire que l'on utilise pour dire « celle-ci passe au-dessus » sans glisser : poussez l'illustration du conteneur dans la pile, puis remontez à sa place la piste voulue.

Les refus sont écrits, pas cachés. L'entrée grise dit lequel s'applique :

  • « this slot carries no artwork » — il n'y a rien à déplacer ;
  • « this slot has slots inside it — its children would be left with no parent » ;
  • « <Layer> already has its own artwork — move that one into the stack first ».

La dernière est l'invariant sur lequel repose tout le panneau : une ligne, une illustration. Deux images atterrissant en silence sur le même slot remplaceraient le dessin de quelqu'un, et c'est précisément ce que la promotion existe pour empêcher.

Les séquences atterrissent sur une couche, pas sur le drawing

Déposez une séquence de 120 fichiers sur Colour Art et OSA calcule les atterrissages frame par frame. Il vous le dit, avant de faire quoi que ce soit :

  • combien de nouvelles frames la séquence impose (elle est plus longue que le conteneur),
  • combien de frames existantes se retrouvent sans art sur cette couche (elle est plus courte),
  • quelles art layers sont promues en conteneurs.

Ni une séquence plus longue ni une plus courte n'est une erreur. Les deux sont dites.

Pourquoi un conteneur peut malgré tout porter de l'art

C'est la question que l'arbre ne cesse de soulever, et la réponse est la même que dans Concepts :

Chaque ligne est la même ligne. Seules diffèrent les cases cochées.

Un drawing arrivé comme un simple PNG peut devenir un conteneur dès que vous glissez quelque chose dessus. Si devenir parent signifiait perdre son art, chaque glisser-déposer serait une occasion de détruire un drawing en silence. Le conteneur garde donc ce qu'il avait, et l'art se tient en pair des enfants au lieu d'être remplacé par eux.

Voilà pourquoi vous verrez ceci, et pourquoi c'est correct :

  • une frame avec son propre art et des art layers en dessous,
  • une art layer avec sa propre image et des subart layers en dessous.

Ces deux-là sont les seules lignes qui portent de l'art. Un nœud drawing n'en porte pas — c'est un Read pointant vers un élément, et dans Harmony les pixels vivent toujours dans un cel exposé. Les nœuds de structure, les générateurs et les effets non plus.

Alors quand une ligne qui porte de l'art devient un nœud drawing, l'art ne disparaît pas et ne reste pas sur place : OSA crée le dossier intrinsèque Frames avec une frame 1 dedans, et l'art migre vers le bas à l'intérieur. Un seul domicile, jamais deux — deux copies feraient lire deux fois la même source au collecteur et l'écrivain enregistrerait la seconde lecture comme une perte.

Voir Concepts pour la table complète de ce qui porte de l'art et de ce qui n'en porte pas.

La combinaison est résolue par la politique de fusion au moment de l'Assemble, pas en jetant quoi que ce soit :

Situation Ce que fait Assemble
Une frame a son propre art et des art layers l'art de la frame fusionne par-dessus les art layers qu'elle vise
Une art layer a plusieurs tracks elles s'aplatissent en une image, dans l'ordre de l'arbre, celle du dessus en premier
Un conteneur vise une couche qui a déjà de l'art la couche visée reçoit ; rien d'autre n'est touché
Une ligne portant de l'art devient un nœud drawing un dossier Frames et une frame 1 apparaissent, et l'art passe dans la frame

La pile n'existe que dans OSA

C'est le point à énoncer très clairement, parce qu'il change ce que vous devez vous attendre à trouver dans Harmony ensuite.

Harmony n'a pas de subart layers. Un drawing y possède exactement quatre couches internes — Underlay, Colour Art, Line Art, Overlay — et c'est tout le vocabulaire. La pile que vous construisez dans l'arbre est une structure d'écriture : une façon de dire « ces cinq images vont toutes sur Overlay, dans cet ordre » sans les fusionner à la main d'abord.

À l'assemblage, la pile est consommée. Chaque image est composée vers le bas dans l'unique art layer visée, dans l'ordre de la pile, et ce qui arrive dans Harmony est un drawing normal avec un Overlay normal. Rien dans la scène ne se souvient qu'il y avait cinq pistes — ce souvenir vit dans votre arbre de staging, et dans la session qu'OSA enregistre.

L'ordre, de haut en bas

Trois règles décident de ce qui couvre quoi, et elles se composent :

  1. L'art propre de la frame est toujours au sommet — au-dessus de tout ce que portent ses art layers. Il atterrit sur la couche visée par le Target Layer de la frame. Une frame visant Line Art couvre donc l'image propre du conteneur Line Art et toutes ses pistes.
  2. Un conteneur est au-dessus de ses enfants. Une art layer qui a une image et des subart layers en dessous place son image au sommet de sa propre pile.
  3. L'ordre de l'arbre est l'ordre de la pile, premier enfant au sommet — entre art layers, et entre les pistes de l'une d'elles.

Lu comme une seule image, pour une frame visant Line Art :

1l'art propre de la frameTarget Layer → Line Art
2l'image propre du conteneur Line Artconteneur au-dessus des enfants
3piste subart — premier enfantordre de l'arbre
4piste subart — un bitmapignorée : cette couche est vectorielle
↓ aplati à l'assemblage ↓
=une couche Line Art d'Harmonyvectorielle ; aucune piste ne survit

La ligne 4 mérite qu'on s'y arrête. C'est une piste bitmap sur une couche vectorielle, et Harmony n'a nulle part où la mettre : une art layer est d'un type ou de l'autre. Le dessus de la pile décide — ici le dessus est vectoriel, donc le bitmap reste dehors, nommé dans le rapport d'import, et conservé dans votre arbre, pour que vous puissiez le déplacer, le convertir, ou réordonner la pile et réessayer.

Déplacez ce même bitmap sur Colour Art et rien n'est perdu, parce que là il est le dessus :

1l'image propre du conteneur Colour Artdessus de cette pile
2piste subart — un autre bitmapmême type, pas de conflit
↓ aplati à l'assemblage ↓
=une couche Colour Art d'Harmonybitmap

Les autres art layers du dessin sont construites de la même façon, chacune dans sa couche — Underlay, Colour Art, Line Art et Overlay ne se mélangent jamais entre elles.

C'est pourquoi l'arbre mérite d'être gardé

Comme Harmony ne peut pas contenir la pile, l'arbre de staging est le seul endroit où la décomposition survit. Rouvrez OSA et la session revient avec les pistes intactes ; la scène assemblée seule ne peut pas vous dire ce qui a été aplati dans quoi.

Après l'assemblage, le nœud n'est plus nouveau

Appuyer sur Assemble fait deux choses à la fois, et la seconde passe facilement inaperçue : les nœuds sont construits dans Harmony, et le slot qui les a construits cesse d'être nouveau pour devenir existant — le marqueur d'état de l'Inspector. Dès lors, cette ligne décrit quelque chose qui existe vraiment là-bas.

L'aplatissement a lieu au même instant. Quelle qu'ait été la pile, chaque art layer contient désormais une image dans Harmony — c'est tout ce qu'Harmony peut contenir.

Un dessin relu depuis la scène arrive donc à plat. Que vous rouvriez OSA sur une scène assemblée hier ou que vous tiriez un dessin existant depuis le Node View, ce que vous obtenez, ce sont les frames qui ont réellement de l'illustration, chacune avec ses art layers remplies — et aucune subart layer, parce qu'il n'y en a aucune là-bas à rapporter. En Original Bitmap, il n'y a pas non plus d'art layers : l'illustration est sur la frame.

Vous continuez à travailler dessus exactement comme avant :

  • sortez l'illustration d'un conteneur pour en faire une piste (clic droit → Move this layer's artwork into the stack), puis empilez par-dessus ;
  • ajoutez des pistes, réordonnez, changez la cible ;
  • appuyez encore sur Assemble — un nœud existant ajoute et retire ce qui a changé, au lieu de tout reconstruire.

Supprimer de l'illustration de la scène est une décision, pas un accident

L'illustration venue de la scène n'est pas détruite quand vous la supprimez dans OSA. La ligne est marquée comme suppression en attente — bordure ambre, et une info-bulle disant qu'elle « will be removed from the scene on the next Assemble » — et le menu contextuel propose Revert to original sequence.

La suppression est donc réversible jusqu'à l'assemblage, et ce n'est qu'alors qu'elle touche la scène. Cet intervalle est le point : tirer un dessin du Node View puis changer d'avis ne doit rien coûter, et un undo qui n'existe qu'à l'intérieur d'une session ne suffit pas quand l'illustration est celle de quelqu'un d'autre.

Target Layer

Target Layer

Target Layer, c'est le conteneur qui dit « mon art à moi va ici ».

C'est la réponse du drawing pour son art propre — les art layers listées au-dessus sont l'affaire de ses enfants. Quand une frame porte de l'art directement, la colonne Details de l'arbre montre la couche où il atterrira ([Overlay], [Colour Art]…), ce qui vous permet de lire cent frames sans en sélectionner une.

En mode Original Bitmap, il n'y a pas d'art layers du tout, et la colonne Details indique [Original Bitmap] à la place — y nommer une couche serait un mensonge. Voir Original Bitmap.

Frame, Start / End et Z-Depth

Les trois champs sous la table s'appliquent à l'art propre du conteneur :

Champ Sens
Frame (avec Start / End) l'exposition qu'occupe cet art ; Start ≠ End est un hold
Z-Depth pousse ce drawing vers l'avant ou vers l'arrière dans l'ordre du composite
Target Layer quelle art layer le reçoit

Le Z-Depth peut aussi s'écrire directement dans le nom sous forme de tag : Z0.1, 0.5F, 10B.

Plusieurs tracks dans l'arbre

Quand une couche contient plus d'une track, la colonne Details de l'arbre le dit :

Overlay Art     [Overlay] 3 tracks

Une seule track n'annonce rien — c'est l'état normal, à plat. À partir de deux, le compte apparaît, car sinon la seule façon de savoir que de l'art a été empilé là serait de déplier la ligne.