Skip to main content
Go to Editor

Wiki

Learn how to optimize your Spine 2D animations, reduce file size, and improve performance

animazionecon perditaconcetticonduttureconnessionicontrollidatiesempiesportareflusso di lavorofpsgraficiguidamemoriametricaottimizzazionepiùpremiopreseprestazioneprezziprincipianteregistratoreregistrazioneriproduzionerisultatisenza perditesequenza temporalesottoscrizionespettatorestatistichetavolotipiuivideoyoutube

Per iniziare: flusso di lavoro di base

principianteflusso di lavoroguida

Questa guida ti aiuterà a iniziare rapidamente con l'ottimizzatore JSON.

  1. Carica progetto: Usa il InputNode per caricare il tuo .json, .atlas e .png files.
  2. Scegli una preimpostazione (modalità Plus): In modalità Plus, utilizza il pannello destro per selezionare una delle preimpostazioni integrate (ad esempio "Basic Fallback"). Questo crea automaticamente un grafico di ottimizzazione per te. In modalità gratuita, crea un grafico manuale minimo: InputNodeQuantizerNodeOutputNode.
  3. Esegui il grafico: Fai clic su "Esegui Graph" pulsante.
  4. Confronta risultati: Passa alla scheda "Visualizzatore" per confrontare visivamente le animazioni originali e ottimizzate.
  5. Rivedi modifiche: Nei "Risultati" e Nelle schede "Statistiche", troverai informazioni dettagliate su quali chiavi sono state modificate o eliminate.

Tipi di socket e flusso di dati

presetipidaticonnessioni

Questo articolo spiega i tipi di dati utilizzati dai socket nel grafico del nodo e cosa può essere collegato e dove.

Regola rapida

La maggior parte dei nodi processing funziona su un Spine Carico utile. I nodi correlati a Atlas operano su un Atlas Project o Sprites. Utilizza ValidatorNode quando non sei sicuro di cosa si aspetta un socket.

Tipi di socket

  • Spine Payload — rappresentazione di facile utilizzo del progetto Spine utilizzata dalla maggior parte dei nodi di elaborazione.
  • Atlas Progetto — atlas metadati + immagini della pagina utilizzate da atlas nodi.
  • Sprites — immagini/regioni sprite decompresse (Atlas Unpacker → Visualizzatore risorse / Atlas Repacker).
  • JSON — originale o ricostruito Spine JSON per diagnostica/convalida/diffing.
  • Changes — un elenco/flusso di differenze prodotto da alcuni ottimizzatori e utilizzato dai nodi di visualizzazione/report.

Chiave → digita → connetti a

Chiave socket (esempi)Tipo datiProdotto daConnetti a
payload, payload_in, payload_outSpine PayloadInputNode, la maggior parte dei nodi di elaborazioneNodi di elaborazione (RDP/Spline/Refit/Quantizer/Cleanup/etc.), quindi OutputNode.payload
original_jsonJSONInputNodeDiagnosticNode, JSONDiffNode.json_before, OutputNode.original_json, alcuni atlas nodi (ad es.riconfezionatore alfa modalità)
reconstructed_json_outJSONOutputNodeJSONDiffNode.json_after, validatori/debug
changesChanges listAlcuni nodi di elaborazione + OutputNodeAnimationViewerNode (opzionale), segnalazioni/debug
atlas_projectAtlas ProgettoInputNode / atlas visualizzatoreAtlasUnpackerNode.atlas_project, OutputNode.atlas_project, atlas filtri
atlas_in, atlas_outAtlas Progetto (o flusso correlato a atlas)Atlas nodi / filtriAtlas nodi, AtlasViewerNode, AtlasMergerNode (tramite il suo multi-ingresso)
sprites_out, sprites_in, sprites_data_inSpritesAtlasUnpackerNode, filtriAssetViewerNode.sprites_in, AtlasRepackerNode.sprites_data_in
atlas_inputsMultiplo Atlas ProgettiFonti multipleAtlasMergerNode.atlas_inputs (collega diversi atlanti)

Condutture pratiche

  • Base JSON ottimizzazione: InputNode → (opzionale: DiagnosticNode / filtri) → ottimizzatori (RDPNode, SplineNode, QuantizerNode, …) → OutputNode.
  • Atlas reimballaggio: InputNode.atlas_projectAtlasUnpackerNode → (opzionale: AssetViewerNode) → AtlasRepackerNodeOutputNode.atlas_project/atlas_assets.

Piani di abbonamento e funzionalità premium

sottoscrizionepremiopiùprezzi

re-polish offre due livelli di abbonamento per soddisfare esigenze diverse.

Piano gratuito

  • ✓ Base Node Graph
  • ✓ JSON Visualizzatore
  • ✓ Timeline con tracce multiple e mixaggio di animazioni personalizzabili
  • • ottimizzazioni limitate
  • • spineVersioni

Piano Plus ($ 5 al mese)

  • • tutte le funzionalità gratuite
  • ✓ Kit di strumenti di ottimizzazione che copre chiavi, curve e trame
  • • fisicaBake
  • • puliziaBakedKeys
  • ✓ Graph Preimpostazioni
  • • prioritàSupporto

Getting Plus

Fai clic sul pulsante Upgrade nella navigazione in alto, quindi:

  • Seleziona Get Plus
  • Verrai reindirizzato a Patreon — completa l'abbonamento
  • Ritorna all'editor del nodo mentre sei connesso allo stesso account Patreon in modo che il servizio possa verificare il collegamento e abilitare Plus
  • (Facoltativo) Inserisci un codice di attivazione (per offerte speciali)

Concetti fondamentali: con perdita o senza perdita

concetticon perditasenza perditeprincipiante

Tutti i metodi di ottimizzazione sono divisi in due tipi:

Raccomandazione: Inizia sempre con Lossless ottimizzazioni. Utilizzare i metodi con perdita solo quando è necessaria un'ulteriore riduzione delle dimensioni del file e controllare sempre visivamente il risultato.

Come misurare l'efficacia

guidametricastatistiche

Per comprendere quanto sia efficace l'ottimizzazione, prestare attenzione alle seguenti metriche:

  • Dimensione file: La dimensione finale del file .json è l'obiettivo principale di ottimizzazione.
  • Conteggio fotogrammi chiave: Nella scheda "Statistiche", troverai tabelle e grafici che mostrano il numero di fotogrammi chiave rimossi in ciascuna animazione.
  • Visual Confronto: Utilizza sempre la scheda "Visualizzatore" per confrontare le animazioni "prima" e "dopo". Assicurati che le ottimizzazioni con perdita non abbiano introdotto artefatti visivi inaccettabili.
  • Riporta nella tabella "Risultati": Qui puoi esaminare in dettaglio ogni modifica specifica apportata ai tuoi dati.

Visualizzatore: Pannello di controllo

spettatorecontrolliui

La scheda Visualizzatore sovrappone un pannello Controlli sulla parte superiore della tela. È diviso in tre gruppi:

Controlli animazione

  • Animazione — seleziona l'animazione Spine riproduzione.
  • Skin — seleziona quale skin applicare.
  • Velocita — moltiplicatore della velocità di riproduzione (0,1× → 3.0×).

Visualizza controlli

  • Ripristina vista: ripristina la telecamera/il layout predefinito posizionamento.
  • Opzioni visualizzazione — offset numerici utilizzati per posizionare la vista comparativa: Spaziatura X / Spaziatura Y (distanza tra originale/ottimizzato) e Offset X / Offset Y (spostamento globale).

Debug Controlli

  • Debug Mode: abilita gli overlay di rendering del debug (dipende dal runtime supporto).
  • Abilita fisica — attiva/disattiva la simulazione fisica (se lo scheletro utilizza la fisica).
  • Labels — attiva/disattiva le etichette sovrapposizione.

Visualizzatore: pannello delle prestazioni

prestazionefpsmemoriaui

Il pannello Prestazioni mostra le metriche di runtime in tempo reale per il brano attualmente in riproduzione scheletro/i.

Real-time

  • FPS — fotogrammi al secondo misurati dal monitor.
  • Frame Time — tempo per fotogramma in millisecondi (più basso è migliore).
  • FPS chart — ultimi 120 campioni visualizzati come barre.

Metriche scheletro

  • Slot visibili: quanti slot erano visibili nell'ultimo campione.
  • Avg. Visibile: media mobile degli slot visibili (più stabile di un singolo fotogramma).
  • Vertices: conteggio dei vertici corrente utilizzato per il rendering.
  • Bounds (px): i limiti attuali dello scheletro larghezza×altezza in pixel.
  • Avg. Limiti: limiti della media mobile.
  • Largest Texture: la pagina atlas più grande (per dimensioni) rilevata per skeleton.
  • Texture Memory: memoria totale stimata delle texture per le pagine atlas caricate. Se disponibile, il pannello mostra anche un'analisi per pagina (nome file, dimensioni e dimensione stimata).

Miglioramenti (quando ottimizzato è disponibile)

  • Miglioramento slot — confronta Avg. Visibile tra Originale e Ottimizzato.
  • Modifica memoria — confronta Memoria texture tra Originale e Ottimizzato.

Visualizzatore: sequenza temporale

spettatoresequenza temporaleanimazioneriproduzioneguida

Il pannello Timeline è un sequenziatore di animazioni agganciabile nella parte inferiore del Visualizzatore. Ti consente di organizzare clip di animazione su più tracce, controllare la riproduzione e visualizzare in anteprima le transizioni.

Tracce e clip

  • Fino a 4 tracce di animazione: ciascuna traccia è mappata su un Spine trackIndex livello. Le tracce più alte si fondono sopra quelle più basse.
  • Aggiungi animazione: fai clic sul pulsante + su qualsiasi traccia per aprire il selettore di animazione (con la funzione di ricerca filtro).
  • Trascina e ridimensiona le clip: trascina il corpo della clip per spostarla lungo la traccia; trascina i bordi sinistro/destro per modificare l'ora di inizio o la durata.
  • Elimina clip: seleziona un clip e premi Elimina oppure Backspace.
  • Rilevamento sovrapposizione: i clip sovrapposti sulla stessa traccia sono evidenziati in rosso.

Trasporto Controlli

  • Riproduci/Pausa/Stop — controlli di riproduzione standard.
  • Precedente/Successivo — salta all'inizio del brano precedente o successivo clip.
  • Velocità animazione — dispositivo di scorrimento da 0,1× a 3,0×.
  • Auto-stop — la riproduzione si interrompe automaticamente alla fine del timeline.

Transition Mixing

  • Durata mix globale: imposta il tempo di dissolvenza incrociata predefinito tra clip.
  • Sostituzioni per transizione: fai clic sul fumetto di transizione tra due clip per impostare una durata del mix personalizzata.È possibile ripristinare le singole sostituzioni al valore globale.

Seeking & Scrubbing

  • Playhead: trascina la maniglia sul righello del tempo o fai clic sul righello per ricerca.
  • Anteprima tempo cursore — passando con il mouse sopra l'area della pista viene visualizzato il tempo sotto il cursore.
  • Web Worker — ricerca e calcolo degli eventi vengono scaricati in background lavoratore per prestazioni fluide.

Riproduzione consapevole della fisica

  • Alterna la fisica tra Update (vincoli attivi) e Nessuno (disabilitato).
  • Durante la ricerca, il tempo di skeleton viene avanzato per risolvere adeguatamente i vincoli fisici.

Multi-Skeleton Supporto

  • Selettore coppia target — ciascuna traccia può avere come target tutte le coppie (🌐 Tutte le coppie) o una specifica scheletro.
  • Posizione e scala per scheletro — Offset X/Y e input di scala per scheletri individuali.
  • Disegna ordine — input numerico per controllare la priorità del livello di rendering.

Debug Draw

Attiva/disattiva la visibilità per: ossa, nomi di ossa, regioni, mesh, scafi, limiti, percorsi, ritaglio, Punti.

Selezione skin

Caselle di controllo a selezione multipla per tutte le skin definite nello scheletro caricato.

Visualizza Impostazioni

  • Spaziatura X / Y — spazio tra le coppie di scheletri.
  • Offset X / Y — spostamento della vista globale.
  • PMA attiva/disattiva — modalità alfa premoltiplicata (Spine 3.x) o atlas modalità alfa (Spine 4.x: auto / pma / smarginatura / nessuno).
  • Etichette scheletro: attiva/disattiva la sovrapposizione delle etichette.

Visualizzatore: registratore

spettatoreregistratoreregistrazioneesportarevideoguida

Il Registratore cattura le animazioni Spine dallo spettatore come video, immagini animate o sequenze di immagini.

Registrazione Modalità

  • ⚡ Registrazione rapida: acquisizione in tempo reale utilizzando MediaRecorder + captureStream(). Produce solo output WebM. Veloce ma limitato al frame rate in tempo reale.
  • 🎬 HQ Export: rendering fotogramma per fotogramma offline utilizzando WebCodec VideoEncoder + readPixels().Supporta tutti i formati e produce output pixel-perfect.

Formati di output

  • Video: WebM, MP4, AVI, MOV
  • Immagine animata: GIF, animato PNG (APNG)
  • Sequenza immagini: PNG Sequenza, sequenza WebP

Codec (HQ Export)

VP8, VP9, H.264 (AVC), AV1, ProRes: i codec disponibili vengono rilevati automaticamente in base al browser supporto.

Quality

  • Presets: Basso (~1 Mbps), Medio (~3 Mbps), Alto (~5 Mbps), Senza perdita (~20 Mbps).
  • Bitrate personalizzato — specificare in kbps per fine control.

Timing

  • FPS: 24, 30, 60 o personalizzato (1–120 fps).
  • Warm-up — secondi per la stabilizzazione fisica/vincoli prima dell'inizio della registrazione.
  • Pause-after — tieni premuto l'ultimo fotogramma per una serie durata.
  • Includi ultimo fotogramma — attiva/disattiva.

Visualizza e Ritaglia

  • Abilita/disabilita ritaglio — attiva/disattiva regione di ritaglio.
  • Ritaglia rettangolo — X, Y, larghezza, altezza in Spine coordinate mondiali.
  • Aggancia per accoppiare: adatta automaticamente il ritaglio a una coppia di scheletri con imbottitura configurabile.
  • Sovrapposizione ritaglio interattivo — trascina angoli/bordi direttamente nella finestra.

Risoluzione

  • Modalità scala — cursore percentuale (10%–400%).
  • Modalità fissa — dimensioni pixel esplicite (fino a 4096 px).
  • Risoluzione di output calcolata visualizzata live.

Opzioni di rendering

  • Render bone: include debug bone sovrapposizione.
  • Immagini di rendering: includi immagini allegate.
  • Renderizza altri: riquadri di delimitazione, percorsi.
  • MSAA — Nessuno / 2× / 4× anti-aliasing.
  • Smoothing — livelli 0–8 con scelta dell'algoritmo (bicubico/bilineare).

Background

  • Transparent — disabilitato automaticamente per i formati mancanti alfa (ad esempio, GIF, JPEG).
  • Tinta unita: selettore colori personalizzato.
  • Checkerboard: trasparenza visiva indicatore.
  • Supporto canale alfa: VP9+WebM, AV1+MP4, PNG Sequenza, APNG, sequenza WebP.

HUD Overlay

  • Attiva/disattiva: informazioni traccia, ora, numero frame, FPS, etichette scheletriche.
  • Testo personalizzato — filigrana string.
  • Posizione — 4 angoli (in alto a sinistra, in alto a destra, in basso a sinistra, in basso a destra).
  • Dimensione carattere — 8–64px, più selettore colore testo.

Repeat e Multi-Skeleton

  • Repeat count — Iterazioni in loop da 1 a 100.
  • Coppia target — registra uno scheletro specifico o tutti.
  • Modalità scheletri — Combinati (file singolo)/File separati (un file per scheletro).

Nome file Modello

Stringa modello con variabili: {project}, {animation}, {W}, {H}, {fps}.Un'anteprima dal vivo del nome file risolto è visualizzato.

Integrazione timeline

L'intervallo di registrazione viene visualizzato come clip tratteggiata rossa/arancione sulla timeline. Trascina i bordi per ridimensionare l'intervallo, trascina il corpo per riposizionarlo o utilizza il pulsante delle impostazioni (⚙️) per aprire le impostazioni di registrazione complete.

Scheda Risultati

risultatitavoloottimizzazione

La scheda Risultati mostra i risultati dettagliati dell'ottimizzazione.

  • Tabella dei risultati — una visualizzazione riga per modifica dei risultati dell'ottimizzazione di JSON (ad es. quale animazione/osso/proprietà/fotogramma chiave è stato modificato o rimosso).
  • Sprite/Atlas confronto — quando viene utilizzata l'ottimizzazione della trama, questa sezione confronta le dimensioni e l'imballaggio degli sprite risultati.

Suggerimento: utilizza la visualizzazione Risultati per rispondere: cosa è cambiato esattamente?

Scheda Statistiche

statistichegraficimetrica

La scheda Statistiche riassume i risultati di ottimizzazione sotto forma di grafici e metriche aggregate.

  • Grafico di ottimizzazione: visualizza l'impatto dell'ottimizzazione sul set di dati (quando JSON ottimizzazioni hanno prodotto modifiche).
  • Tabella metrica — numeri chiave come dimensioni originali/nuove e percentuale di riduzione.
  • Statistiche imballaggio texture — se atlas è stato utilizzato il reimballaggio, mostra le pagine, l'area totale/utilizzata, l'efficienza e un'analisi per pagina.

Utilizza questa scheda per rispondere: quanto abbiamo migliorato nel complesso?

Esempi di pipeline (video)

videoesempiconduttureyoutube

Di seguito sono riportate le pipeline complete e reali della playlist ufficiale di YouTube.

Apri la versione completa playlist

Esempi

Spine2D Esperimenti 1: Ottimizzazione della curva con l'algoritmo RDP — linea di base Spine Demo di ottimizzazione 2D: l'algoritmo Ramer–Douglas–Peucker (RDP) rimuove i dati chiave/curva ridondanti per ridurre JSON. RDP può rimuovere chiavi importanti, quindi rivedi sempre le animazioni ed escludi ossa/slot sensibili con i nodi filtro prima del nodo RDP. Guarda YouTube

Spine2D Esperimenti 2: Curva Ottimizzazione con l'algoritmo di quantizzazione — la quantizzazione è il più sicuro Spine Ottimizzatore di curve 2D: l'arrotondamento dei valori (spesso a 1 decimale) dà risultati immediati in termini di dimensioni. Esempio: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]. Utilizzare il nodo di quantizzazione come ultimo passaggio prima del nodo di output per bloccare l'ottimizzazione; il video mostra il prima/dopo con un cambiamento visivo quasi impercettibile. Guarda YouTube

Spine2D Esperimenti 3: Ricostruire curve con spline e algoritmi di riadattamento — Spline è senza perdite per i segmenti diritti (rimuove i tasti centrali ridondanti), mentre Riadatta è con perdite ma potente: ricostruisce sezioni complesse come un'unica curva di Bézier. Questi algoritmi sono ideali dopo la cottura e la pulizia della fisica tramite il nodo Schneider. Nota: le iterazioni di refit superiori a 100 possono richiedere minuti per trovare la curva migliore. Il video mostra come funzionano entrambi i metodi e la percentuale di ottimizzazione ottenuta. Guarda YouTube

Spine2D Esperimenti 4: Rimozione di dati ridondanti con visibilità allegati e nodi di pulizia — strutturale Spine Ottimizzazione 2D utilizzando i nodi visibilità e pulizia degli allegati. La visibilità degli allegati disabilita gli allegati quando l'alfa sfuma a 0 e li ripristina in dissolvenza in apertura, riducendo le chiamate di disegno e rimuovendo le chiavi ridondanti. La pulizia rimuove le ridondanze logiche: tracce colore/alfa inutilizzate, chiavi di rotazione IK completamente controllate da vincoli e chiavi di vincolo del percorso. Il video mostra come queste ottimizzazioni basate sulla logica differiscono dalla semplificazione della curva. Guarda YouTube

Spine2D Esperimenti 5: Costruzione Pipeline non lineari (filtri e unione Node) — non lineari Spine Ottimizzazione 2D: dividi il flusso di dati con filtri (Animazione, Osso, Slot, Parametro o Pelle), esegui diversi algoritmi su rami paralleli (ad esempio, compressione aggressiva per le ossa del corpo mantenendo l'animazione facciale senza perdite), quindi combina i rami con il nodo Unisci in uno scheletro.Questo flusso di lavoro va oltre una semplice pipeline Input → Ottimizza → Output e ti consente di scegliere come target solo ciò che deve essere ottimizzato. Guarda YouTube

Spine2D Esperimenti 6: Texture Repacking e ridimensionamento selettivo con nodi personalizzati: pipeline avanzate di ottimizzazione delle texture: i nodi Unpacker/Repacker Atlas ti consentono di decomprimere, ridimensionare/comprimere e reimballare gli atlanti all'interno di un grafico, più velocemente dei flussi di lavoro Spine standard. Utilizzando la pipeline non lineare, puoi dividere le risorse, mantenere le texture dei personaggi al 100% e ridimensionare le altre fino al 25%, quindi unire nuovamente tutto in un unico atlas condiviso. I nodi Atlas/Asset Visualizzatore forniscono ispezione visiva e filtraggio di risorse e atlanti in ogni fase. Ciò rende più semplice definire obiettivi di ridimensionamento, elaborare in modo selettivo e ricombinare i risultati come modello riutilizzabile. Guarda YouTube

Spine2D Esperimenti 7: Istantaneo Ridimensionamento dello scheletro con una scala Node — end‑to‑end Spine pipeline di ottimizzazione 2D più ridimensionamento dello scheletro. Il nodo Scala sostituisce un noioso flusso di lavoro Spine (esportazione/importazione, reimballaggio/decompressione, correzione dei percorsi) con un singolo passaggio del grafico: imposta la dimensione di destinazione, visualizza l'anteprima istantaneamente nel viewport ed esegui l'iterazione in tempo reale. Il video unisce l'ottimizzazione di curve/chiave, l'elaborazione delle risorse e il ridimensionamento dello scheletro in un'unica pipeline semplificata. Guarda YouTube

Spine2D Esperimenti 8: Pubblico Beta Node Panoramica: panoramica di ogni nodo disponibile nella beta pubblica e come rifinire i ponti necessari per animatori e sviluppatori. Riguarda la pulizia delle chiavi ridondanti, la semplificazione da Bézier a lineare, l'arrotondamento per dimensione, la rimozione degli allegati invisibili, la pulizia delle proprietà inutilizzate, il rilevamento dei caratteri non inglesi e atlas decompressione/filtro/ridimensionamento/reimballaggio. Il doppio visualizzatore convalida i risultati con un confronto visivo affiancato e FPS. La beta pubblica è in diretta su re-polish.com. Guarda YouTube

Spine2D Esperimenti 9: Inserimento di vincoli fisici nei fotogrammi chiave — In questo video mostro i miei ultimi esperimenti con l'inserimento di vincoli fisici in fotogrammi chiave standard. Il nuovo algoritmo di cottura garantisce: Perfect Loops (zero jitter o salti tra i fotogrammi iniziale e finale), dimensione del file ottimizzata (la pulizia automatica della curva mantiene la dimensione di JSON vicina all'originale) e compatibilità con le versioni precedenti (i tasti integrati consentono di utilizzare le animazioni fisiche di Spine 4.2 in Spine 4.1 o anche 4.0). Guarda su YouTube

Nodes

Input

Importa file di progetto Spine, input solo JSON, risorse demo e pacchetti ZIP nel grafo.

Scopo: Questo e il punto di ingresso principale per la maggior parte dei flussi di lavoro. Legge JSON, atlas e texture e li normalizza in dati interni che i nodi a valle possono elaborare.

Modalita supportate:
1. Progetto completo: JSON + atlas + texture
2. Solo JSON: elabora dati di skeleton/animation senza atlas
3. Pacchetto ZIP: un file zip che contiene un progetto completo
4. Risorse demo: dati di esempio integrati per test rapidi

Output principali:
- **payload_out**: dati normalizzati per i nodi di ottimizzazione
- **original_json_out**: JSON sorgente per confronto o ricostruzione
- **atlas_project_out**: progetto atlas analizzato quando vengono fornite texture

Picture Input

Aggiunge immagini PNG/JPEG autonome al viewport per creare anteprime e inquadrature di presentazione piu pulite.

Scopo: Usa questo nodo per posizionare immagini direttamente nel viewport come livelli di presentazione o aiuti visivi. E utile quando vuoi decorare una scena, aggiungere grafica di supporto e rendere le anteprime del progetto piu curate prima di registrare video o demo.

Flusso di lavoro: Carica un'immagine, quindi usa gli strumenti del viewport per scalarla, spostarla e regolarne lo z-index cosi che si posizioni correttamente nella composizione. E un modo pratico per creare schermate di showcase accattivanti senza toccare i dati principali del progetto Spine.

Questo nodo e autonomo e non espone socket del grafo.

Output

Raccoglie i risultati finali e ti consente di scaricare i dati ottimizzati come file separati, gruppi di file o archivi.

Scopo: Agisce come hub di esportazione per JSON ottimizzato, dati atlas, texture e sprite. Puo assemblare risultati da un singolo set JSON/atlas/texture, da piu set di file oppure solo da sprite quando vuoi un output di immagini senza ricostruire un progetto Spine completo.

Opzioni di esportazione:
- Scarica i file singolarmente o come un unico archivio
- Scarica risultati impacchettati o un archivio con file non impacchettati
- Esporta il JSON in forma compatta o in forma leggibile con pretty print
- Esporta i dati completi del progetto Spine o solo i risultati sprite/immagine

Flusso concatenato: OutputNode non deve essere per forza la fine assoluta del grafo. Puoi passare i suoi output a un'altra fase della pipeline ed eseguire gli stessi file attraverso ulteriori passaggi di ottimizzazione. In pratica, l'ottimizzazione di key e curve e stata testata fino a 3 iterazioni consecutive.

Output principali:
- **reconstructed_json_out**: JSON Spine ricostruito
- **original_json_passthrough_out**: passaggio diretto del JSON originale
- **payload_out**: payload per ulteriore concatenazione
- **changes**: modifiche di ottimizzazione raccolte
- **atlas_assets**: risorse atlas pronte per l'esportazione

RDP

Semplifica le curve di animazione utilizzando l'algoritmo Ramer-Douglas-Peucker (RDP).

Scopo: riduce il numero di fotogrammi chiave nei segmenti di animazione lineare o quasi lineare rimuovendo i punti che si trovano su una linea retta tra altri due.

Regola d'oro: disabilitata per impostazione predefinita. Protegge le curve con forma significativa (area/curvatura) dall'appiattimento a lineare. Disabilitalo solo per una compressione più aggressiva dopo la revisione visiva.

Chiavi socket: payload_in, payload_out, modifiche

Spline

Adatta curve spline uniformi ai fotogrammi chiave dell'animazione, riducendo i punti intermedi non necessari.

Scopo: adattamento uniforme della curva mantenendo la qualità visiva.

Chiavi socket: payload_in, payload_out, modifiche

Refit

Si avvicina a sequenze di fotogrammi chiave dense con meno curve di Bezier per ridurre le dimensioni.

Scopo: adatta meno curve rimanendo entro una tolleranza.

Chiavi socket: payload_in, payload_out, modifiche

Quantizer

Riduce la precisione dei valori numerici nei fotogrammi chiave e nelle curve.

Scopo: modo semplice ma efficace per ridurre le dimensioni del file arrotondando i numeri a un numero specificato di cifre decimali.

Utilizzo: può essere applicato a quasi tutti i dati di animazione. Diventa più efficace con un numero maggiore di fotogrammi chiave.

Attenzione: una quantizzazione troppo aggressiva (bassa precisione) può causare jitter o artefatti visivi nelle animazioni.

Chiavi socket: payload_in, payload_out, modifiche

Cleanup

Esegue varie attività di pulizia per rimuovere dati di animazione ridondanti o non necessari.

Scopo: strumento specializzato per rimuovere tipi specifici di dati ridondanti che altri ottimizzatori potrebbero perdere.

Utilizzo: collega il tuo payload a 'payload_in' e prendi il risultato da 'payload_out'. Se desideri un rapporto per modifica, utilizza anche "modifiche".

Chiavi presa:
- Ingressi: payload_in
- Uscite: payload_out, modifiche

Pulizie attualmente supportate:
1. **Rimuovi tracce colore/alfa non utilizzate**: rimuove le linee temporali colore/alfa per gli slot che non sono mai visibili durante l'animazione.
2. **Rimuovi rotazioni IK ridondanti**: rimuove i fotogrammi chiave di rotazione dalle ossa completamente controllate da un vincolo IK con mix al 100%.
3. **Rimuovi chiavi di vincolo del percorso**: rimuove i fotogrammi chiave di rotazione/traslazione dalle ossa completamente controllate da un vincolo di percorso (mescola i valori al 100%).
4. **Disinfetta caratteri non inglesi**: sostituisce i caratteri non inglesi nei nomi/identificatori per evitare problemi negli strumenti downstream.

Scale

Ridimensiona tutti i valori numerici nei fotogrammi chiave dell'animazione in base a un fattore specificato.

Scopo: ridimensiona in modo uniforme i dati di animazione, utile per ridimensionare proporzionalmente lo scheletro o regolare l'intensità dell'animazione.

Utilizzo: collega **payload_in** e prendi il risultato da **payload_out**.

Chiavi socket: payload_in, payload_out

Schneider

Adatta le curve di Bezier uniformi ai fotogrammi chiave dell'animazione utilizzando l'algoritmo di adattamento della curva di Schneider.

Scopo: adattamento avanzato delle curve che produce curve di Bezier dall'aspetto naturale da sequenze di fotogrammi chiave dense.

Disponibilità: **Nodo solo Plus**.

Come funziona: l'algoritmo di Schneider analizza le posizioni e le tangenti dei fotogrammi chiave per generare punti di controllo Bezier ottimali che corrispondono fedelmente al movimento originale.

parametri:
- **Tolleranza all'errore**: deviazione massima consentita dai fotogrammi chiave originali. Inferiore = curve più precise, superiore = curve più morbide.
- **Angolo angolare**: angolo di soglia (gradi) al quale dividere la curva in segmenti.

Ideale per:
- Animazioni disegnate a mano o importate con molti fotogrammi chiave
- Conversione dell'interpolazione lineare in curve di Bezier uniformi
- Riduzione del conteggio dei fotogrammi chiave mantenendo la qualità della curva

Nota: più intensivo dal punto di vista computazionale rispetto ad algoritmi più semplici come RDP, ma produce una qualità della curva superiore.

Chiavi socket: payload_in, payload_out, modifiche

Physics Constraint Bake

Inserisce il movimento Spine PhysicsConstraint nei fotogrammi chiave di rotazione/traslazione dell'osso e rimuove le linee temporali fisiche.

Scopo: converte la simulazione fisica runtime in fotogrammi chiave espliciti in modo che le animazioni siano deterministiche e modificabili senza vincoli fisici. Dopo la cottura, i vincoli fisici e le sequenze temporali fisiche vengono rimossi dal payload.

Disponibilità: **Nodo solo Plus**.

Ingressi/Uscite:
- **payload_in** → **payload_out** (cotto)
- **modifiche** (elenco modifiche facoltativo)

Controlli:
- **Sample FPS**: frequenza di campionamento della simulazione per la cottura.
- **Rotazione Bake**: scrivi le chiavi di rotazione cotte.
- **Traduzione al forno**: scrivi chiavi di traduzione al forno.
- **Traduzione di Bake (bambini)**: applica la traduzione di Bake alle ossa dei bambini che si basano sul movimento fisico.

Note:
- Richiede Spine JSON originale per ricostruire i dati di simulazione.
- Utilizzare quando si desidera rimuovere i vincoli fisici ma mantenere il movimento.

Attachment Visibility

Ottimizza il rendering impostando l'allegato di uno slot su null quando il suo alfa è zero.

Scopo: Impedisce al motore di gioco di dover elaborare o eseguire il rendering degli allegati invisibili.

Utilizzo: elabora **payload_in**, genera output ottimizzati **payload_out** e, facoltativamente, segnala **modifiche**.

Chiavi socket: payload_in, payload_out, modifiche

Payload Merger

Unisce più payload di animazione elaborati in un singolo payload unificato.

Scopo: essenziale per pipeline di elaborazione parallela in cui diverse animazioni o gruppi di ossa sono ottimizzati separatamente e devono essere ricombinati.

Ingressi:
- **base**: carico utile principale (struttura scheletrica)
- **sostituisce**: uno o più carichi utili i cui binari sostituiscono i binari base

Uscita:
- **merged_out**: carico utile unito

Chiavi socket: base, override, merged_out

Animation Viewer

Strumento visivo per ispezionare e confrontare le curve di animazione prima e dopo l'ottimizzazione.

Scopo: Fornisce una rappresentazione grafica dei fotogrammi chiave e delle curve per la traccia selezionata.

Utilizzo: collega **prima_in** e **dopo_in** per sovrapporre l'originale e l'ottimizzato. Facoltativamente, collega le **modifiche** per evidenziare le tracce interessate.

Chiavi socket: prima_in, dopo_in, modifiche

Animation Filter

Filtra le tracce dell'animazione in base al nome dell'animazione (ad esempio "esegui", "inattivo").

Scopo: utile per applicare diverse strategie di ottimizzazione a diverse animazioni.

Utilizzo: filtra **payload_in** in **payload_out** ed espone **animation_list** per la selezione dell'interfaccia utente.

Chiavi socket: payload_in, payload_out, Animation_list

Asset Filter

Filtra le risorse atlas per nome, funziona in due modalità: prima dell'unpacker (filtra il testo atlas) o dopo l'unpacker (filtra gli sprite).

Scopo: controlla quali risorse sono incluse nel flusso di lavoro: quali risorse decomprimere da atlas o quali sprite decompressi includere nel repacking.

Ingressi/Uscite:
- Modalità Atlas: **atlante_in** → **atlante_out**
- Modalità sprite: **sprites_in** → **sprites_out**

Chiavi socket: atlas_in, atlas_out, sprites_in, sprites_out

Bone Filter

Filtra le tracce di animazione delle ossa in base al nome delle ossa.

Scopo: consente di individuare o escludere ossa specifiche dal processo di ottimizzazione.

Utilizzo: filtra **payload_in** in **payload_out**.

Chiavi socket: payload_in, payload_out

Skin Filter

Filtra le animazioni e i dati delle risorse in base ai nomi degli skin.

Scopo: elabora solo skin specifiche da un progetto multi-skin Spine.

Utilizzo: filtra **payload_in** in **payload_out**.

Chiavi socket: payload_in, payload_out

Slot Filter

Filtra le tracce di animazione degli slot in base al nome dello slot.

Scopo: utile per scegliere come target o escludere fasce orarie specifiche che potrebbero avere requisiti di tempistica o visibilità speciali.

Utilizzo: filtra **payload_in** in **payload_out**.

Chiavi socket: payload_in, payload_out

Parameter Filter

Filtra le tracce di animazione in base al tipo di proprietà (ad esempio, rotazione, scala, colore).

Scopo: consente di applicare ottimizzazioni successive solo a tipi specifici di dati di animazione.

Utilizzo: filtra **payload_in** in **payload_out**.

Chiavi socket: payload_in, payload_out

Atlas Unpacker

Estrae singoli sprite da una texture Spine atlas.

Scopo: scompone un file atlas negli sprite che lo compongono, consentendo l'analisi individuale o il repacking.

Utilizzo: collega **atlas_project** da InputNode a **atlas_project** (o il legacy **atlas_project_in**) su questo nodo. Facoltativamente, collega **skeleton_json_in** (da **original_json** di InputNode) per abilitare il ritaglio compatibile con la mesh (taglia gli sprite sui limiti dello scafo mesh anziché sui limiti rettangolari, il che può ridurre significativamente la memoria delle texture per gli allegati mesh).

Uscite:
- **sprites_out**: array di sprite standardizzati (per visualizzatore/repacker)
- **sprites_data_out**: immagini/metadati sprite estratti (pacchetto strutturato)
- **atlas_out**: Atlas passthrough del progetto

Chiavi socket: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

Ricompone i singoli sprite in uno o più atlanti di texture nuovi e ottimizzati.

Scopo: ottimizza la memoria delle texture e riduce potenzialmente le chiamate di disegno creando fogli sprite efficienti.

Utilizzo: accetta sprite tramite **sprites_data_in** (pacchetto di sprite strutturati) o tramite **sprites_out** (array di sprite standardizzati). Se necessario per la gestione alfa/compressione dei poligoni, fornire lo scheletro originale tramite **original_json**. Restituisce un atlas compresso come **atlas_out**.

Chiavi socket: sprites_data_in, sprites_out, original_json, atlas_out

Atlas Viewer

Strumento leggero di visualizzazione e analisi atlas per ispezionare la struttura atlas prima di disimballare.

Scopo: fornisce un modo rapido per visualizzare in anteprima le pagine e le regioni atlas senza eseguire la pesante operazione di disimballaggio. Aiuta a convalidare la struttura atlas e a identificare le regioni inutilizzate.

Utilizzo: collega un singolo progetto atlas a **atlas_project** (o **atlas_in** / **atlas** legacy) o esamina un batch di progetti atlas tramite **atlas_projects**. Facoltativamente, collega lo scheletro JSON a **json** per l'analisi dell'utilizzo.

Chiavi socket: atlas_project, atlas_projects, atlas_in, atlas, json

Atlas Merger

Combina più origini atlas in un unico atlas unificato.

Scopo: unire più progetti atlas in uno solo.

Ingresso:
- **atlas_inputs**: array multi-input di progetti atlas

Uscite:
- **atlas_out**: progetto atlas unito
- **merged_out**: output unito legacy
- **merged_atlas_out**: output unito legacy

Chiavi socket: atlas_inputs, atlas_out, merged_out, merged_atlas_out

Conduttura tipica:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Prima di Repacker i dati sono singoli sprite; dopo Repacker diventa un progetto atlas. Atlas La fusione combina i progetti atlas, quindi un passaggio finale Unpacker → Repacker reimballa tutto strettamente in un unico atlas unificato.

Asset Viewer

Visualizza i singoli sprite da un atlas scompattato.

Scopo: strumento di debug visivo per la manipolazione di atlas.

Utilizzo: accetta sprite tramite **sprites_out** (standard) o legacy **sprites_in** / **sprites_data**.

Chiavi socket: sprites_out, sprites_in, sprites_data