Skip to main content
Go to Editor

Documentation

Ce mode d’emploi vous aidera à démarrer rapidement avec le JSON Optimizer. Charger le projet : Utilisez InputNode pour charger vos fichiers .json , .atlas et .p

FPSUIYouTubeabonnementaide-pratiqueanimationavec pertecatégorieschaînesconnecteursconnexionscontrôlesdonnéesdébutantexemplesexportflux de travailgraphiquesguidehaut-de-gammemémoiremétriquesnotionsoptimisationperformancesplaybackrecorderrecordingrésultatssans pertestatistiquessupplémenttableautarifstimelinetutorielvideovidéoviewervisualiseur

Démarrage : Flux de travail de base

débutantflux de travailtutoriel

Ce mode d’emploi vous aidera à démarrer rapidement avec le JSON Optimizer. Charger le projet : Utilisez InputNode pour charger vos fichiers .json , .atlas et .png . Choisir un preset (mode Plus) : En mode Plus, utilis...

Read article

Types de sockets et flux de données

connecteurscatégoriesdonnéesconnexions

Cet article explique les types de données utilisés par les sockets dans le graphe de nœuds et ce qui peut être connecté où. Types de socket Spine Payload — représentation du projet Spine adaptée au runtime, utilisée p...

Read article

Plans d’abonnement et fonctionnalités Premium

abonnementhaut-de-gammesupplémenttarifs

re-polish propose deux niveaux d’abonnement pour différents besoins. Plan Gratuit ✓ Graphe de nœuds basique ✓ Visualiseur JSON ✓ Timeline avec plusieurs pistes et mixage personnalisable entre animations ✓ Optimisation...

Read article

Concepts de base : Avec perte vs. Sans perte

notionsavec pertesans pertedébutant

Toutes les méthodes d’optimisation sont divisées en deux types : Sans perte : Ces méthodes ne font que supprimer des données redondantes... Exemples : Nœud d’optimisation Spline , CleanupNode . Avec perte : Ces méthod...

Read article

Comment mesurer l'efficacité

aide-pratiquemétriquesstatistiques

Pour comprendre l'efficacité de votre optimisation, prêtez attention aux métriques suivantes : Taille du fichier : La taille finale du fichier .json est l'objectif principal de l'optimisation. Nombre d'images clés : D...

Read article

Viewer : Panneau de contrôles

visualiseurcontrôlesUI

L'onglet Visualiseur superpose un panneau de contrôles au-dessus du canvas. Il est divisé en trois groupes : Contrôles de lecture Séquence — sélectionne quelle séquence Spine est en cours de lecture. Skin — sélectionn...

Read article

Viewer : Panneau de performance

performancesFPSmémoireUI

Le panneau Performance affiche des métriques runtime en temps réel pour le(s) squelette(s) en cours de lecture. Temps réel FPS — images par seconde mesurées par le moniteur. Frame Time — temps par frame en millisecond...

Read article

Viewer : Chronologie

viewertimelineanimationplaybackguide

Le panneau Timeline est un séquenceur d'animation ancrable en bas du Visualiseur. Il permet d'organiser des clips d'animation sur plusieurs pistes, de contrôler la lecture et de prévisualiser les transitions. Pistes &...

Read article

Viewer : Enregistreur

viewerrecorderrecordingexportvideoguide

Le Recorder capture les animations Spine du visualiseur sous forme de vidéo, d'images animées ou de séquences d'images. Modes d'enregistrement ⚡ Enregistrement rapide — capture en temps réel avec MediaRecorder + captu...

Read article

Onglet Résultats

résultatstableauoptimisation

L'onglet Résultats affiche la sortie détaillée de l'optimisation. Tableau des résultats — une ligne par changement dans les résultats d'optimisation JSON (par ex. quelle séquence/os/propriété/image clé a été modifiée...

Read article

Onglet Statistiques

statistiquesgraphiquesmétriques

L'onglet Statistiques résume les résultats de l'optimisation sous forme de graphiques et de métriques agrégées. Graphique d’optimisation — visualise l'impact de l'optimisation sur l'ensemble des données (lorsque les o...

Read article

Exemples de pipelines (Vidéo)

vidéoexempleschaînesYouTube

Voici des flux complets et réels issus de la playlist officielle YouTube. Ouvrir la playlist complète Exemples Spine2D Experiments 1 : Optimisation des courbes avec l’algorithme RDP — démo d’optimisation de base Spine...

Read article

Nodes

Input

Importe des fichiers de projet Spine, des entrées JSON uniquement, des ressources de démonstration et des packages ZIP dans le graphe.

Objectif : Il s'agit du point d'entrée principal de la plupart des workflows. Il lit le JSON, l'atlas et les textures, puis les normalise en données internes que les nœuds en aval peuvent traiter.

Modes pris en charge :
1. Projet complet : JSON + atlas + textures
2. JSON uniquement : traiter les données de squelette/animation sans atlas
3. Package ZIP : une archive zip contenant un projet complet
4. Ressources de démonstration : des données d'exemple intégrées pour des tests rapides

Sorties principales :
- **payload_out** : données normalisées pour les nœuds d'optimisation
- **original_json_out** : JSON source pour la comparaison ou la reconstruction
- **atlas_project_out** : projet atlas analysé lorsque des textures sont fournies

Video To Png Sequence

Convertissez un clip vidéo en séquence d’images PNG pour les workflows Spine.

Il s’agit d’un outil d’entrée gratuit dans le menu Input, adapté aux workflows de production. Il prend en charge le chroma key pour les fonds verts ainsi qu’un nettoyage de matte de type unpremultiply pour les fonds noirs. Les sorties passent par payload_out et atlas_out.

Picture Input

Ajoute des images PNG/JPEG autonomes dans le viewport afin de créer des aperçus et des prises de présentation plus soignés.

Objectif : Utilisez ce nœud pour placer des images directement dans le viewport comme couches de présentation ou éléments visuels d'appoint. Il est utile pour habiller une scène, ajouter des graphismes de soutien et rendre les aperçus du projet plus élégants avant l'enregistrement de vidéos ou de démos.

Workflow : Chargez une image, puis utilisez les outils du viewport pour la redimensionner, la déplacer et ajuster son z-index afin qu'elle s'intègre correctement dans votre composition. Cela permet de préparer de belles prises de showcase sans modifier les données principales du projet Spine.

Ce nœud est autonome et n'expose aucun graph socket.

Version: Format de version JSON Spine pour le squelette stub généré.
Blending: Mode de fusion pour la pièce jointe générée (normal, additif, multiplier, écran).

Psd To Skeletons

Charge des fichiers PSD/PSB avec calques et génère des squelettes Spine liés qui conservent la mise en page Photoshop pour des aperçus précis.

Objectif : Utilisez ce nœud lorsqu'une scène a déjà été composée dans Photoshop et que vous souhaitez transformer cette pile de calques en un ensemble de squelettes Spine liés dans le viewer. Chaque calque PSD visible devient son propre squelette de type image, positionné à partir des coordonnées du PSD, ce qui simplifie fortement le montage des previews et le placement précis des objets.

Workflow dans le viewer : Après la génération, vous pouvez toujours modifier le draw order dans le viewer et placer d'autres squelettes entre les calques PSD importés, afin d'insérer des personnages ou props Spine supplémentaires directement dans la composition Photoshop.

Disponibilité : Nœud gratuit. Ce nœud est autonome et n'expose aucun socket de graphe.

Version: Format de version Spine JSON utilisé pour les squelettes de calques générés.
Blending: Mode de fusion utilisé pour les attachments générés.
Load PSD: Ouvre le sélecteur PSD/PSB et génère des squelettes de calques liés à partir du fichier choisi.
File Info: Résumé en lecture seule du fichier PSD/PSB actuellement chargé.
Layer Count: Nombre en lecture seule des calques visibles qui seront convertis en squelettes liés.
Preflight: Rapport en lecture seule sur les problèmes de noms de calques détectés avant la génération.

Project Input

Charge un dossier ou une archive de projet Spine dans le graphe et expose un ProjectPayload via le socket project_out pour les nœuds en aval compatibles avec les projets.

Objectif : point d'entrée pour les workflows basés sur les projets. Analyse un dossier ou une archive de projet Spine, construit un ProjectPayload et conserve des métadonnées en cache prêtes pour les nœuds en aval comme Project Viewer, les filtres, Static Bake et Deduplicator.

Contrôles :
- **Load Folder**: Ouvre le sélecteur de dossiers du système via la File System Access API, analyse le répertoire choisi, met à jour le résumé, met les métadonnées en cache et démarre un file watcher afin que les modifications ultérieures puissent être réanalysées.
- **Browse (Fallback)**: Utilise une entrée **webkitdirectory** cachée pour les navigateurs sans **showDirectoryPicker()**. Le projet est chargé, mais sans handle de répertoire persistant ; la surveillance en direct et les rescans fiables ne sont donc pas disponibles.
- **Load Archive**: Charge une archive **.zip** ou **.spine** comme arborescence de projet virtuelle. Les projets chargés depuis une archive ne conservent pas de handle de répertoire, donc **Rescan** est indisponible par conception.
- **Rescan**: Relance l'analyse du dossier précédemment chargé lorsqu'un handle de répertoire est disponible. Le droit de lecture est revérifié avant l'analyse. Les projets chargés via fallback browse ou le mode archive indiquent généralement qu'aucun répertoire n'est chargé.
- **Clear Project**: Arrête la surveillance des fichiers et efface le payload actuel, le résumé, le cache d'exécution et les métadonnées de payload mises en cache.
- **Reset to Defaults**: Réinitialise uniquement les contrôles génériques du nœud. Cela **ne** décharge **pas** le projet actuel et ne remplace pas **Clear Project**.
- **Drop folder or .zip here**: Point d'entrée en glisser-déposer qui accepte dossiers et archives et les envoie dans la même pipeline de chargement.

Sorties :
- **project_out**: ProjectPayload avec l'arborescence analysée, la liste de fichiers à plat, les totaux de taille et la répartition par type pour les nœuds en aval compatibles avec les projets.
- **stats**: Sortie de diagnostic réservée au mode DEV.

Output

Rassemble le résultat final et permet de télécharger les données optimisées sous forme de fichiers séparés, d'ensembles de fichiers ou d'archives.

Objectif : Sert de centre d'export pour le JSON optimisé, les atlas, les textures et les sprites. Ce nœud peut traiter aussi bien un seul ensemble JSON/atlas/textures que plusieurs ensembles de fichiers. Si vous ne lui fournissez que des sprites, il peut également produire uniquement des images sans reconstruire un projet Spine complet.

Options d'export :
- télécharger les fichiers séparément ou dans une archive unique
- télécharger des résultats packed ou une archive contenant les fichiers unpacked
- exporter le JSON en version compacte ou en version lisible
- exporter un projet Spine complet ou seulement des résultats de sprites/images

Chaînage : OutputNode n'est pas forcément la fin absolue du graphe. Vous pouvez réinjecter ses sorties dans une autre étape du pipeline et faire repasser les mêmes fichiers dans des passes d'optimisation supplémentaires. En pratique, l'optimisation des keys et des curves a été testée jusqu'à 3 itérations consécutives.

Sorties principales :
- **reconstructed_json_out** : JSON Spine reconstruit
- **original_json_passthrough_out** : passthrough du JSON d'origine
- **payload_out** : payload pour poursuivre le chaînage
- **changes** : changements d'optimisation collectés
- **atlas_assets** : ressources atlas prêtes à l'export

RDP

Simplifie les courbes de séquence (RDP).

But : Réduit le nombre d’images clés dans les segments de séquence linéaires ou quasi linéaires en supprimant les points situés sur une ligne droite entre deux autres.

Règle d’or : désactivée par défaut. Elle protège les courbes à forme marquée (aire/courbure) pour éviter leur linéarisation. Désactivez-la uniquement pour une compression plus agressive après vérification visuelle.

Clés de socket : payload_in, payload_out, changes

Epsilon: Déviation maximale par rapport à la courbe originale. Des valeurs plus élevées suppriment plus d'images clés mais peuvent perdre des détails.
Steep: Seuil de sensibilité à la courbure. Protège les courbes complexes contre l'aplatissement en linéaire.
Round Mode: Mode d'arrondi pour les valeurs optimisées : aucun (garder l'original), dixièmes (1 décimale), entiers.
Golden Rule: Lorsqu'activé, protège les courbes avec une forme/surface significative contre la simplification par RDP.
S Run Length: Nombre minimal de courbes en S Spine standard consécutives requis avant d'activer cet aplatissement basé sur un gabarit. Définissez 0 pour désactiver la fonction.
S Deviation: Écart normalisé autorisé par rapport au gabarit standard de courbe en S Spine, en pour mille (0-300). Des valeurs plus faibles exigent une correspondance plus précise ; des valeurs plus élevées aplatissent davantage de séquences proches du gabarit.

Spline

Optimisation des courbes via splines.

But : Ajuste les courbes en douceur tout en préservant la qualité visuelle.

Clés de socket : payload_in, payload_out, changes

Max Error: Erreur d'approximation maximale autorisée pour l'ajustement spline. Plus bas = ajustement plus serré à l'original.
Min Group Size: Nombre minimum d'images clés linéaires consécutives nécessaires pour former un groupe supprimable.

Refit

Réapproxime des segments par des courbes (Bezier) pour réduire les keyframes.

But : Ajuste moins de courbes tout en restant dans une tolérance.

Clés de socket : payload_in, payload_out, changes

Error Tolerance: Déviation maximale autorisée entre la courbe originale et la Bézier ajustée. Plus bas = correspondance plus précise.
Max Iterations: Nombre d'itérations d'optimisation pour l'ajustement de courbe. Plus d'itérations = meilleur ajustement mais plus lent.

Quantizer

Réduit la précision des valeurs numériques dans les images clés et les courbes.

Objectif : Méthode simple mais efficace pour réduire la taille du fichier en arrondissant les nombres à un nombre spécifié de décimales.

Utilisation : Peut être appliqué à presque toutes les données de séquence. Devient plus efficace avec un nombre d'images clés plus élevé.

Attention : Une quantification trop agressive (faible précision) peut causer des tremblements ou des artefacts visuels dans les séquences.

Precision: Nombre de décimales pour les valeurs d'images clés. Moins = fichier plus petit mais précision moindre.

Cleanup

Effectue diverses tâches de nettoyage pour supprimer les données de séquence redondantes ou inutiles.

Objectif : Outil spécialisé pour supprimer certains types de données redondantes que d’autres optimiseurs peuvent manquer.

Utilisation : Connectez votre payload à 'payload_in' et récupérez le résultat via 'payload_out'. Si vous souhaitez un rapport par changement, utilisez aussi 'changes'.

Clés de socket :
- Entrées : payload_in
- Sorties : payload_out, changes

Nettoyages actuellement pris en charge :
1. **Supprimer les pistes color/alpha inutilisées** : Supprime les timelines color/alpha pour les slots qui ne sont jamais visibles pendant la lecture.
2. **Supprimer les rotations IK redondantes** : Supprime les images clés de rotation des os entièrement contrôlés par une contrainte IK avec un mix à 100 %.
3. **Supprimer les clés de contrainte de chemin** : Supprime les images clés rotate/translate des os entièrement contrôlés par une contrainte de chemin (mix à 100 %).
4. **Assainir les caractères non anglais** : Remplace les caractères non anglais dans les noms/identifiants pour éviter des problèmes dans les outils en aval.

Remove Unused Color Tracks: Supprimer les composants couleur/alpha qui ne changent jamais de la valeur par défaut.
Remove Redundant IKRotation: Supprimer les images clés de rotation d'os entièrement pilotées par les contraintes IK.
Remove Redundant Path Constraint Keys: Supprimer les images clés de contrainte de chemin qui dupliquent les valeurs de configuration.
Sanitize Non English Characters: Remplacer les caractères non-ASCII dans les noms d'os/slots par des équivalents sûrs.

Scale

Met à l'échelle toutes les valeurs numériques des images clés de séquence par un facteur spécifié.

Objectif : Met uniformément à l'échelle les données de séquence, utile pour redimensionner proportionnellement le squelette ou ajuster l'intensité de la séquence.

Utilisation : Connectez au payload et définissez le facteur d'échelle. Les valeurs supérieures à 1.0 agrandissent, inférieures à 1.0 réduisent.

Paramètres :
- **Scale Factor** : Multiplicateur appliqué à toutes les valeurs de position et de taille.
- **Include Rotations** : Si les valeurs de rotation doivent également être mises à l'échelle (généralement désactivé).

Cas d'utilisation :
- Redimensionner les séquences importées pour correspondre aux nouvelles dimensions du squelette
- Créer des variantes exagérées ou subtiles de séquences
- Mise à l'échelle par lots de plusieurs séquences pour différentes tailles de personnages

Scale Bones: Mettre à l'échelle les positions et tailles des os.
Scale Attachments: Mettre à l'échelle les positions et tailles des pièces jointes.
Scale Animations: Mettre à l'échelle les images clés d'animation.
Scale Constraints: Mettre à l'échelle les paramètres de contraintes.
Scale Path: Mettre à l'échelle les données de chemin.

Schneider

Ajuste des courbes de Bézier lisses aux images clés de séquence en utilisant l'algorithme d'ajustement de courbe de Schneider.

Objectif : Ajustement de courbe avancé qui produit des courbes de Bézier d'aspect naturel à partir de séquences denses d'images clés.

Disponibilité : **Nœud Plus uniquement**.

Fonctionnement : L'algorithme de Schneider analyse les positions et tangentes des images clés pour générer des points de contrôle de Bézier optimaux qui correspondent étroitement au mouvement original.

Paramètres :
- **Error Tolerance** : Écart maximum autorisé par rapport aux images clés originales. Plus faible = plus précis, plus élevé = courbes plus lisses.
- **Corner Angle** : Angle seuil (degrés) auquel diviser la courbe en segments.

Idéal pour :
- Séquences dessinées à la main ou importées avec de nombreuses images clés
- Conversion de l'interpolation linéaire en courbes de Bézier lisses
- Réduction du nombre d'images clés tout en maintenant la qualité de la courbe

Note : Plus gourmand en calcul que des algorithmes plus simples comme RDP, mais produit une qualité de courbe supérieure.

Min Segment Size: Nombre minimum d'images clés dans un segment pour le traitement.

Physics Constraint Bake

Bake Physics Constraints to Keys : convertit le mouvement des PhysicsConstraints en images clés de rotation/translation et supprime les timelines de physique.

Objectif : Convertit la simulation physique en temps réel en images clés explicites afin que les animations soient déterministes et éditables sans PhysicsConstraints. Après le bake, les PhysicsConstraints et les timelines de physique sont supprimées du payload.

Disponibilité : **Nœud Plus uniquement**.

Entrées/Sorties :
- **payload_in** → **payload_out** (baked)
- **changes** (liste de changements optionnelle)

Contrôles :
- **Sample FPS** : Fréquence d'échantillonnage de la simulation.
- **Bake Rotation** : Écrit les images clés de rotation.
- **Bake Translation** : Écrit les images clés de translation.
- **Bake Translation (Children)** : Applique le bake de translation aux os enfants qui dépendent du mouvement physique.

Notes :
- Nécessite le JSON Spine original pour reconstruire les données de simulation.
- À utiliser lorsque vous souhaitez supprimer les PhysicsConstraints tout en conservant le mouvement.

Attachment Visibility

Optimise le rendu en définissant l'attachment d'un slot à null lorsque son alpha est zéro.

Objectif : Empêche le moteur de jeu de devoir traiter ou rendre des attachments invisibles.

Utilisation : Analyse les pistes alpha/color et ajoute ou modifie automatiquement les images clés sur la piste 'attachment' correspondante.

Paramètres :
- **Alpha Threshold** : Valeur alpha en dessous de laquelle un attachment est considéré invisible.
- **Auto Restore** : Si activé, le nœud restaurera automatiquement le dernier attachment visible lorsque la valeur alpha dépasse le seuil.

Payload Merger

Fusionne plusieurs payloads de séquence traités en un seul payload unifié.

Objectif : Essentiel pour les pipelines de traitement parallèle où différentes animations ou groupes d'os sont optimisés séparément et doivent être recombinés.

Stratégie de fusion :
1. **Entrée de base** : Fournit la structure du squelette (os, slots, skins, etc.)
2. **Entrées override** : Fournissent des pistes traitées qui remplacent les pistes de base
3. **Le dernier écrit gagne** : Lorsque plusieurs overrides fournissent la même piste, le dernier a priorité

Détection des conflits :
- Les conflits entre entrées override sont détectés et signalés
- Le remplacement Base → Override est un comportement normal (pas un conflit)
- Toast d'avertissement affiché lors de conflits de pistes

Exemple de pipeline :
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

Cas d'utilisation :
- Différents optimiseurs pour différentes animations
- Traitement séparé des os/slots avec recombinaison
- Tests A/B de différentes stratégies d'optimisation

Warn conflicts: Afficher les avertissements en cas de conflits de fusion de payload.

Animation Viewer

Outil visuel pour inspecter et comparer les courbes de séquence avant et après optimisation.

Objectif : Fournit une représentation graphique des images clés et des courbes pour la piste sélectionnée.

Utilisation : En connectant les deux entrées 'payload_before' et 'payload_after', il superposera les courbes originales et optimisées, facilitant la visualisation de l'impact de vos optimisations.

Show changed: Afficher uniquement les animations modifiées.
Animation: Sélection d'animation pour visualisation.
Target: Os/slot cible pour visualisation.
Property: Propriété à afficher (rotation, translation, etc.).

Project Viewer

Displays a Spine project from the project_in socket for inspection and preview without mutating the incoming data.

Deduplicator

Deduplicates atlas projects by consuming project_inputs and returning payloads, atlas_projects, original_jsons, and shared_atlas_out for canonicalized downstream workflows.

The Deduplicator node scans all atlas regions for visually identical or near-identical sprites. It merges duplicates by choosing a canonical representative and remapping references. Several thresholds control detection sensitivity for different sprite types (glow, solid, alpha). Optionally constrains the output canonical atlas dimensions. A verification pass ensures the deduplicated result is visually equivalent to the original within the specified RMSE tolerance.

Repack mode: Mode de réempaquetage après déduplication.
Glow threshold: Seuil pour détecter les sprites avec effet de lueur.
Solid threshold: Seuil pour détecter les sprites solides.
Min sprite area: Surface minimale de sprite pour l'analyse (pixels²).
Alpha hash threshold: Seuil de hachage alpha pour la comparaison.
Verification threshold: Seuil de vérification des doublons.
Color rmse threshold: Seuil RMSE de couleur pour la détection des doublons.
Constrain canonical atlas size: Contraindre la taille de l'atlas canonique.
Max canonical atlas width: Largeur maximale de l'atlas canonique.
Max canonical atlas height: Hauteur maximale de l'atlas canonique.

Animation Filter

Filtre les pistes en fonction du nom de la séquence (ex. 'run', 'idle').

Objectif : Utile pour appliquer différentes stratégies d'optimisation à différentes animations.

Utilisation : Par exemple, vous pouvez appliquer des optimisations agressives avec perte (comme DCT) aux animations de personnages en arrière-plan tout en utilisant des optimisations sans perte (comme Spline) pour les actions du personnage principal.

Asset Filter

Filtre les ressources de l'atlas par nom, fonctionne en deux modes : avant le déballage (filtre le texte de l'atlas) ou après le déballage (filtre les sprites).

Objectif : Contrôle quelles ressources sont incluses dans le flux de travail - quelles ressources déballer de l'atlas ou quels sprites déballés inclure dans le réemballage.

Modes :
1. MODE AVANT DÉBALLAGE (avant AtlasUnpacker) :
   - Entrée : atlas_in (atlas_project)
   - Sortie : atlas_out (atlas_project filtré)
   - Flux : InputNode → AssetFilter → AtlasUnpacker
   - Cas d'usage : Filtrer quelles ressources déballer de l'atlas (économise du temps de traitement)

2. MODE APRÈS DÉBALLAGE (après AtlasUnpacker) :
   - Entrée : sprites_in (sprites)
   - Sortie : sprites_out (sprites filtrés)
   - Flux : AtlasUnpacker → AssetFilter → AtlasRepacker
   - Cas d'usage : Filtrer quels sprites déballés inclure dans l'atlas final

Comportement UI :
- En mode AVANT DÉBALLAGE : Analyse le texte de l'atlas pour découvrir les noms de ressources
- En mode APRÈS DÉBALLAGE : Découvre les noms de ressources du tableau de sprites
- Basculer 'Tout autoriser' : Lorsque coché, laisse passer toutes les ressources (liste affichée mais désactivée)
- Cases à cocher : Sélectionner des ressources spécifiques à inclure (lorsque 'Tout autoriser' est décoché)

Exemples :
- Avant déballage : Sélectionner uniquement les ressources 'char_*' pour déballer uniquement les sprites de personnage
- Après déballage : Exclure les sprites 'background_*' de l'atlas final réemballé
- Créer un atlas d'armes uniquement en sélectionnant le motif 'weapon_*'

Bone Filter

Filtre les pistes de séquence d'os en fonction du nom de l'os.

Objectif : Permet de cibler ou d'exclure des os spécifiques du processus d'optimisation.

Utilisation : Vous pourriez vouloir exclure les os sensibles, comme ceux utilisés pour les expressions faciales, d'une optimisation agressive pour préserver chaque détail tout en optimisant fortement les os moins importants.

Skin Filter

Filtre les données de séquence et les ressources en fonction des noms de skin.

Objectif : Traiter uniquement des skins spécifiques d'un projet Spine multi-skin.

Utilisation : Lorsqu'un projet Spine a plusieurs skins (ex. 'default', 'armor', 'casual'), ce nœud vous permet de filtrer quels skins inclure dans le traitement.

Paramètres :
- **Skins List** : Cases à cocher pour chaque skin disponible
- **Allow All** : Bascule pour inclure tous les skins (par défaut)

Cas d'utilisation :
- Créer un atlas séparé par skin
- Appliquer différentes optimisations à différents skins
- Exclure les skins rarement utilisés du build optimisé

Note : Les skins partagent la structure du squelette mais peuvent avoir différents attachments.

Slot Filter

Filtre les pistes de séquence de slot en fonction du nom du slot.

Objectif : Utile pour cibler ou exclure des slots spécifiques qui peuvent avoir des exigences particulières de timing ou de visibilité.

Utilisation : Vous pouvez l'utiliser pour exclure les slots d'armes ou d'effets qui sont commutés par code d'être affectés par les optimisations de visibilité des attachments.

Parameter Filter

Filtre les pistes de séquence en fonction de leur type de propriété (ex. rotation, scale, color).

Objectif : Permet d'appliquer les optimisations suivantes uniquement à des types spécifiques de données de séquence.

Utilisation : Placez ce nœud avant un optimiseur pour limiter sa portée. Par exemple, vous pouvez appliquer l'optimisation RDP uniquement aux pistes 'translation' et 'scale'.

Atlas Unpacker

Extrait les sprites individuels d'un atlas de texture Spine.

Objectif : Décompose un fichier atlas en sprites individuels, permettant une analyse ou un reconditionnement individuels.

Utilisation : Connectez la sortie 'atlas_project' d'InputNode à l'entrée 'atlas_project_in' de ce nœud. La sortie peut ensuite être envoyée à AssetViewer pour inspection ou à AtlasRepacker pour optimisation.

⭐ Recadrage de maillage : Connectez la sortie 'Original JSON' d'InputNode à l'entrée 'Skeleton JSON' pour activer le recadrage automatique des sprites aux limites de leur maillage (au lieu de limites rectangulaires). Cela réduit considérablement l'utilisation de la mémoire de texture pour les sprites avec pièces jointes de maillage en supprimant les pixels transparents en dehors de l'enveloppe du maillage.

Sorties :
- **sprites_out** : Tableau de sprites standardisé (pour viewer/repacker)
- **sprites_data_out** : Images/métadonnées de sprites extraites (bundle structuré)
- **atlas_out** : Pass-through du projet d’atlas

Clés de socket : atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

Reconditionne les sprites individuels en un ou plusieurs nouveaux atlas de texture optimisés.

Objectif : Optimise la mémoire de texture et réduit potentiellement les appels de dessin en créant des feuilles de sprites efficaces.

Utilisation : Accepte 'sprites_data' (généralement depuis AtlasUnpacker) et génère une nouvelle disposition d'atlas.

Paramètres :
- **Max Texture Size** : Largeur/hauteur maximale des pages d'atlas de sortie.
- **Padding** : Distance en pixels entre chaque sprite.
- **Scale** : Redimensionne tous les sprites avant l'empaquetage.
- **Power of Two** : Force les dimensions de l'atlas de sortie à être des puissances de deux (ex. 1024, 2048), requis par certaines plateformes.
- **Allow Rotation** : Permet aux sprites d'être tournés de 90 degrés pour une meilleure efficacité d'empaquetage.

Atlas Viewer

Outil léger de visualisation et d’analyse d’atlas pour inspecter la structure de l’atlas avant le dépaquetage.

Objectif : Offre un moyen rapide de prévisualiser les pages et régions d’atlas sans effectuer l’opération lourde de dépaquetage. Aide à valider la structure de l’atlas et à identifier les régions inutilisées.

Utilisation : Connectez la sortie 'atlas_project' d’InputNode à l’entrée 'atlas'. Vous pouvez aussi connecter 'original_json_out' à l’entrée 'json' pour analyser l’utilisation des régions.

Fonctionnalités :
- Prévisualisation des pages d’atlas avec limites des régions
- Mise en évidence des régions : Vert = utilisé, Rouge = inutilisé dans le squelette
- Contrôles de navigation des pages
- Statistiques indiquant les régions totales et inutilisées

Cas d’utilisation :
- Validation rapide de l’atlas avant optimisation
- Identification du poids mort (régions inutilisées)
- Débogage des problèmes d’empaquetage d’atlas
- Compréhension de la structure des ressources

Clés de socket : atlas_project, atlas_in, atlas, json

Page Info: Dimensions et informations de la page d'atlas.
Stats: Statistiques d'utilisation de l'espace et nombre de sprites.

Atlas Merger

Combine plusieurs sources d'atlas en un seul atlas unifié.

Objectif : Fusionner plusieurs projets d'atlas en un seul.

Entrée :
- **atlas_inputs** : Tableau multi-entrée de projets d'atlas

Sorties :
- **atlas_out** : Projet d'atlas fusionné
- **merged_out** : Sortie fusionnée héritée
- **merged_atlas_out** : Sortie fusionnée héritée

Cas d'utilisation :
- Combiner l'atlas de personnage avec l'atlas d'armes
- Fusionner les sprites de base avec le contenu DLC
- Recombiner après traitement d'atlas parallèle

Pipeline typique :
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Avant le Repacker, les données sont des sprites individuels ; après le Repacker, elles deviennent un projet d'atlas. Atlas Merger combine les projets d'atlas, puis un passage final Unpacker → Repacker recompacte le tout plus étroitement en un seul atlas unifié.

Asset Viewer

Affiche les sprites individuels d'un atlas décompressé.

Objectif : Outil de débogage visuel pour la manipulation d'atlas.

Utilisation : Accepte 'sprites_data' du nœud Atlas Unpacker et vous permet de visualiser chaque image extraite, d'examiner ses propriétés (dimensions, rotation, etc.), et de vérifier l'exactitude visuelle après décompression.

Asset select: Sélection d'asset pour visualisation.
Pixel stats: Afficher les statistiques de pixels de l'asset.