Diese Anleitung hilft Ihnen, schnell mit dem JSON Optimizer zu starten.
Projekt laden: Verwenden Sie den InputNode, um Ihre .json-, .atlas- und .png-Dateien zu laden.
Preset wählen (Plus-Modus): Im Plus-Modus wählen Sie im rechten Panel eines der integrierten Presets (z. B. "Basic Fallback"). Dadurch wird automatisch ein Optimierungs-Graph erstellt. Im Free-Modus erstellen Sie einen minimalen manuellen Graphen: InputNode → QuantizerNode → OutputNode.
Graph ausführen: Klicken Sie auf die Schaltfläche "Graph ausführen".
Ergebnisse vergleichen: Wechseln Sie zum Tab "Ansicht", um die Original- und die optimierten Animationen visuell zu vergleichen.
Änderungen prüfen: In den Tabs "Ergebnisse" und "Statistiken" finden Sie detaillierte Informationen dazu, welche Schlüssel geändert oder gelöscht wurden.
Socket-Typen & Datenfluss
SocketsTypenDatenVerbindungen
Dieser Artikel erklärt die Datentypen, die von Sockets im Node-Graph verwendet werden, und was womit verbunden werden kann.
Schnellregel
Die meisten Verarbeitungs-Knoten arbeiten mit einem Spine Payload. Atlas-bezogene Knoten arbeiten mit einem Atlas Project oder Sprites. Verwenden Sie ValidatorNode, wenn Sie unsicher sind, welchen Typ ein Socket erwartet.
Socket-Typen
Spine Payload — laufzeitfreundliche Darstellung des Spine-Projekts, die von den meisten Verarbeitungs-Knoten verwendet wird.
Atlas Project — Atlas-Metadaten + Seitenbilder, die von Atlas-Knoten verwendet werden.
re-polish bietet zwei Abonnementstufen für unterschiedliche Bedürfnisse.
Free-Plan
✓ Basis-Knotengraph
✓ JSON-Viewer
✓ Timeline mit mehreren Tracks und anpassbarem Mix zwischen Animationen
✓ Begrenzte Optimierungen
✓ Spine-Versionen: 4.2, 4.1, 4.0, 3.8, 3.7
Plus-Plan ($5/Monat)
✓ Alle kostenlosen Funktionen
✓ Optimierungs-Toolkit für Keyframes, Kurven und Texturen
✓ Physik in Keyframes backen
✓ Gebackene Keyframes in Kurven bereinigen
✓ Graph-Voreinstellungen
✓ Priorisierter Support
Plus erhalten
Klicken Sie in der oberen Navigation auf Upgrade, dann:
Wählen Sie Get Plus
Sie werden zu Patreon weitergeleitet — schließen Sie das Abonnement ab
Kehren Sie zum Node-Editor zurück, während Sie mit demselben Patreon-Konto angemeldet sind, damit der Dienst die Verknüpfung prüfen und Plus aktivieren kann
(Optional) Geben Sie einen Aktivierungscode ein (für Sonderaktionen)
Grundkonzepte: Verlustbehaftet vs. Verlustfrei
konzepteverlustbehaftetverlustfreianfänger
Alle Optimierungsmethoden werden in zwei Typen unterteilt:
Empfehlung: Beginnen Sie immer mit verlustfreien Optimierungen. Verwenden Sie verlustbehaftete Methoden nur, wenn eine weitere Reduktion der Dateigröße erforderlich ist, und prüfen Sie das Ergebnis immer visuell.
Wie man Effizienz misst
anleitungmetrikenstatistiken
Um die Effektivität Ihrer Optimierung zu verstehen, achten Sie auf folgende Metriken:
Dateigröße: Die endgültige Größe der .json-Datei ist das Hauptziel der Optimierung.
Anzahl der Schlüsselbilder: Im "Statistiken"-Tab finden Sie Tabellen und Diagramme, die zeigen, wie viele Schlüsselbilder in jeder Animationssequenz entfernt wurden.
Visueller Vergleich: Verwenden Sie immer den "Ansicht"-Tab, um "Vorher"- und "Nachher"-Animationen zu vergleichen. Stellen Sie sicher, dass verlustbehaftete Optimierungen keine inakzeptablen visuellen Artefakte eingeführt haben.
Bericht in der "Ergebnisse"-Tabelle: Hier können Sie jede spezifische Änderung an Ihren Daten detailliert prüfen.
Viewer: Steuerungs-Panel
BetrachtersteuerungUI
Der Tab Ansicht legt ein Steuerungs-Panel über die Canvas. Es ist in drei Gruppen aufgeteilt:
Animationssteuerung
Animationen — wählt aus, welche Spine-Animationssequenz abgespielt wird.
Skin — wählt aus, welcher Skin angewendet wird.
Geschwindigkeit — Multiplikator für die Wiedergabegeschwindigkeit (0.1× → 3.0×).
Ansichtssteuerung
Ansicht zurücksetzen — stellt die Standard-Kamera-/Layout-Positionierung wieder her.
Ansichtsoptionen — numerische Versätze zur Positionierung der Vergleichsansicht: Abstand X / Abstand Y (Abstand zwischen Original/Optimiert) und Versatz X / Versatz Y (globaler Versatz).
Fehlersuche-Steuerung
Fehlersuchemodus — aktiviert Fehlersuche-Overlays (abhängig vom Runtime-Support).
Physik aktivieren — schaltet die Physiksimulation um (wenn das Skelett Physik nutzt).
Beschriftungen — schaltet das Beschriftungs-Overlay um.
Viewer: Performance-Panel
LeistungFPSspeicherUI
Das Performance-Panel zeigt Laufzeitmetriken in Echtzeit für das/die aktuell abgespielte(n) Skeleton(s).
Echtzeit
FPS — Frames pro Sekunde, gemessen vom Monitor.
Frame Time — Zeit pro Frame in Millisekunden (niedriger ist besser).
FPS chart — die letzten 120 Samples als Balken dargestellt.
Skeleton-Metriken
Visible Slots — wie viele Slots im letzten Sample sichtbar waren.
Avg. Visible — gleitender Durchschnitt sichtbarer Slots (stabiler als ein einzelner Frame).
Vertices — aktuelle Vertex-Anzahl für das Rendering.
Bounds (px) — aktuelle Skeleton-Bounds Breite×Höhe in Pixeln.
Avg. Bounds — gleitender Durchschnitt der Bounds.
Largest Texture — die größte Atlas-Seite (nach Abmessungen), die für das Skeleton erkannt wurde.
Texture Memory — geschätzter Gesamt-Texturspeicher für geladene Atlas-Seiten. Wenn verfügbar, zeigt das Panel zusätzlich eine Aufschlüsselung pro Seite (Dateiname, Abmessungen und geschätzte Größe).
Verbesserungen (wenn Optimized verfügbar ist)
Slot Improvement — vergleicht Avg. Visible zwischen Original und Optimized.
Memory Change — vergleicht Texture Memory zwischen Original und Optimized.
Viewer: Zeitleiste
viewertimelineanimationplaybackguide
Das Timeline-Panel ist ein andockbarer Animations-Sequenzer am unteren Rand des Viewers. Damit können Sie Animations-Clips auf mehreren Tracks anordnen, die Wiedergabe steuern und Übergänge in der Vorschau ansehen.
Tracks & Clips
Bis zu 4 Animations-Tracks — jeder Track entspricht einem Spine-trackIndex-Layer. Höhere Tracks überblenden sich über niedrigere.
Animation hinzufügen — klicken Sie auf die +-Schaltfläche auf einem Track, um die Animationsauswahl zu öffnen (mit Suchfilter).
Clips ziehen & Größe ändern — ziehen Sie den Clip-Körper, um ihn entlang des Tracks zu verschieben; ziehen Sie an den linken/rechten Kanten, um die Startzeit oder Dauer zu ändern.
Clips löschen — wählen Sie einen Clip und drücken Sie Delete oder Backspace.
Überlappungserkennung — überlappende Clips auf demselben Track werden rot hervorgehoben.
Vorheriger / Nächster — springt zum Anfang des vorherigen oder nächsten Clips.
Animationsgeschwindigkeit — Schieberegler von 0,1× bis 3,0×.
Auto-Stopp — die Wiedergabe stoppt automatisch am Ende der Timeline.
Übergangs-Mischung
Globale Mischdauer — setzt die Standard-Überblendzeit zwischen aufeinanderfolgenden Clips.
Individuelle Übergangs-Overrides — klicken Sie auf die Übergangsblase zwischen zwei Clips, um eine benutzerdefinierte Mischdauer festzulegen. Sie können individuelle Overrides auf den globalen Wert zurücksetzen.
Suchen & Scrubbing
Abspielkopf — ziehen Sie den Griff auf dem Zeitlineal oder klicken Sie auf das Lineal, um zu suchen.
Cursor-Zeitvorschau — beim Überfahren des Track-Bereichs wird die Zeit unter dem Cursor angezeigt.
Web Worker — Such- und Event-Berechnungen werden an einen Hintergrund-Worker ausgelagert für flüssige Performance.
Physik-bewusste Wiedergabe
Physik umschalten zwischen Update (aktive Constraints) und None (deaktiviert).
Beim Suchen wird die Skelettzeit vorgerückt, um Physik-Constraints korrekt einzuschwingen.
Multi-Skelett-Unterstützung
Zielpaar-Auswahl — jeder Track kann auf alle Paare (🌐 Alle Paare) oder ein bestimmtes Skelett ausgerichtet werden.
Pro-Skelett Position und Skalierung — X/Y-Versatz und Skalierungseingaben für einzelne Skelette.
Zeichenreihenfolge — numerische Eingabe zur Steuerung der Render-Layer-Priorität.
Position — 4 Ecken (oben-links, oben-rechts, unten-links, unten-rechts).
Schriftgröße — 8–64px, plus Textfarbe-Auswahl.
Wiederholung & Multi-Skelett
Wiederholungsanzahl — 1–100 Schleifendurchläufe.
Zielpaar — ein bestimmtes Skelett oder alle aufnehmen.
Skelett-Modus — Kombiniert (einzelne Datei) / Separate Dateien (eine Datei pro Skelett).
Dateinamen-Vorlage
Vorlagentext mit Variablen: {project}, {animation}, {W}, {H}, {fps}. Eine Live-Vorschau des aufgelösten Dateinamens wird angezeigt.
Timeline-Integration
Der Aufnahmebereich erscheint als rot/orange gestrichelter Clip auf der Timeline. Ziehen Sie an den Kanten, um den Bereich zu ändern, ziehen Sie den Körper zum Verschieben, oder verwenden Sie die Einstellungsschaltfläche (⚙️), um die vollständigen Aufnahmeeinstellungen zu öffnen.
Ergebnisse-Tab
ergebnissetabelleoptimierung
Der Tab Ergebnisse zeigt detaillierte Optimierungs-Ausgaben.
Ergebnistabelle — eine Zeile pro Änderung in den JSON-Optimierungsergebnissen (z. B. welche Animationssequenz/Knochen/Eigenschaft/Schlüsselbild geändert oder entfernt wurde).
Sprite-/Atlas-Vergleich — wenn Texturoptimierung verwendet wird, vergleicht dieser Abschnitt Sprite-Größen und Packing-Ergebnisse.
Tipp: Verwende die Ergebnisse-Ansicht, um zu beantworten: Was hat sich genau geändert?
Statistiken-Tab
statistikendiagrammemetriken
Der Tab Statistiken fasst Optimierungsergebnisse als Diagramme und aggregierte Metriken zusammen.
Optimierungsdiagramm — visualisiert den Optimierungseffekt über den Datensatz (wenn JSON-Optimierungen Änderungen erzeugt haben).
Metriktabelle — wichtige Zahlen wie Original-/Neu-Größen und Reduktionsprozentsatz.
Textur-Packing-Statistiken — falls Atlas-Repacking verwendet wurde: Seiten, Gesamt-/genutzte Fläche, Effizienz und eine Aufschlüsselung pro Seite.
Nutze diesen Tab, um zu beantworten: Wie viel haben wir insgesamt verbessert?
Pipeline-Beispiele (Video)
VideoBeispielePipelinesYouTube
Unten finden Sie vollständige, praxisnahe Pipelines aus der offiziellen YouTube-Playlist.
Spine2D Experiments 1: Kurvenoptimierung mit RDP-Algorithmus — grundlegende Spine‑2D‑Optimierung: Der Ramer–Douglas–Peucker‑(RDP)-Algorithmus entfernt redundante Kurven-/Key‑Daten, um das JSON zu verkleinern. RDP kann wichtige Keys entfernen, daher Animationen immer prüfen und sensible Bones/Slots mit Filter‑Nodes vor dem RDP‑Node ausschließen. Watch on YouTube
Spine2D Experiments 2: Kurvenoptimierung mit Quantisierungs-Algorithmus — Quantisierung ist der sicherste Spine‑2D‑Kurven‑Optimizer: Das Runden von Werten (oft auf 1 Dezimalstelle) bringt sofortige Größenersparnis. Beispiel: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]. Verwende den Quantizer‑Node als letzten Schritt vor dem Output‑Node, um die Optimierung zu fixieren; das Video zeigt Vorher/Nachher mit nahezu unveränderter Optik. Watch on YouTube
Spine2D Experiments 3: Kurven mit Spline- und Refit-Algorithmen neu aufbauen — Spline ist für gerade Segmente verlustfrei (entfernt redundante Zwischen‑Keys), während Refit verlustbehaftet, aber sehr leistungsfähig ist: es baut komplexe Abschnitte als eine einzelne Bézier‑Kurve neu auf. Diese Algorithmen sind ideal nach Physics‑Baking und Cleanup über den Schneider‑Node. Hinweis: Refit‑Iterationen über 100 können Minuten dauern, um die beste Kurve zu finden. Das Video zeigt beide Methoden und den %‑Optimierungsgewinn. Watch on YouTube
Spine2D Experiments 4: Redundante Daten mit Attachment-Visibility- und Cleanup-Knoten entfernen — strukturelle Spine‑2D‑Optimierung mit Attachment Visibility und Cleanup‑Nodes. Attachment Visibility deaktiviert Attachments, wenn Alpha auf 0 fällt, und stellt sie beim Einblenden wieder her, reduziert Draw Calls und entfernt redundante Keys. Cleanup entfernt logische Redundanzen: ungenutzte Color/Alpha‑Tracks, IK‑Rotations‑Keys, die vollständig von Constraints gesteuert werden, und Path‑Constraint‑Keys. Das Video zeigt, wie sich diese logikbasierten Optimierungen von der Kurvensimplifizierung unterscheiden. Watch on YouTube
Spine2D Experiments 5: Nichtlineare Pipelines (Filter & Merge-Knoten) — nichtlineare Spine‑2D‑Optimierung: splitte den Datenstrom mit Filtern (Animationssequenz, Bone, Slot, Parameter oder Skin), führe verschiedene Algorithmen auf parallelen Zweigen aus (z. B. aggressive Kompression für Körperknochen bei verlustfreier Gesichtsanimation) und kombiniere die Zweige mit dem Merge‑Node zu einem Skeleton. Dieser Arbeitsablauf geht über Input → Optimize → Output hinaus und lässt dich gezielt nur das optimieren, was optimiert werden soll. Watch on YouTube
Spine2D Experiments 6: Textur-Repacking & selektives Skalieren mit Custom-Knoten — fortgeschrittene Textur‑Optimierungs‑Pipelines: Die Atlas‑Unpacker/Repacker‑Nodes erlauben Entpacken, Größenänderung/Kompression und Repacking von Atlassen innerhalb eines Graphen – schneller als Standard‑Spine‑Arbeitsabläufe. Mit der nichtlinearen Pipeline kannst du Assets aufteilen, Charakter‑Texturen bei 100 % lassen und andere auf 25 % skalieren, dann alles wieder zu einem gemeinsamen Atlas zusammenführen. Atlas/Asset Viewer‑Nodes bieten visuelle Prüfung und Filterung von Assets und Atlassen in jeder Phase. Dadurch lassen sich Resize‑Ziele leichter festlegen, selektiv verarbeiten und als wiederverwendbare Vorlage kombinieren. Watch on YouTube
Spine2D Experiments 7: Sofortige Skeleton-Skalierung mit Scale-Knoten — End‑to‑End‑Spine‑2D‑Optimierung plus Skeleton‑Scaling. Der Scale‑Node ersetzt den mühsamen Spine‑Arbeitsablauf (Export/Import, Repack/Unpack, Pfade fixen) durch einen einzigen Graph‑Schritt: Zielgröße setzen, Ergebnis sofort im Viewport prüfen und in Echtzeit iterieren. Das Video verbindet Kurven-/Key‑Optimierung, Asset‑Processing und Skeleton‑Resizing zu einer schlanken Pipeline. Watch on YouTube
Spine2D Experiments 8: Public Beta Node Overview — Überblick über alle Nodes der Public Beta und wie re‑polish die Anforderungen von Animatoren und Entwicklern zusammenführt. Enthält das Bereinigen redundanter Keys, Bézier‑zu‑Linear‑Vereinfachung, Rundung zur Größenreduktion, Entfernen unsichtbarer Attachments, Bereinigung ungenutzter Eigenschaften, Erkennung nicht‑englischer Zeichen sowie Atlas‑Unpack/Filter/Scale/Repack. Der Dual Viewer validiert Ergebnisse mit Side‑by‑Side‑Visual‑ und FPS‑Vergleich. Public Beta live: re-polish.com. Watch on YouTube
Spine2D Experiments 9: Physics-Constraints in Keyframes backen — in diesem Video zeige ich meine neuesten Experimente zum Backen von Physics-Constraints in Standard-Keyframes. Der neue Bake-Algorithmus sorgt für: perfekte Loops (kein Jitter oder Sprung zwischen Start und Ende), optimierte Dateigröße (automatische Kurvenbereinigung hält die JSON-Größe nahe am Original) und Abwärtskompatibilität (gebackene Keys ermöglichen Spine‑4.2‑Physics-Animationen in Spine 4.1 oder sogar 4.0). Watch on YouTube
Nodes
Input
Importiert Spine-Projektdateien, reine JSON-Eingaben, Demo-Assets und ZIP-Pakete in den Graphen.
Zweck: Dies ist der Haupteinstiegspunkt für die meisten Workflows. Der Knoten liest JSON, Atlas und Texturen ein und normalisiert sie zu internen Daten, die nachgelagerte Knoten verarbeiten können.
Unterstützte Modi:
1. Vollständiges Projekt: JSON + Atlas + Texturen
2. Nur JSON: Skelett-/Animationsdaten ohne Atlas verarbeiten
3. ZIP-Paket: ein gepacktes Zip mit einem vollständigen Projekt
4. Demo-Assets: integrierte Beispieldaten für schnelle Tests
Hauptausgaben:
- **payload_out**: normalisierte Daten für Optimierungsknoten
- **original_json_out**: Quell-JSON zum Vergleichen oder Rekonstruieren
- **atlas_project_out**: geparstes Atlas-Projekt, wenn Texturen bereitgestellt werden
Picture Input
Fügt eigenständige PNG/JPEG-Bilder dem Viewport hinzu, damit Sie sauberere Vorschauen und Präsentationsaufnahmen erstellen können.
Zweck: Verwenden Sie diesen Knoten, um Bilder direkt im Viewport als Präsentationsebenen oder visuelle Hilfselemente zu platzieren. Er ist nützlich, wenn Sie eine Szene dekorieren, unterstützende Grafiken hinzufügen und Projektvorschauen vor Video- oder Demoaufnahmen hochwertiger wirken lassen möchten.
Ablauf: Laden Sie ein Bild und verwenden Sie dann die Viewport-Werkzeuge, um es zu skalieren, zu verschieben und seinen Z-Index anzupassen, damit es korrekt in Ihrer Komposition sitzt. So lassen sich ansprechende Showcase-Aufnahmen erstellen, ohne die eigentlichen Spine-Projektdaten zu verändern.
Dieser Knoten ist eigenständig und stellt keine Graph-Sockets bereit.
Output
Sammelt das Endergebnis und erlaubt den Download optimierter Daten als Einzeldateien, Dateisets oder Archive.
Zweck: Dient als Export-Zentrale für optimiertes JSON, Atlas-Daten, Texturen und Sprites. Der Node kann sowohl ein einzelnes JSON/Atlas/Texturen-Set als auch mehrere Dateisets verarbeiten. Wenn nur Sprites anliegen, kann er auch ausschließlich Bildresultate ausgeben, ohne ein vollständiges Spine-Projekt neu aufzubauen.
Exportoptionen:
- Dateien einzeln oder als ein einziges Archiv herunterladen
- Gepackte Ergebnisse oder ein Archiv mit entpackten Dateien herunterladen
- JSON kompakt oder in lesbarer Form exportieren
- Vollständige Spine-Projektdaten oder nur Sprite-/Bildresultate exportieren
Verkettung: OutputNode muss nicht das absolute Ende des Graphen sein. Sie können die Ausgänge in eine weitere Pipeline-Stufe einspeisen und dieselben Dateien erneut optimieren. In der Praxis wurde die Optimierung von Keys und Kurven mit bis zu 3 aufeinanderfolgenden Iterationen getestet.
Wichtige Ausgänge:
- **reconstructed_json_out**: Neu aufgebautes Spine-JSON
- **original_json_passthrough_out**: Original-JSON-Passthrough
- **payload_out**: Payload-Passthrough für weitere Verkettung
- **changes**: Gesammelte Optimierungsänderungen
- **atlas_assets**: Exportbereite Atlas-Assets
RDP
Vereinfacht Animationskurven (RDP).
Zweck: Reduziert die Anzahl der Schlüsselbilder in linearen oder nahezu linearen Animationssegmenten, indem Punkte entfernt werden, die auf einer Geraden zwischen zwei anderen liegen.
Goldene Regel: Standardmäßig deaktiviert. Sie schützt Kurven mit ausgeprägter Form (Fläche/Krümmung) davor, zu linearisiert zu werden. Nur für aggressivere Komprimierung nach visueller Prüfung deaktivieren.
Socket-Keys: payload_in, payload_out, changes
Bezier-Refit: reduziert Schlüsselbilder durch Kurvenapproximation.
Zweck: Passt weniger Kurven an und bleibt dabei innerhalb einer Toleranz.
Socket-Keys: payload_in, payload_out, changes
Quantizer
Reduziert die Genauigkeit numerischer Werte in Schlüsselbilder und Kurven.
Zweck: Einfache, aber effektive Methode zur Reduzierung der Dateigröße durch Runden von Zahlen auf eine bestimmte Anzahl von Dezimalstellen.
Verwendung: Kann auf fast alle Animationsdaten angewendet werden. Wird effektiver bei höherer Schlüsselbild-Anzahl.
Vorsicht: Zu aggressive Quantisierung (geringe Genauigkeit) kann Zittern oder visuelle Artefakte in Animationen verursachen.
Cleanup
Führt verschiedene Bereinigungsaufgaben durch, um redundante oder unnötige Animationsdaten zu entfernen.
Zweck: Spezielles Werkzeug zum Entfernen bestimmter Arten redundanter Daten, die andere Optimierer möglicherweise übersehen.
Verwendung: Verbinden Sie Ihr Payload mit 'payload_in' und nehmen Sie das Ergebnis von 'payload_out'. Wenn Sie zusätzlich einen Report pro Änderung möchten, nutzen Sie auch 'changes'.
Socket-Schlüssel:
- Eingänge: payload_in
- Ausgänge: payload_out, changes
Derzeit unterstützte Cleanups:
1. **Remove Unused Color/Alpha Tracks**: Entfernt Color-/Alpha-Timelines für Slots, die während der Animationssequenz nie sichtbar sind.
2. **Remove Redundant IK Rotations**: Entfernt Rotations-Schlüsselbilder von Bones, die vollständig von einer IK-Constraint mit 100% Mix gesteuert werden.
3. **Remove Path Constraint Keys**: Entfernt Rotate-/Translate-Schlüsselbilder von Bones, die vollständig von einer Path-Constraint gesteuert werden (Mix-Werte bei 100%).
4. **Sanitize Non-English Characters**: Ersetzt nicht-englische Zeichen in Namen/Bezeichnern, um Probleme in nachgelagerten Tools zu vermeiden.
Scale
Skaliert alle numerischen Werte in Animations-Schlüsselbilder um einen angegebenen Faktor.
Zweck: Skaliert Animationsdaten gleichmäßig, nützlich für proportionale Skelett-Größenänderung oder Anpassung der Animationsintensität.
Verwendung: Mit Payload verbinden und Skalierungsfaktor einstellen. Werte über 1.0 vergrößern, unter 1.0 verkleinern.
Parameter:
- **Scale Factor**: Multiplikator für alle Positions- und Größenwerte.
- **Include Rotations**: Ob auch Rotationswerte skaliert werden (normalerweise deaktiviert).
Anwendungsfälle:
- Größenanpassung importierter Animationen an neue Skelettdimensionen
- Erstellen übertriebener oder subtiler Animationsvarianten
- Stapel-Skalierung mehrerer Animationen für verschiedene Charaktergrößen
Schneider
Passt glatte Bézier-Kurven an Animations-Schlüsselbilder mit dem Schneider-Kurvenanpassungsalgorithmus an.
Zweck: Fortgeschrittene Kurvenanpassung, die natürlich aussehende Bézier-Kurven aus dichten Schlüsselbild-Sequenzen erzeugt.
Verfügbarkeit: **Nur Plus-Knoten**.
Funktionsweise: Der Schneider-Algorithmus analysiert Schlüsselbild-Positionen und Tangenten, um optimale Bézier-Kontrollpunkte zu generieren, die der Originalbewegung entsprechen.
Parameter:
- **Error Tolerance**: Maximal zulässige Abweichung von Original-Schlüsselbilder. Niedriger = genauer, höher = glattere Kurven.
- **Corner Angle**: Schwellenwinkel (Grad), bei dem die Kurve in Segmente aufgeteilt wird.
Ideal für:
- Handgezeichnete oder importierte Animationen mit vielen Schlüsselbilder
- Konvertierung linearer Interpolation in glatte Bézier-Kurven
- Reduzierung der Schlüsselbild-Anzahl bei Erhaltung der Kurvenqualität
Hinweis: Rechenintensiver als einfachere Algorithmen wie RDP, erzeugt aber bessere Kurvenqualität.
Physics Constraint Bake
Bake Physics Constraints to Keys: wandelt PhysicsConstraint-Bewegung in Rotations-/Translations-Schlüsselbilder um und entfernt Physik-Timelines.
Zweck: Wandelt Laufzeit-Physiksimulation in explizite Schlüsselbilder um, damit Animationen deterministisch und ohne PhysicsConstraints editierbar sind. Nach dem Bake werden PhysicsConstraints und Physik-Timelines aus dem Payload entfernt.
Verfügbarkeit: **Nur Plus-Knoten**.
Ein-/Ausgänge:
- **payload_in** → **payload_out** (gebacken)
- **changes** (optionale Änderungs-Liste)
Steuerungen:
- **Sample FPS**: Abtastrate der Simulation für das Bake.
- **Bake Rotation**: Schreibt Rotations-Keys.
- **Bake Translation**: Schreibt Translations-Keys.
- **Bake Translation (Children)**: Wendet Translation-Bake auf Kindknochen an, die von Physik abhängen.
Hinweise:
- Benötigt das ursprüngliche Spine-JSON zur Rekonstruktion der Simulation.
- Verwenden, wenn PhysicsConstraints entfernt werden sollen, die Bewegung aber erhalten bleiben soll.
Attachment Visibility
Optimiert das Rendering, indem der Attachment eines Slots auf null gesetzt wird, wenn sein Alpha null ist.
Zweck: Verhindert, dass die Game-Engine unsichtbare Attachments verarbeiten oder rendern muss.
Verwendung: Analysiert Alpha-/Farb-Tracks und fügt automatisch Schlüsselbilder auf dem entsprechenden 'attachment'-Track hinzu oder ändert diese.
Parameter:
- **Alpha Threshold**: Alpha-Wert, unter dem ein Attachment als unsichtbar betrachtet wird.
- **Auto Restore**: Wenn aktiviert, stellt der Node automatisch den letzten sichtbaren Attachment wieder her, wenn der Alpha-Wert den Schwellenwert überschreitet.
Payload Merger
Führt mehrere verarbeitete Animations-Payloads wieder zu einem einzigen vereinheitlichten Payload zusammen.
Zweck: Wesentlich für parallele Verarbeitungspipelines, bei denen verschiedene Animationen oder Knochengruppen separat optimiert werden und wieder zusammengeführt werden müssen.
Zusammenführungsstrategie:
1. **Basis-Eingang**: Liefert die Skelettstruktur (Knochen, Slots, Skins usw.)
2. **Override-Eingänge**: Liefern verarbeitete Tracks, die Basis-Tracks ersetzen
3. **Letzter Schreiber gewinnt**: Wenn mehrere Overrides denselben Track liefern, hat der letzte Priorität
Konflikterkennung:
- Konflikte zwischen Override-Eingängen werden erkannt und gemeldet
- Basis → Override-Ersetzung ist normales Verhalten (kein Konflikt)
- Warnmeldung bei Track-Konflikten
Beispiel-Pipeline:
```
Input → AnimFilter('run') → Cleanup ───────┐
→ AnimFilter('idle') → Quantizer ────┤
→ (base) ────────────────────────────→ Merger → Output
```
Anwendungsfälle:
- Verschiedene Optimierer für verschiedene Animationen
- Separate Knochen-/Slot-Verarbeitung mit Wiederzusammenführung
- A/B-Tests verschiedener Optimierungsstrategien
Animation Viewer
Visuelles Werkzeug zur Inspektion und zum Vergleich von Animationskurven vor und nach der Optimierung.
Zweck: Bietet eine grafische Darstellung von Schlüsselbilder und Kurven für den ausgewählten Track.
Verwendung: Durch Verbinden beider Eingänge 'payload_before' und 'payload_after' werden die Original- und optimierten Kurven überlagert, was die Visualisierung der Auswirkungen Ihrer Optimierungen erleichtert.
Animation Filter
Filtert Animations-Tracks basierend auf dem Animationsnamen (z.B. 'run', 'idle').
Zweck: Nützlich für die Anwendung unterschiedlicher Optimierungsstrategien auf verschiedene Animationen.
Verwendung: Zum Beispiel können Sie aggressive verlustbehaftete Optimierungen (wie DCT) auf Hintergrund-Charakter-Animationen anwenden, während Sie verlustfreie Optimierungen (wie Spline) für Hauptcharakter-Aktionen verwenden.
Asset Filter
Filtert Atlas-Assets nach Namen, funktioniert in zwei Modi: vor dem Entpacken (filtert Atlas-Text) oder nach dem Entpacken (filtert Sprites).
Zweck: Steuert, welche Assets in den Arbeitsablauf einbezogen werden - welche Assets aus dem Atlas entpackt oder welche entpackten Sprites in das Repacken einbezogen werden.
Modi:
1. VOR-ENTPACK-MODUS (vor AtlasUnpacker):
- Eingang: atlas_in (atlas_project)
- Ausgang: atlas_out (gefiltertes atlas_project)
- Arbeitsablauf: InputNode → AssetFilter → AtlasUnpacker
- Anwendungsfall: Filtern, welche Assets aus dem Atlas entpackt werden (spart Verarbeitungszeit)
2. NACH-ENTPACK-MODUS (nach AtlasUnpacker):
- Eingang: sprites_in (sprites)
- Ausgang: sprites_out (gefilterte sprites)
- Arbeitsablauf: AtlasUnpacker → AssetFilter → AtlasRepacker
- Anwendungsfall: Filtern, welche entpackten Sprites in den endgültigen Atlas aufgenommen werden
UI-Verhalten:
- Im VOR-ENTPACK-MODUS: Analysiert Atlas-Text, um Asset-Namen zu erkennen
- Im NACH-ENTPACK-MODUS: Erkennt Asset-Namen aus dem Sprite-Array
- 'Alle zulassen'-Schalter: Wenn aktiviert, werden alle Assets durchgelassen (Liste angezeigt, aber deaktiviert)
- Kontrollkästchen: Wählen Sie bestimmte Assets aus (wenn 'Alle zulassen' deaktiviert ist)
Beispiele:
- Vor Entpacken: Nur 'char_*'-Assets auswählen, um nur Charakter-Sprites zu entpacken
- Nach Entpacken: 'background_*'-Sprites vom endgültigen neu verpackten Atlas ausschließen
- Nur-Waffen-Atlas erstellen, indem 'weapon_*'-Muster ausgewählt wird
Bone Filter
Filtert Knochen-Animations-Tracks basierend auf dem Knochennamen.
Zweck: Ermöglicht das Zielen oder Ausschließen spezifischer Knochen vom Optimierungsprozess.
Verwendung: Sie möchten möglicherweise sensible Knochen, wie die für Gesichtsausdrücke verwendeten, von aggressiver Optimierung ausschließen, um jedes Detail zu bewahren, während weniger wichtige Knochen stark optimiert werden.
Skin Filter
Filtert Animations- und Asset-Daten basierend auf Skin-Namen.
Zweck: Verarbeitet nur bestimmte Skins aus einem Multi-Skin Spine-Projekt.
Verwendung: Wenn ein Spine-Projekt mehrere Skins hat (z.B. 'default', 'armor', 'casual'), können Sie mit diesem Node filtern, welche Skins verarbeitet werden sollen.
Parameter:
- **Skins List**: Kontrollkästchen für jeden verfügbaren Skin
- **Allow All**: Schalter, um alle Skins einzubeziehen (Standard)
Anwendungsfälle:
- Separate Atlas pro Skin erstellen
- Verschiedene Optimierungen auf verschiedene Skins anwenden
- Selten verwendete Skins vom optimierten Build ausschließen
Hinweis: Skins teilen die Skelettstruktur, können aber unterschiedliche Attachments haben.
Slot Filter
Filtert Slot-Animations-Tracks basierend auf dem Slot-Namen.
Zweck: Nützlich zum Zielen oder Ausschließen spezifischer Slots, die besondere Timing- oder Sichtbarkeitsanforderungen haben können.
Verwendung: Sie können dies verwenden, um Waffen- oder Effekt-Slots, die per Code gewechselt werden, davon auszuschließen, von Attachment-Sichtbarkeitsoptimierungen betroffen zu werden.
Parameter Filter
Filtert Animations-Tracks basierend auf ihrem Eigenschaftstyp (z.B. Rotation, Scale, Color).
Zweck: Ermöglicht die Anwendung nachfolgender Optimierungen nur auf bestimmte Arten von Animationsdaten.
Verwendung: Platzieren Sie diesen Node vor einem Optimierer, um seinen Umfang zu begrenzen. Zum Beispiel können Sie RDP-Optimierung nur auf 'translation'- und 'scale'-Tracks anwenden.
Atlas Unpacker
Extrahiert einzelne Sprites aus einem Spine-Texturatlas.
Zweck: Zerlegt eine Atlas-Datei in ihre Einzelsprites, um individuelle Analyse oder Neupackung zu ermöglichen.
Verwendung: Verbinden Sie den 'atlas_project'-Ausgang vom InputNode mit dem 'atlas_project_in'-Eingang dieses Knotens. Die Ausgabe kann an AssetViewer zur Inspektion oder an AtlasRepacker zur Optimierung gesendet werden.
⭐ Mesh-Zuschnitt: Verbinden Sie den 'Original JSON'-Ausgang vom InputNode mit dem 'Skeleton JSON'-Eingang, um automatisches Zuschneiden von Sprites auf ihre Mesh-Grenzen (anstelle rechteckiger Grenzen) zu aktivieren. Dies reduziert den Texturspeicherverbrauch für Sprites mit Mesh-Anhängen erheblich, indem transparente Pixel außerhalb der Mesh-Hülle entfernt werden.
Ausgänge:
- **sprites_out**: Standardisiertes Sprite-Array (für Viewer/Repacker)
- **sprites_data_out**: Extrahierte Sprite-Bilder/Metadaten (strukturiertes Bundle)
- **atlas_out**: Atlas-Project-Durchleitung
Socket-Schlüssel: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out
Atlas Repacker
Packt einzelne Sprites in einen oder mehrere neue, optimierte Textur-Atlanten.
Zweck: Optimiert Texturspeicher und reduziert potenziell Draw Calls durch Erstellen effizienter Spritesheets.
Verwendung: Akzeptiert 'sprites_data' (normalerweise von AtlasUnpacker) und erzeugt ein neues Atlas-Layout.
Parameter:
- **Max Texture Size**: Maximale Breite/Höhe der Ausgabe-Atlas-Seiten.
- **Padding**: Abstand in Pixeln zwischen jedem Sprite.
- **Scale**: Skaliert alle Sprites vor dem Packen.
- **Power of Two**: Erzwingt, dass die Ausgabe-Atlas-Dimensionen Zweierpotenzen sind (z.B. 1024, 2048), von einigen Plattformen erforderlich.
- **Allow Rotation**: Erlaubt Sprites um 90 Grad zu drehen für bessere Packeffizienz.
Atlas Viewer
Leichtgewichtiges Atlas-Visualisierungs- und Analysewerkzeug zur Prüfung der Atlasstruktur vor dem Entpacken.
Zweck: Ermöglicht eine schnelle Vorschau von Atlas-Seiten und Regionen, ohne den aufwändigen Entpackvorgang auszuführen. Hilft, die Atlas-Struktur zu prüfen und ungenutzte Regionen zu erkennen.
Verwendung: Verbinden Sie den 'atlas_project'-Ausgang vom InputNode mit dem 'atlas'-Eingang. Optional den 'original_json_out'-Ausgang mit dem 'json'-Eingang verbinden, um die Regionsnutzung zu analysieren.
Funktionen:
- Visuelle Vorschau der Atlas-Seiten mit Regionsgrenzen
- Regionshervorhebung: Grün = genutzt, Rot = ungenutzt im Skeleton
- Seiten-Navigation
- Statistiken zu Gesamt- und ungenutzten Regionen
Einsatzfälle:
- Schnelle Atlas-Prüfung vor der Optimierung
- Erkennen von Ballast (ungenutzte Regionen)
- Fehlersuche bei Atlas-Packproblemen
- Verständnis der Asset-Struktur
Socket-Schlüssel: atlas_project, atlas_in, atlas, json
Atlas Merger
Kombiniert mehrere Atlas-Quellen zu einem einzigen vereinheitlichten Atlas.
Zweck: Mehrere Atlas-Projekte zu einem zusammenführen.
Eingang:
- **atlas_inputs**: Multi-Input-Array von Atlas-Projekten
Ausgänge:
- **atlas_out**: Zusammengeführtes Atlas-Projekt
- **merged_out**: Veralteter zusammengeführter Ausgang
- **merged_atlas_out**: Veralteter zusammengeführter Ausgang
Anwendungsfälle:
- Charakter-Atlas mit Waffen-Atlas kombinieren
- Basis-Sprites mit DLC-Inhalten zusammenführen
- Nach paralleler Atlas-Verarbeitung wieder zusammenführen
Typische Pipeline:
```
InputA → Unpacker → Repacker ─┐
├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Vor dem Repacker sind die Daten einzelne Sprites; nach dem Repacker werden sie zu einem Atlas-Projekt. Atlas Merger kombiniert die Atlas-Projekte, und ein abschließender Unpacker → Repacker-Durchlauf packt alles dichter in einen einzigen Atlas.
Asset Viewer
Zeigt einzelne Sprites aus einem entpackten Atlas an.
Zweck: Visuelles Debugging-Tool für Atlas-Manipulation.
Verwendung: Akzeptiert 'sprites_data' vom Atlas Unpacker-Node und ermöglicht es Ihnen, jedes extrahierte Bild zu visualisieren, seine Eigenschaften (Dimensionen, Rotation usw.) zu untersuchen und die visuelle Genauigkeit nach dem Entpacken zu überprüfen.