Pipeline
O primeiro painel na barra lateral e o agrupador de todo o fluxo Photoshop para Blender para Godot. O corpo são três subpainéis em ordem de execução: Import, Validate e Export.
Import
Import Photoshop Manifest lê um manifesto escrito pelo plugin do Photoshop do Proscenio, carimba uma malha quad por camada (compondo texturas de spritesheet para grupos sprite_frame) e parenteia tudo a uma armadura raiz de stub. O seletor de arquivo carrega duas opções de redo:
- Placement -
Landed (Feet on Z=0)desloca a figura para que seu ponto mais baixo fique no Z=0 do mundo (o padrão, seguindo a convenção do motor de pivotar personagens nos pés);Centered (Canvas at World Origin)mantém a figura centralizada no canvas do manifesto, o que ajuda ao alinhar vários imports numa cena. - Root Bone Name - o nome do único osso na armadura de stub;
rootpor padrão.
Cada malha carimbada é marcada com sua camada de origem, então reimportar o mesmo manifesto reutiliza as malhas existentes - rotação, parentesco e pesos definidos pelo usuário sobrevivem à ida e volta. O importador reporta quantas malhas carimbou, quantas camadas pulou e quantas spritesheets compôs.
Veja examples/generated/simple_psd/ para um manifesto trabalhado mínimo e seu resultado importado.
Validate
Validate roda a passagem completa de pré-exportação e lista o que encontra; a mesma passagem roda automaticamente antes de toda exportação, e qualquer linha de error a bloqueia. Fica entre o Import e o Export para a ordem de execução se ler de cima para baixo. Até você clicar em Validate o painel mostra run Validate to see issues; uma cena limpa mostra no issues - ready to export.
Esta é a validação estrutural e semântica da cena ao vivo - ela nunca roda a validação de JSON Schema. O schema é verificado no CI e no test runner, não na sessão do Blender (veja Export para o que a exportação faz em vez disso).
Cada achado aparece como uma linha com um ícone error ou info. Uma linha que nomeia um objeto ofensor é um botão - clique nele para selecionar aquele objeto na viewport; achados sem objeto (o erro de sem-armadura) aparecem como um rótulo simples.
Erros bloqueiam a exportação
- A cena não tem Armadura (a exportação exige uma; isto é reportado sozinho, antes de qualquer outra verificação).
- Um elemento carrega grupos de vértices mas nenhum resolve para ossos de armadura - o escritor levantaria erro na exportação.
- Um elemento sprite tem
hframesouvframesabaixo de 1. - Um elemento tem um tipo de elemento desconhecido (nem
meshnemsprite). - Uma cadeia de IK é controlada por um alvo animado mas seus ossos de cadeia não carregam quadros-chave - rode
Bake IK to Keyframesprimeiro (o exportador lê as fcurves cruas e escreveria ossos achatados). - Dois slots compartilham um nome.
- Um slot não tem filhos de malha.
- O anexo padrão de um slot nomeia uma malha que não é filha do slot.
Avisos informam mas ainda exportam
- Um elemento não tem osso pai nem grupos de vértices que batem com ossos de armadura - o escritor recorre a um campo de osso vazio.
- A direção de descanso de um osso se inclina para fora do plano XZ do mundo - o exportador projeta os ângulos de osso no XZ e o interpretaria errado.
- Um osso controla a rotação de um sprite mas não está no modo Euler XYZ - o driver lê XYZ, então a animação não vai acompanhar. Rode
Active to Eulerno painel Esqueleto. - Um elemento de malha não é plano (tem espessura em todos os eixos), então a etapa de achatar-para-plano perderia geometria.
- As UVs de quad de um elemento sprite-frame não abrangem a folha inteira 0-1, então a grade
hframes/vframesficaria embaralhada no Godot. - Uma imagem de atlas referenciada por um material está faltando no disco - o Godot avisará na importação. Isto é um aviso, não um bloqueio.
- A malha de um elemento sprite não é mais um único quad (provavelmente uma ferramenta de malha rodou nela).
- Um elemento de malha não tem polígonos.
- Um anexo de slot segue um osso diferente do seu slot.
- Um filho de slot carrega quadros-chave de transformação de osso - um slot anima apenas a visibilidade.
- Um objeto está duplamente dirigido: carrega um parenteamento de osso cru E uma restrição de seguimento do Proscenio, então a influência do osso aplica duas vezes -
Clear Bone Follow(ouUnbind) mantém a posição e descarta ambos. - Um seguimento de osso está obsoleto: o descanso do rig mudou desde o vínculo, então o Blender e a importação do Godot discordam da posição de descanso do seguidor - rode
Bind to Bonede novo para recalculá-lo. - Um sprite está tombado fora do plano da imagem: seu quad fica de lado para a câmera (um parenteamento de osso por snap num osso no plano, ou um objeto girado à mão), então seu transform de descanso exportado sai encurtado - mantenha o sprite virado de frente.
Os subpainéis Elemento e Slot Ativo trazem inline um subconjunto barato dessas verificações a cada redesenho (o objeto ativo, o slot ativo), então a maioria dos problemas aparece antes de você clicar em Validate.
Export
O subpainel Export abre com uma leitura do rig que o escritor vai exportar: Exports: <name>, marcado picked quando um rig é escolhido no painel Esqueleto ou first in scene - no rig picked quando um é inferido. Abaixo dela ficam o caminho fixo, as duas configurações de exportação e os botões.
- Pixels per unit define a razão unidade-de-mundo-do-Blender para pixel-do-Godot (padrão 100, então 1 m no Blender vira 100 px no Godot). O escritor lê este campo de cena na primeira exportação, não um padrão de operador.
- Bundle textures copia toda textura que o documento referencia para a pasta de exportação após uma escrita bem-sucedida. A arte importada do PSD vive nas subpastas
images/e_spritesheets/, mas o.proscenioreferencia texturas por nome de arquivo simples e o importador do Godot só resolve irmãos; o empacotamento fecha essa lacuna. Origens já ao lado do arquivo são deixadas em paz, e uma origem faltante no disco é reportada em vez de copiada.
Export (.proscenio) primeiro roda a passagem completa de validação e aborta quando encontra qualquer error; senão ele roda o escritor e grava o JSON no caminho que você escolher no diálogo de exportação. Ele não valida contra o JSON Schema - essa verificação roda no CI e no test runner, não aqui.
O caminho escolhido é lembrado na cena, então Re-export reexecuta o escritor (validação incluída) para aquele mesmo caminho sem diálogo. A cena gerada usa apenas nós nativos do Godot - Skeleton2D, Bone2D, Polygon2D / Sprite2D, AnimationPlayer - sem GDExtension e sem dependência de runtime de plugin.