Ir para o conteúdo

Drawings, art layers e subart

Vídeo tutorial — em breve

Um drawing do Harmony não é uma imagem só. São quatro camadas empilhadas — Underlay, Colour Art, Line Art, Overlay — e o OSA deixa você mirar arte em qualquer uma delas, empilhar várias imagens em uma delas, e fazer isso por exposição.

A tabela de art layers

As quatro art layers

De cima para baixo, na ordem em que o Harmony desenha:

Camada Tag Normalmente
Overlay Art OL efeitos pintados por cima de tudo
Line Art LA as linhas do desenho — o padrão
Colour Art CA flats e pintura
Underlay Art UL roughs, guias, qualquer coisa sob a pintura

Arte sem tag de art layer vai para Line Art. Esse padrão é uma constante única lida pelo coletor, pelo Inspector e pela lógica de pilha, então existe exatamente uma resposta para "onde a arte sem tag pousa?".

Lendo a tabela

A tabela Art Layers do Inspector é a verdade sobre um drawing:

Coluna O que diz
Art Layers as quatro camadas, mais qualquer subart aninhada sob elas
Type Vector ou Bitmappor camada, não por drawing
Frames em quantas exposições aquela camada realmente tem arte

Um drawing pode ser vetor e bitmap ao mesmo tempo

Line Art em vetor e Colour Art em bitmap é legal no Harmony, e o OSA autora isso. É por isso que Type é uma coluna nesta tabela e não uma configuração do drawing: o tipo é de cada camada, decidido pela arte que cai nela. Uma chave única no container só poderia estar errada sobre metade delas.

Cada linha carrega seus próprios botões:

Botão Faz
+ adiciona arte nesta camada — um arquivo, ou uma sequência inteira
substitui o que está lá
limpa a camada

Subart layers: uma art layer, várias imagens

Uma art layer pode conter mais de uma imagem. Essas imagens extras são subart layers, e são lidas como uma pilha.

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

Uma imagem não paga por hierarquia. A primeira sequência que chega a uma camada mora na própria linha da art layer, plana — não há track para expandir, porque ainda não há nada para ordenar.

A segunda vai por baixo, e a primeira fica onde está. A art layer mantém a arte dela e a recém-chegada vira filha, no fim da pilha. Nada se mexe debaixo da sua mão: a linha que você acabou de importar está onde você a deixou.

Isso vem do modelo, e não de gosto: aqui um slot carrega arte e tem filhos ao mesmo tempo — exatamente como o Photoshop trata uma layer, e como o coletor lê. Empurrar a primeira imagem para outro lugar reorganizaria a árvore para dizer o que ela já dizia.

A promoção continua existindo, para o único caso que precisa dela: pôr uma track acima da arte da própria camada. Não há índice acima da linha da camada, então arrastar um slot para lá empurra aquela arte para dentro de uma track e o recém-chegado assume o topo. O gesto é só o arrasto; o menu de contexto diz o mesmo por escrito — "Move this layer's artwork into the stack".

A ordem da árvore é a ordem da pilha: o primeiro filho é o topo. O coletor lê exatamente isso, então o que você vê na árvore é o que compõe no Harmony.

Por que aninhado e não irmãos planos

Dois irmãos reivindicando a mesma art layer é um erro neste app — o OSA pinta os dois de vermelho e recusa a operação. O aninhamento mantém a invariante intacta: continua havendo exatamente um Overlay no frame, e a pilha é o conteúdo dele.

Os nomes são seus, e a profundidade não tem teto

Subart-000 é apenas o nome padrão com que uma track nasce — o mesmo padrão que o Octo Vector Bridge usa ao nomear um pass. Renomeie, em qualquer das duas ferramentas, para o que o plano pedir. Nada depois disso casa com essa string: o OSA lê uma pasta de tracks por estrutura, pegando as numeradas (01_contour, 02_detail) na ordem do número e as sem número em ordem alfabética depois delas. Um pass que você renomeou para rim_light importa igualzinho a um que você deixou como estava.

O que os nomes de pasta precisam dizer é a art layer: o OSA lê Underlay, Colour Art / Color Art, Line Art, Overlay, as pistas ink e line, e as siglas UL / CA / LA / OL como palavras inteiras — a mesma gramática com que o OVB escreve, então um export dele cai direto. (Palavras inteiras de propósito: uma pasta chamada Fola não pode virar Line Art por conter as letras.)

E uma pilha não tem teto. Uma track pode ter tracks, em quantos níveis você quiser — o + de qualquer linha adiciona uma sequência dentro daquela linha, um import de pasta lê tracks aninhadas recursivamente, e arrastar na árvore faz o mesmo. Por mais fundo que vá, tudo se achata na única art layer no fim disso; a profundidade é para organizar do jeito que você pensa, não algo que o Harmony vá ver algum dia.

Cada track diz que tipo de dado ela é

Uma linha de subart carrega o ícone do seu tipo de conteúdo, lido do arquivo de origem — não de uma configuração:

Significa
vetor — um .svg escrito como strokes nativos, ou um .tvg
raster — um PNG, TGA, TIFF, JPEG ou uma layer de PSD

Os dois são desenhados para se distinguir de relance, porque a 14 pixels você lê a forma, não o detalhe:

  • vetor é um ponto de ancoragem sobre uma curva — um quadrado azul sólido apoiado numa curva em S clara que passa por ele. É a alça bezier que todo programa de desenho mostra: um ponto que dá para pegar, sobre uma linha definida por matemática.
  • raster é um tabuleiro de xadrez — uma grade dois por dois de quadrados claros e escuros dentro de uma moldura cinza. É a grade de pixels, e o mesmo xadrez que todo editor de imagem usa para dizer "isto são amostras, não formas".

Um é uma curva que ainda daria para editar; o outro é uma grade de valores. Essa é a diferença inteira entre os dois formatos, e é a diferença inteira entre os dois ícones.

Uma art layer não pode misturar vetor e raster

A art layer do Harmony é uma coisa ou outra. Empilhe um .svg e um .png na mesma Colour Art e os dois não podem ser escritos.

A track do topo define o tipo da camada, e as tracks do outro tipo são puladas — nomeadas, uma a uma, no relatório de importação:

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

É uma nota, não uma falha: a construção aconteceu, só não inteira. E as tracks puladas continuam na sua árvore de staging — o OSA só achata o que de fato pousou, então nada que você autorou é apagado por ter perdido uma pilha. Mova-as para outra art layer, ou converta-as, e elas pousam na próxima vez.

Duas ou mais tracks vetoriais em uma camada estão de boa: convivem lado a lado, desenhadas da base ao topo, e a última desenhada fica por cima.

Movendo arte de um lado para o outro

Nada aqui é de mão única. Dois menus de contexto cobrem os movimentos, e eles respondem a duas perguntas diferentes.

Na árvore: mandar uma camada para outra camada

Clique com o botão direito numa art layer da árvore de staging e aparecem três submenus, cada um listando as quatro camadas:

Verbo Faz
Move to a arte sai desta camada e pousa naquela
Copy to ela pousa lá e continua aqui
Swap with as duas camadas trocam de conteúdo

Assim, flats que entraram na Line Art vão para a Colour Art sem reimportar nada, e um par que chegou trocado se conserta com um Swap.

Cada destino é decidido por um plano antes de você o ver: o OSA calcula o que aconteceria com cada uma das quatro camadas e acende só as que têm o que fazer. Um destino que não pode funcionar fica cinza com o motivo no tooltip, em vez de sumir — num app sem previewer, item que morre em silêncio lê como bug.

No container, vale para todos os frames

Clique com o botão direito no desenho em vez de numa camada e os mesmos três verbos valem para todos os frames dele de uma vez. É o mesmo plano e a mesma ação, recebendo todas as camadas movíveis do container — cem frames redirecionados num gesto, e um Ctrl+Z.

No painel Art Layers: container ⇄ pilha

Clique com o botão direito numa linha do painel Art Layers do Inspector e o menu oferece o movimento que aquela linha consegue fazer:

Nesta linha A entrada O que faz
o desenho Move the drawing's artwork into <Layer> a arte própria do desenho deixa de ser dele e vira uma trilha na camada que o dropdown dele nomeia
uma art layer Move this layer's artwork into the stack a arte que está na linha da camada desce para uma trilha, liberando o topo da pilha
uma trilha subart Use as <Layer>'s own artwork a trilha sobe para fora da pilha e vira a arte própria da camada
uma trilha subart Use as the drawing's own artwork o mesmo, só que ela vira a arte do desenho

Os ícones são os do próprio painel. A linha do desenho carrega o ícone de frame, cada camada carrega o chip dela — e uma trilha carrega o tipo do dado, vetor ou bitmap, lido do arquivo. As duas linhas de trilha acima mostram o mesmo ícone de bitmap só porque é uma trilha de exemplo: as duas entradas existem em toda trilha, seja qual for o tipo.

É esse par que você usa para dizer "esta aqui vai por cima" sem arrastar: empurre a arte do container para dentro da pilha, e puxe a trilha que você quer para o lugar dela.

As recusas são escritas, não escondidas. A entrada fica cinza dizendo qual delas é:

  • "this slot carries no artwork" — não há o que mover;
  • "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".

A última é a invariante em que o painel inteiro se apoia: uma linha, uma arte. Duas imagens pousando caladas no mesmo slot substituiriam o desenho de alguém, e é exatamente isso que a promoção existe para impedir.

Sequências pousam numa camada, não no drawing

Solte uma sequência de 120 arquivos em Colour Art e o OSA calcula os pousos frame a frame. Ele te diz, antes de fazer qualquer coisa:

  • quantos frames novos a sequência força (ela é mais longa que o container),
  • quantos frames existentes ficam sem arte naquela camada (ela é mais curta),
  • quais art layers são promovidas a containers.

Nem uma sequência mais longa nem uma mais curta é um erro. As duas são ditas.

Por que um container ainda pode carregar arte

Esta é a pergunta que a árvore fica levantando, e a resposta é a mesma de Conceitos:

Toda linha é a mesma linha. O que difere é só quais caixas estão marcadas.

Um drawing que chegou como um PNG plano pode virar um container no momento em que você arrasta algo para cima dele. Se virar pai significasse perder a sua arte, todo arrasto seria uma chance de destruir um drawing em silêncio. Então o container mantém o que tinha, e a arte fica como par dos filhos em vez de ser substituída por eles.

É por isso que você vai ver, e por que está correto:

  • um frame com arte própria e art layers abaixo dele,
  • uma art layer com imagem própria e subart layers abaixo dela.

Essas duas são as únicas linhas que guardam arte. Um nó de drawing não guarda — ele é um Read apontando para um elemento, e no Harmony os pixels sempre moram num cel exposto. Nem nós de estrutura, geradores ou efeitos guardam.

Então, quando uma linha que carrega arte vira um nó de drawing, a arte não some e não fica parada: o OSA cria a pasta intrínseca Frames com um frame 1 dentro, e a arte migra para baixo para lá. Uma casa, nunca duas — duas cópias fariam o coletor ler a mesma fonte duas vezes e o escritor registraria a segunda leitura como perda.

Veja Conceitos para a tabela completa do que guarda arte e do que não guarda.

A combinação é resolvida pela política de merge no Assemble, não jogando nada fora:

Situação O que o Assemble faz
Um frame tem arte própria e art layers a arte do frame faz merge por cima das art layers para as quais aponta
Uma art layer tem várias tracks elas achatam em uma imagem, na ordem da árvore, do topo primeiro
Um container aponta para uma camada que já tem arte a camada apontada recebe; nada mais é tocado
Uma linha que carrega arte vira um nó de drawing surgem uma pasta Frames e um frame 1, e a arte se muda para o frame

A pilha só existe no OSA

Esta é a parte que vale deixar muito clara, porque ela muda o que você deve esperar encontrar no Harmony depois.

O Harmony não tem subart layers. Um drawing lá tem exatamente quatro camadas internas — Underlay, Colour Art, Line Art, Overlay — e esse é todo o vocabulário. A pilha que você monta na árvore é uma estrutura de autoria: um jeito de dizer "estas cinco imagens vão todas no Overlay, nesta ordem" sem ter que fundi-las à mão antes.

Na montagem, a pilha se gasta. Cada imagem dela é composta para baixo, na única art layer para onde ela apontava, na ordem da pilha, e o que chega no Harmony é um drawing normal com um Overlay normal. Nada na cena lembra que havia cinco trilhas — essa memória vive na sua árvore de staging, e na sessão que o OSA salva.

A ordem, de cima para baixo

Três regras decidem o que cobre o quê, e elas se compõem:

  1. A arte do próprio frame fica sempre no topo — acima de tudo o que as art layers do frame carregam. Ela pousa na camada para onde o Target Layer do frame aponta. Então um frame apontando para Line Art cobre a imagem própria do container Line Art e todas as trilhas dele.
  2. O container fica acima dos filhos. Uma art layer que tem imagem própria e subart layers embaixo põe a imagem dela no topo da própria pilha.
  3. Ordem de árvore é ordem de pilha, primeiro filho no topo — entre as art layers e entre as trilhas de uma delas.

Lido como uma figura só, para um frame apontando para Line Art:

1a arte do próprio frameTarget Layer → Line Art
2a imagem própria do container Line Artcontainer acima dos filhos
3trilha subart — primeiro filhoordem da árvore
4trilha subart — um bitmappulada: esta camada é vetor
↓ achatado na montagem ↓
=uma camada Line Art do Harmonyvetor; nenhuma trilha sobrevive

A linha 4 é a que vale parar para ler. Ela é uma trilha bitmap numa camada de vetor, e o Harmony não tem onde pôr isso: uma art layer é de um tipo ou do outro. O topo da pilha decide — aqui o topo é vetor, então o bitmap fica de fora, é nomeado no relatório de import, e fica na sua árvore, para você mover, converter, ou reordenar a pilha e tentar de novo.

Mova esse mesmo bitmap para a Colour Art e nada se perde, porque lá ele é o topo:

1a imagem própria do container Colour Arttopo desta pilha
2trilha subart — outro bitmapmesmo tipo, sem conflito
↓ achatado na montagem ↓
=uma camada Colour Art do Harmonybitmap

As demais art layers do desenho são construídas do mesmo jeito, cada uma na sua camada — Underlay, Colour Art, Line Art e Overlay nunca se misturam entre si.

É por isso que a árvore vale ser guardada

Como o Harmony não consegue segurar a pilha, a árvore de staging é o único lugar onde a decomposição sobrevive. Reabra o OSA e a sessão volta com as trilhas intactas; a cena montada sozinha não sabe dizer o que foi achatado em quê.

Depois do Assemble, o nó deixa de ser novo

Apertar Assemble faz duas coisas ao mesmo tempo, e a segunda passa fácil: os nós são construídos no Harmony, e o slot que os construiu deixa de ser novo e passa a ser existente — o marcador de estado do Inspector. Dali em diante aquela linha é a descrição de algo que está mesmo lá fora.

O achatamento acontece nesse mesmo instante. Qualquer que fosse a pilha, cada art layer agora guarda uma imagem no Harmony — é tudo que o Harmony consegue guardar.

Então um desenho lido de volta da cena chega plano. Seja reabrindo o OSA numa cena que você montou ontem, seja puxando um desenho existente do Node View, o que você recebe são os frames que de fato têm arte, cada um com suas art layers preenchidas — e nenhuma subart layer, porque não existe nenhuma lá fora para relatar. Em Original Bitmap também não há art layers: a arte fica no frame.

Você continua trabalhando nele exatamente como antes:

  • tire a arte de dentro de um container e faça dela uma trilha (botão direito → Move this layer's artwork into the stack), e empilhe mais em cima;
  • acrescente trilhas novas, reordene, mude o alvo;
  • aperte Assemble de novo — um nó existente adiciona e remove o que mudou, em vez de reconstruir do zero.

Apagar arte da cena é uma decisão, não um acidente

A arte que veio da cena não é destruída quando você a apaga no OSA. A linha é marcada como remoção encenada — borda âmbar, e um tooltip dizendo que ela "will be removed from the scene on the next Assemble" — e o menu de contexto oferece Revert to original sequence.

Ou seja, o apagar é reversível até o momento em que você monta, e só então ele toca na cena. Essa folga é o ponto: puxar um desenho do Node View e mudar de ideia não pode custar nada, e um undo que só existe dentro de uma sessão não basta quando a arte é de outra pessoa.

Target Layer

Target Layer

Target Layer é o container dizendo "minha própria arte vai aqui".

É a resposta do drawing sobre a arte dele — as art layers listadas acima são assunto dos filhos. Quando um frame carrega arte diretamente, a coluna Details da árvore mostra a camada em que ela vai pousar ([Overlay], [Colour Art]…), então você pode ler cem frames sem selecionar nenhum.

No modo Original Bitmap não existem art layers, e a coluna Details diz [Original Bitmap] em vez disso — nomear uma camada ali seria mentira. Veja Original Bitmap.

Frame, Start / End e Z-Depth

Os três campos abaixo da tabela se aplicam à arte própria do container:

Campo Significado
Frame (com Start / End) a exposição que esta arte ocupa; Start ≠ End é um hold
Z-Depth empurra este drawing para frente ou para trás na ordem do composite
Target Layer qual art layer o recebe

Z-Depth também pode ser escrito direto no nome como uma tag: Z0.1, 0.5F, 10B.

Várias tracks na árvore

Quando uma camada guarda mais de uma track, a coluna Details da árvore diz isso:

Overlay Art     [Overlay] 3 tracks

Uma track não anuncia nada — esse é o estado normal, plano. De duas para cima a contagem aparece, porque senão o único jeito de saber que havia arte empilhada ali seria expandir a linha.