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.
Carica progetto: Usa il InputNode per caricare il tuo .json, .atlas e .png files.
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: InputNode → QuantizerNode → OutputNode.
Esegui il grafico: Fai clic su "Esegui Graph" pulsante.
Confronta risultati: Passa alla scheda "Visualizzatore" per confrontare visivamente le animazioni originali e ottimizzate.
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.
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:
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.
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.
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).
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.
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