Plugin do Photoshop
Um plugin UXP (React + TypeScript) que transforma um PSD em camadas num manifesto mais PNGs que o importador do Blender lê. O artista dirige toda a exportação de dentro do Photoshop, sem nunca sair da tela.
O plugin traz quatro painéis encaixáveis sob Plugins > Proscenio ...: Proscenio Exporter, Proscenio Tags, Proscenio Validate e Proscenio Debug. Eles compartilham uma única leitura do documento aberto, então uma camada renomeada em Proscenio Tags atualiza a prévia em Proscenio Validate sem uma atualização manual. Cada painel abre com uma seção Active document mostrando o nome do documento e o tamanho da tela, com um botão Refresh que relê o Photoshop.
O que faz
- Marcar camadas pelo nome. Marcadores entre colchetes (
[ignore],[spritesheet],[folder:name]e outros) dirigem a exportação sem tocar na arte. O vocabulário completo vive no guia avançado do Photoshop; o painel Proscenio Tags edita as mesmas tags através de controles em vez de à mão. - Exportar. Uma varredura recursiva das camadas produz um PNG por camada mais um manifesto JSON. O manifesto é validado antes de ser escrito, então um manifesto quebrado nunca chega ao disco. Entradas cujo PNG falha ao escrever são descartadas e relatadas em vez de abortar a exportação inteira, então as entradas boas ainda são entregues.
- Spritesheets. Marcar um grupo como spritesheet o marca com a tag
spritee exporta um PNG por quadro (name/0.png,name/1.png, ...). Compor esses em uma única folha é trabalho do importador do Blender, não do Photoshop. - Espelhar de volta para o PSD. O plugin consegue reconstruir um PSD a partir de um manifesto. Isso reconstrói o layout de origem; não faz o round-trip das edições do Blender de volta para o PSD.
Proscenio Exporter
O painel principal. Ele é dono da pasta de saída, das opções de exportação, da execução da exportação e da importação de manifesto para PSD.
Pasta de saída
A seção Output folder é onde a exportação escreve. O caminho escolhido persiste entre recarregamentos do plugin, então uma sessão retoma contra a mesma pasta. Pick folder (ou Change folder depois que uma está definida) abre o seletor do sistema; Forget descarta a pasta lembrada e recai no estado vazio. Se a pasta for movida ou apagada no meio da sessão, a próxima exportação relata que ela não está mais acessível e limpa a referência obsoleta, para que o painel peça uma pasta de novo.
Opções de exportação
A seção Export options guarda os toggles e as configurações de conversão que a execução da exportação lê.
Skip hidden layersexclui camadas que estão ocultas no Photoshop. Fica ligado por padrão.- A seção Pixels per unit define o
pixels_per_unitdo manifesto, o fator de conversão que as ferramentas seguintes usam para transformar pixels do PSD em unidades de mundo do Blender e do Godot. Um valor mais alto resulta em objetos menores no espaço de mundo. O padrão é100. A seção ecoa a altura atual da tela tanto em pixels quanto em unidades resultantes como verificação de sanidade, e um botãoReset to 100restaura o padrão. O valor persiste entre recarregamentos, e uma importação de manifesto para PSD o semeia a partir do manifesto importado. - A seção Filename templates sobrescreve os nomes de arquivo em disco. O template
mesh(padrão{name}.png) controla os caminhos de PNG de malha e aceita os tokens{name}e{kind}; o templatesprite(padrão{name}/{index}.png) controla os caminhos de quadro de sprite e aceita{name}e{index}. O prefixoimages/e qualquer subpasta[folder:...]são adicionados automaticamente, então o template governa apenas a porção do arquivo.Reset to defaultsrestaura ambos. Um template que descarta o token que distingue suas entradas (um templatemeshsem{name}, um templatespritesem{index}) colapsa todas as entradas em um único caminho e bloqueia a exportação em vez de sobrescrever PNGs silenciosamente.
Executar exportação
O botão Export manifest + PNGs da seção Run export executa a exportação completa. Ele fica desabilitado até que um documento esteja aberto e uma pasta de saída seja escolhida. A exportação escreve o manifesto como <document-stem>.photoshop_exported.json ao lado de uma pasta images/ de PNGs. A linha de resultado relata quantas entradas foram escritas; numa execução parcial, ela lista as entradas que pulou e por quê, para que o artista possa corrigir aquelas camadas e reexportar.
Reexportar selecionadas
A seção Re-export selected reescreve apenas o(s) PNG(s) da camada atualmente selecionada no Photoshop, deixando o manifesto JSON intocado. Ela mostra o nome e o tipo da entrada de manifesto correspondente, e fica ativa apenas quando a camada selecionada mapeia para uma entrada. Use-a para atualizar a arte de um elemento sem uma exportação completa.
Importar (manifesto para PSD)
A seção Import (manifest to PSD) reconstrói um PSD a partir de um manifesto. Import manifest as PSD abre um seletor para um manifesto JSON do Proscenio, o valida e então recria o documento com camadas posicionadas e um grupo por sprite. O novo documento é deixado aberto e não salvo de propósito - confirme-o com File > Save As. Manifestos inválidos e falhas de posicionamento por entrada são relatados inline; uma única entrada ruim é pulada em vez de abortar a importação inteira. Esta seção fica recolhida por padrão.
Migração legada
A seção Legacy migration aparece no Exporter apenas quando o documento aberto tem camadas usando a antiga convenção de pular _layerName. Ela converte esses nomes para a tag [ignore] em lote: ela pré-visualiza cada renomeação (nome antigo para nome novo, clicar numa linha seleciona aquela camada no Photoshop) e Convert N layer(s) to [ignore] as aplica em uma única passada. O cabeçalho carrega um selo com a contagem de candidatas.
Proscenio Tags
Um editor de árvore de camadas para as tags entre colchetes, para que o artista as defina através de controles em vez de digitá-las nos nomes das camadas. Cada linha mostra o nome de exibição da camada (com as tags removidas) e uma tira inline de selos para suas tags não padrão (folder, path, scale, origin, marcador de origin, padrão de nome). Selecionar o nome de uma linha seleciona aquela camada no Photoshop; linhas de grupo têm um toggle de expansão para recolher seus filhos.
Por linha, os controles são:
- um toggle
[ignore](pular a camada na exportação); - um toggle
[merge](apenas grupos - achatar o grupo em um único PNG); - um dropdown de tipo -
auto,mesh(Polygon2D) ousprite(Sprite2D); - um dropdown de blend -
none,mult,scrnouadd, escrevendo a tag[blend:...]; - um expansor (
+) que abre os campos avançados daquela linha.
Os campos avançados editam [folder:NAME], [path:NAME], [scale:N], [origin:X,Y], o marcador [origin] e (em grupos) o padrão de nome de filho [name:PRE*SUF]. Os valores digitados são um rascunho local: nada é confirmado até Apply, e Revert descarta o rascunho. Um valor que o parser de tags rejeitaria bloqueia Apply e marca o campo problemático em vez de não escrever nada silenciosamente. O botão From selection da linha de origin preenche X e Y a partir do centro da seleção de marquee atual do Photoshop.
Abaixo da árvore, a seção Selected entry é um inspetor somente leitura: para a camada selecionada no Photoshop, ela mostra o que a exportação vai emitir (nome, posição, tamanho, origin, blend, subpasta, contagem de quadros) e o(s) caminho(s) de PNG resolvido(s) em disco.
Proscenio Validate
Um painel somente leitura que executa o planner de exportação como uma passada em seco e lista tudo que precisa de atenção antes de uma exportação real. O cabeçalho da sua seção Validate mostra um selo - a contagem de problemas, ou ok quando o manifesto está limpo. Os problemas vêm em grupos:
- Warnings - achados consultivos do planner, como caminhos de saída duplicados, tags conflitantes, um grupo de spritesheet malformado, limites vazios, escala subpixel ou um marcador
[origin]fora de um container que o consome. - Skipped - camadas que o planner deixou de fora e por quê (uma tag
[ignore], oculta, limites vazios ou uma camada de marcador de origin). - Manifest invalid - erros bloqueantes que impedem a exportação, incluindo um template de nome de arquivo que colapsaria entradas em um único caminho.
Clicar em qualquer linha de aviso ou pulada seleciona a camada problemática no Photoshop para que seja rápido corrigir. Um documento cujo perfil de cor não é sRGB levanta um aviso independente: cores fora do gamut sRGB são recortadas na exportação, porque a engine lê PNGs como sRGB e ignora perfis embutidos. Converta o documento para sRGB (Edit > Convert to Profile) para autorar as cores que o jogo vai mostrar.
Proscenio Debug
Um painel para inspecionar a exportação planejada e ajustar o logging. Sua seção Preview faz uma passada em seco da exportação (nada é escrito) e lista as entradas do manifesto com seu tipo, nome, caminho e quaisquer anotações de folder, blend ou origin; o cabeçalho exibe no selo a contagem de entradas. Ela também relata a âncora do documento (o pivô definido pelas primeiras guias horizontal e vertical do PSD, ou (canvas centre) quando nenhuma guia foi autorada) e os totais correntes de entradas, camadas puladas e avisos. Refresh reexecuta a passada em seco.
A seção Debug logging define o quanto o plugin registra no console das UXP Developer Tools. Escolha um nível (o padrão é info; trace ou debug é para reproduzir um bug, off o silencia); a escolha persiste entre recarregamentos. Os logs são marcados com [proscenio:<area>] e lidos sob Plugins > Development > Developer Tools.
O formato do manifesto
A exportação escreve um manifesto PSD do Proscenio em format_version: 1 - a versão atual e única entregue. Cada camada vira uma entrada cujo kind é mesh (um elemento respaldado por Polygon2D, o padrão para uma camada de arte) ou sprite (um elemento respaldado por Sprite2D, um ou mais quadros). O manifesto também carrega o nome do documento de origem, o tamanho da tela, pixels_per_unit e uma âncora de documento opcional. A lista exata de campos é gerada a partir do schema compartilhado e renderizada ao vivo sob a Referência de schema; esta página não a repete.
O manifesto é validado com o ajv contra aquele schema tanto antes de uma exportação chegar ao disco quanto depois que um manifesto é escolhido para importação, de modo que nem uma exportação malformada nem um arquivo importado ruim passe da fronteira.
Como é construído
O código é organizado em camadas: um adaptador isola a API da Adobe, lib/ guarda a lógica pura e testável de tags e planejamento, e api/ concentra os efeitos colaterais (escritas de arquivo, a API do Photoshop) para que o domínio permaneça livre de plataforma.
Veja Arquitetura para como o plugin se encaixa no pipeline.