Skip to main content
Go to Editor

Baza wiedzy

Ten przewodnik pomoże Ci szybko rozpocząć pracę z JSON Optimizer. Załaduj projekt: Użyj InputNode , aby załadować pliki .json , .atlas oraz .png . Wybierz prese

FPSPlusPremiumUIYouTubeanimationbezstratnecennikdaneexportgniazdaguidekoncepcjemetrykioptymalizacjapamięćpipeline’yplaybackpoczątkującypodglądpołączeniaprzepływ pracyprzewodnikprzykładyrecorderrecordingstatystykisterowaniestratnesubskrypcjatabelatimelinetypyvideoviewerwideowydajnośćwykresywyniki

Pierwsze kroki: Podstawowy przepływ pracy

początkującyprzepływ pracyprzewodnik

Ten przewodnik pomoże Ci szybko rozpocząć pracę z JSON Optimizer. Załaduj projekt: Użyj InputNode , aby załadować pliki .json , .atlas oraz .png . Wybierz preset (tryb Plus): W trybie Plus użyj panelu po prawej stroni...

Read article

Typy gniazd (socketów) i przepływ danych

gniazdatypydanepołączenia

Ten artykuł wyjaśnia typy danych używane przez gniazda (sockety) w grafie węzłów oraz to, co można gdzie podłączać. Typy gniazd Ładunek Spine — przyjazna dla środowiska wykonawczego reprezentacja projektu Spine używan...

Read article

Plany subskrypcji i funkcje Premium

subskrypcjaPremiumPluscennik

re-polish oferuje dwa poziomy subskrypcji dopasowane do różnych potrzeb. Plan Free ✓ Podstawowy graf węzłów ✓ Przeglądarka JSON ✓ Oś czasu do odtwarzania animacji na wielu ścieżkach z konfigurowalnym miksem między ani...

Read article

Podstawowe koncepcje: metody stratne vs. bezstratne

koncepcjestratnebezstratnepoczątkujący

Wszystkie metody optymalizacji dzielą się na dwa typy: Bezstratne: Te metody jedynie usuwają redundantne dane... Przykłady: Węzeł optymalizacji Spline , CleanupNode . Stratne: Te metody upraszczają krzywe animacji......

Read article

Jak mierzyć efektywność

przewodnikmetrykistatystyki

Aby zrozumieć skuteczność optymalizacji, zwróć uwagę na następujące metryki: Rozmiar pliku: Końcowy rozmiar pliku .json jest głównym celem optymalizacji. Liczba klatek kluczowych: W zakładce "Statystyki" znajdziesz ta...

Read article

Podgląd: Panel sterowania

podglądsterowanieUI

Zakładka Podgląd nakłada panel Kontrolki na płótno. Jest podzielony na trzy grupy: Sterowanie animacją Animacja — wybiera, która animacja Spine jest odtwarzana. Skórka — wybiera, która skórka jest zastosowana. Prędkoś...

Read article

Podgląd: Panel wydajności

wydajnośćFPSpamięćUI

Panel Performance pokazuje w czasie rzeczywistym metryki runtime dla aktualnie odtwarzanego szkieletu (lub szkieletów). Czas rzeczywisty FPS — liczba klatek na sekundę mierzona przez monitor. Frame Time — czas jednej...

Read article

Podgląd: Oś czasu

viewertimelineanimationplaybackguide

Panel Oś czasu to dokowalny sekwencer animacji na dole Podglądu. Umożliwia rozmieszczanie klipów animacji na wielu ścieżkach, kontrolowanie odtwarzania i podgląd przejść. Ścieżki i klipy Do 4 ścieżek animacji — każda...

Read article

Podgląd: Nagrywanie

viewerrecorderrecordingexportvideoguide

Nagrywanie przechwytuje animacje Spine z podglądu jako wideo, animowane obrazy lub sekwencje klatek. Tryby nagrywania ⚡ Szybkie nagrywanie — przechwytywanie w czasie rzeczywistym za pomocą MediaRecorder + captureStrea...

Read article

Zakładka Wyniki

wynikitabelaoptymalizacja

Zakładka Wyniki pokazuje szczegółowy wynik optymalizacji. Tabela wyników — widok wyników optymalizacji JSON w układzie „zmiana = wiersz” (np. która animacja/kość/właściwość/klatka kluczowa została zmodyfikowana lub us...

Read article

Zakładka Statystyki

statystykiwykresymetryki

Zakładka Statystyki podsumowuje wyniki optymalizacji jako wykresy i zagregowane metryki. Wykres optymalizacji — wizualizuje wpływ optymalizacji na cały zbiór (gdy optymalizacje JSON wprowadziły zmiany). Tabela metryk...

Read article

Przykłady pipeline (Wideo)

wideoprzykładypipeline’yYouTube

Poniżej znajdziesz kompletne, rzeczywiste potoki z oficjalnej playlisty YouTube. Otwórz pełną playlistę Przykłady Eksperymenty Spine2D 1: optymalizacja krzywych algorytmem RDP — podstawowe demo optymalizacji Spine 2D:...

Read article

Nodes

Input

Importuje pliki projektu Spine, wejscia tylko w formacie JSON, zasoby demonstracyjne i pakiety ZIP do grafu.

Przeznaczenie: To glowny punkt wejscia dla wiekszosci przeplywow pracy. Odczytuje JSON, atlas i tekstury oraz normalizuje je do danych wewnetrznych, ktore moga przetwarzac kolejne wezly.

Obslugiwane tryby:
1. Pelny projekt: JSON + atlas + tekstury
2. Tylko JSON: przetwarzanie danych szkieletu/animacji bez atlasu
3. Pakiet ZIP: spakowany plik zip zawierajacy kompletny projekt
4. Zasoby demonstracyjne: wbudowane dane przykladowe do szybkich testow

Glowne wyjscia:
- **payload_out**: znormalizowane dane dla wezlow optymalizacji
- **original_json_out**: zrodlowy JSON do porownan lub rekonstrukcji
- **atlas_project_out**: sparsowany projekt atlasu, gdy dostarczono tekstury

Video To Png Sequence

Konwertuj klip wideo na sekwencję klatek PNG do workflow Spine.

To bezpłatne narzędzie wejściowe w menu Input, przygotowane do zastosowań produkcyjnych. Obsługuje chroma key dla green screena oraz czyszczenie matte w stylu unpremultiply dla czarnych teł. Wyniki trafiają do payload_out i atlas_out.

Picture Input

Dodaje niezalezne obrazy PNG/JPEG do obszaru widoku, aby mozna bylo tworzyc czystsze podglady i ujecia prezentacyjne.

Przeznaczenie: Uzyj tego wezla, aby umieszczac obrazy bezposrednio w obszarze widoku jako warstwy prezentacyjne lub pomoce wizualne. Przydaje sie, gdy chcesz ozdobic scene, dodac wspierajaca grafike i sprawic, by podglady projektu wygladaly bardziej dopracowanie przed nagraniem wideo lub demonstracji.

Przeplyw pracy: Wczytaj jeden obraz, a nastepnie uzyj narzedzi obszaru widoku, aby go skalowac, przesuwac i dostosowac jego indeks z, tak aby poprawnie ulozyc go w kompozycji. To wygodny sposob na budowanie atrakcyjnych ujec pokazowych bez ingerowania w glowne dane projektu Spine.

Ten wezel jest samodzielny i nie udostepnia gniazd grafu.

Version: Format wersji Spine JSON dla generowanego szkieletu stub.
Blending: Tryb mieszania dla wygenerowanego załącznika (normalny, addytywny, mnożenie, ekran).

Psd To Skeletons

Wczytuje warstwowe pliki PSD/PSB i generuje powiązane szkielety Spine, zachowując układ sceny z Photoshopa do precyzyjnych podglądów.

Cel: Użyj tego węzła, gdy scena została już rozplanowana w Photoshopie i chcesz zamienić stos warstw na zestaw powiązanych szkieletów Spine w viewerze. Każda widoczna warstwa PSD staje się własnym szkieletem w stylu obrazu ustawionym według współrzędnych PSD, co znacznie ułatwia budowanie preview i dokładne rozmieszczanie obiektów.

Workflow viewera: Po wygenerowaniu nadal możesz zmieniać draw order w viewerze i umieszczać inne szkielety pomiędzy zaimportowanymi warstwami PSD, dzięki czemu dodatkowe postacie lub propsy Spine można osadzić bezpośrednio w kompozycji Photoshopa.

Dostępność: Darmowy węzeł. Ten węzeł jest samodzielny i nie udostępnia socketów grafu.

Version: Format wersji Spine JSON używany dla wygenerowanych szkieletów warstw.
Blending: Tryb mieszania używany dla wygenerowanych attachmentów.
Load PSD: Otwiera wybór PSD/PSB i generuje powiązane szkielety warstw z wybranego pliku.
File Info: Podsumowanie tylko do odczytu aktualnie załadowanego pliku PSD/PSB.
Layer Count: Liczba tylko do odczytu widocznych warstw, które zostaną zamienione na powiązane szkielety.
Preflight: Raport tylko do odczytu o problemach z nazwami warstw wykrytych przed generowaniem.

Project Input

Wczytuje folder lub archiwum projektu Spine do grafu i udostępnia ProjectPayload przez socket project_out dla dalszych węzłów obsługujących projekty.

Cel: Punkt wejścia dla przepływów pracy opartych na projektach. Skanuje folder lub archiwum projektu Spine, buduje ProjectPayload i utrzymuje metadane w pamięci podręcznej, gotowe dla dalszych węzłów, takich jak Project Viewer, filtry, Static Bake i Deduplicator.

Kontrolki:
- **Load Folder**: Otwiera systemowy wybierak folderów przez File System Access API, skanuje wybrany katalog, aktualizuje podsumowanie, zapisuje metadane w pamięci podręcznej i uruchamia obserwację plików, aby późniejsze zmiany można było przeskanować ponownie.
- **Browse (Fallback)**: Używa ukrytego inputu **webkitdirectory** w przeglądarkach bez **showDirectoryPicker()**. Ładuje projekt, ale bez trwałego handle katalogu, więc monitoring na żywo i wiarygodne rescany nie są dostępne.
- **Load Archive**: Wczytuje archiwum **.zip** lub **.spine** jako wirtualne drzewo projektu. Projekty ładowane z archiwum nie zachowują handle katalogu, więc **Rescan** jest celowo niedostępny.
- **Rescan**: Ponownie skanuje wcześniej wczytany folder, gdy dostępny jest handle katalogu. Przed skanowaniem ponownie sprawdza uprawnienie do odczytu. Projekty wczytane przez fallback browse lub tryb archiwum zwykle zgłaszają, że żaden katalog nie jest załadowany.
- **Clear Project**: Zatrzymuje obserwację plików i czyści bieżący payload, podsumowanie, execution cache oraz metadane payloadu zapisane w pamięci podręcznej.
- **Reset to Defaults**: Resetuje tylko ogólne kontrolki węzła. **Nie** usuwa bieżącego projektu i nie zastępuje **Clear Project**.
- **Drop folder or .zip here**: Punkt wejścia przeciągnij-i-upuść dla folderów i archiwów, kierujący je do tego samego pipeline ładowania.

Wyjścia:
- **project_out**: ProjectPayload z przeskanowanym drzewem, płaską listą plików, sumami rozmiarów i rozbiciem typów dla dalszych węzłów obsługujących projekty.
- **stats**: Wyjście diagnostyczne dostępne tylko w DEV.

Output

Zbiera koncowe wyniki i pozwala pobierac zoptymalizowane dane jako osobne pliki, pogrupowane zestawy plikow lub archiwa.

Przeznaczenie: Dziala jako centrum eksportu dla zoptymalizowanego JSON-a, danych atlasu, tekstur i sprite'ow. Moze skladac wyniki z pojedynczego zestawu JSON/atlas/tekstury, z wielu zestawow plikow albo wylacznie ze sprite'ow, gdy potrzebujesz wyjscia obrazow bez przebudowy pelnego projektu Spine.

Opcje eksportu:
- Pobieranie plikow pojedynczo albo jako jedno archiwum
- Pobieranie spakowanych wynikow albo archiwum z rozpakowanymi plikami
- Eksport JSON-a w formie zwartej albo czytelnej, sformatowanej wersji
- Eksport pelnych danych projektu Spine albo tylko wynikow sprite/obrazow

Lancuchowy przeplyw pracy: OutputNode nie musi byc bezwzglednym koncem grafu. Mozesz przekazac jego wyjscia do kolejnego etapu pipeline'u i uruchomic te same pliki przez dodatkowe przebiegi optymalizacji. W praktyce optymalizacja kluczy i krzywych byla testowana do 3 kolejnych iteracji.

Glowne wyjscia:
- **reconstructed_json_out**: odbudowany JSON Spine
- **original_json_passthrough_out**: przekazanie oryginalnego JSON-a
- **payload_out**: payload do dalszego lancuchowania
- **changes**: zebrane zmiany optymalizacji
- **atlas_assets**: zasoby atlasu gotowe do eksportu

RDP

Upraszcza krzywe animacji (RDP).

Cel: Zmniejsza liczbę klatek kluczowych w odcinkach liniowych lub prawie liniowych, usuwając punkty leżące na prostej między dwoma innymi.

Złota zasada: Domyślnie wyłączona. Chroni krzywe o wyraźnym kształcie (pole/krzywizna) przed spłaszczeniem do linii prostej. Wyłączaj tylko dla bardziej agresywnej kompresji po kontroli wizualnej.

Klucze gniazd: payload_in, payload_out, changes

Epsilon: Maksymalne odchylenie od oryginalnej krzywej. Wyższe wartości usuwają więcej klatek kluczowych, ale mogą utracić szczegóły krzywej.
Steep: Próg czułości krzywizny. Chroni złożone krzywe przed spłaszczeniem do liniowych.
Round Mode: Tryb zaokrąglania zoptymalizowanych wartości: brak (zachowaj oryginał), dziesiąte (1 miejsce dziesiętne), liczby całkowite.
Golden Rule: Po włączeniu chroni krzywe o znaczącym kształcie/powierzchni przed uproszczeniem przez RDP.
S Run Length: Minimalna liczba kolejnych standardowych krzywych S Spine wymagana do uruchomienia spłaszczania opartego na wzorcu. Ustaw 0, aby wyłączyć tę funkcję.
S Deviation: Dopuszczalne znormalizowane odchylenie od standardowego wzorca krzywej S Spine w promilach (0-300). Niższe wartości wymagają bliższego dopasowania; wyższe spłaszczają więcej sekwencji zbliżonych do wzorca.

Spline

Optymalizacja krzywych metodą splajnów.

Cel: Wygładza dopasowanie krzywych przy zachowaniu jakości wizualnej.

Klucze gniazd: payload_in, payload_out, changes

Max Error: Maksymalny dopuszczalny błąd aproksymacji dla dopasowania splajnu. Mniejszy = dokładniejsze dopasowanie do oryginału.
Min Group Size: Minimalna liczba kolejnych liniowych klatek kluczowych wymagana do utworzenia usuwalnej grupy.

Refit

Refit krzywych (Bezier) w celu redukcji liczby klatek kluczowych.

Cel: Dopasowuje mniejszą liczbę krzywych, pozostając w granicach tolerancji.

Klucze gniazd: payload_in, payload_out, changes

Error Tolerance: Maksymalne dopuszczalne odchylenie między krzywą oryginalną a dopasowaną Béziera. Mniejsze = dokładniejsze dopasowanie.
Max Iterations: Liczba iteracji optymalizacji dopasowania krzywej. Więcej iteracji = lepsze dopasowanie, ale wolniejsze.

Quantizer

Redukuje precyzję wartości numerycznych w klatkach kluczowych i krzywych.

Cel: Prosta, ale skuteczna metoda redukcji rozmiaru pliku poprzez zaokrąglanie liczb do określonej liczby miejsc dziesiętnych.

Użycie: Może być zastosowany do prawie wszystkich danych animacji. Staje się bardziej efektywny przy większej liczbie klatek kluczowych.

Ostrożnie: Zbyt agresywna kwantyzacja (niska precyzja) może powodować drżenie lub artefakty wizualne w animacjach.

Precision: Liczba miejsc dziesiętnych dla wartości klatek kluczowych. Mniej = mniejszy plik, ale niższa dokładność.

Cleanup

Wykonuje różne zadania czyszczące w celu usunięcia redundantnych lub niepotrzebnych danych animacji.

Cel: Specjalistyczne narzędzie do usuwania konkretnych typów redundantnych danych, których inne optymalizatory mogą nie wykryć.

Użycie: Podłącz payload do 'payload_in' i odbierz wynik z 'payload_out'. Jeśli chcesz raport „zmiana po zmianie”, użyj również 'changes'.

Klucze gniazd:
- Wejścia: payload_in
- Wyjścia: payload_out, changes

Aktualnie wspierane czyszczenia:
1. **Usuwanie nieużywanych ścieżek Color/Alpha**: Usuwa timeline’y color/alpha dla slotów, które nigdy nie są widoczne podczas animacji.
2. **Usuwanie redundantnych rotacji IK**: Usuwa klatki kluczowe rotacji z kości, które są w pełni kontrolowane przez constraint IK z mix = 100%.
3. **Usuwanie kluczy Path Constraint**: Usuwa klatki kluczowe rotate/translate z kości w pełni kontrolowanych przez path constraint (wartości mix = 100%).
4. **Sanityzacja znaków nieangielskich**: Podmienia nieangielskie znaki w nazwach/identyfikatorach, aby uniknąć problemów w narzędziach downstream.

Remove Unused Color Tracks: Usuń komponenty koloru/alfa, które nigdy nie zmieniają się od wartości domyślnej.
Remove Redundant IKRotation: Usuń klatki kluczowe rotacji kości w pełni sterowane przez ograniczenia IK.
Remove Redundant Path Constraint Keys: Usuń klatki kluczowe ograniczeń ścieżki duplikujące wartości konfiguracji.
Sanitize Non English Characters: Zamień znaki inne niż ASCII w nazwach kości/slotów na bezpieczne odpowiedniki.

Scale

Skaluje wszystkie wartości numeryczne w klatkach kluczowych animacji o określony współczynnik.

Cel: Równomiernie skaluje dane animacji, przydatne do proporcjonalnej zmiany rozmiaru szkieletu lub dostosowania intensywności animacji.

Użycie: Podłącz do payload i ustaw współczynnik skalowania. Wartości powyżej 1.0 powiększają, poniżej 1.0 zmniejszają.

Parametry:
- **Scale Factor**: Mnożnik stosowany do wszystkich wartości pozycji i rozmiaru.
- **Include Rotations**: Czy skalować również wartości rotacji (zwykle wyłączone).

Przypadki użycia:
- Zmiana rozmiaru zaimportowanych animacji do dopasowania do nowych wymiarów szkieletu
- Tworzenie przerysowanych lub subtelnych wariantów animacji
- Wsadowe skalowanie wielu animacji dla różnych rozmiarów postaci

Scale Bones: Skaluj pozycje i rozmiary kości.
Scale Attachments: Skaluj pozycje i rozmiary załączników.
Scale Animations: Skaluj klatki kluczowe animacji.
Scale Constraints: Skaluj parametry ograniczeń.
Scale Path: Skaluj dane ścieżki.

Schneider

Dopasowuje gładkie krzywe Béziera do klatek kluczowych animacji przy użyciu algorytmu dopasowania krzywej Schneidera.

Cel: Zaawansowane dopasowanie krzywej, które produkuje naturalnie wyglądające krzywe Béziera z gęstych sekwencji klatek kluczowych.

Dostępność: **Tylko w Plus**.

Jak to działa: Algorytm Schneidera analizuje pozycje i tangenty klatek kluczowych, aby wygenerować optymalne punkty kontrolne Béziera, które ściśle odpowiadają oryginalnemu ruchowi.

Parametry:
- **Error Tolerance**: Maksymalne dopuszczalne odchylenie od oryginalnych klatek kluczowych. Niższe = dokładniejsze, wyższe = gładsze krzywe.
- **Corner Angle**: Kąt progowy (stopnie) przy którym dzielić krzywą na segmenty.

Najlepsze dla:
- Ręcznie rysowanych lub zaimportowanych animacji z wieloma klatkami kluczowymi
- Konwersji interpolacji liniowej na gładkie krzywe Béziera
- Redukcji liczby klatek kluczowych przy zachowaniu jakości krzywej

Uwaga: Bardziej wymagający obliczeniowo niż prostsze algorytmy jak RDP, ale produkuje lepszą jakość krzywej.

Min Segment Size: Minimalna liczba klatek kluczowych w segmencie do przetwarzania.

Physics Constraint Bake

Bake Physics Constraints to Keys: zamienia ruch PhysicsConstraint na klatki kluczowe obrotu/przesunięcia i usuwa timeliny fizyki.

Cel: Konwertuje symulację fizyki w czasie działania na jawne klatki kluczowe, dzięki czemu animacje są deterministyczne i edytowalne bez PhysicsConstraints. Po bake usuwa PhysicsConstraints i timeliny fizyki z payload.

Dostępność: **Tylko w Plus**.

Wejścia/Wyjścia:
- **payload_in** → **payload_out** (baked)
- **changes** (opcjonalna lista zmian)

Kontrolki:
- **Sample FPS**: Częstotliwość próbkowania symulacji.
- **Bake Rotation**: Zapisuje klatki kluczowe obrotu.
- **Bake Translation**: Zapisuje klatki kluczowe przesunięcia.
- **Bake Translation (Children)**: Stosuje bake przesunięcia do kości potomnych zależnych od ruchu fizyki.

Uwagi:
- Wymaga oryginalnego Spine JSON do rekonstrukcji danych symulacji.
- Użyj, gdy chcesz usunąć PhysicsConstraints, ale zachować ruch.

Attachment Visibility

Optymalizuje renderowanie ustawiając attachment slotu na null, gdy jego alpha wynosi zero.

Cel: Zapobiega konieczności przetwarzania lub renderowania niewidocznych attachmentów przez silnik gry.

Użycie: Analizuje ścieżki alpha/kolor i automatycznie dodaje lub modyfikuje klatki kluczowe na odpowiedniej ścieżce 'attachment'.

Parametry:
- **Alpha Threshold**: Wartość alpha, poniżej której attachment jest uważany za niewidoczny.
- **Auto Restore**: Jeśli włączone, węzeł automatycznie przywróci ostatni widoczny attachment, gdy wartość alpha przekroczy próg.

Payload Merger

Łączy wiele przetworzonych payloadów animacji z powrotem w pojedynczy zunifikowany payload.

Cel: Niezbędny dla pipeline'ów przetwarzania równoległego, gdzie różne animacje lub grupy kości są optymalizowane oddzielnie i muszą być ponownie połączone.

Strategia łączenia:
1. **Wejście bazowe**: Dostarcza strukturę szkieletu (kości, sloty, skiny itp.)
2. **Wejścia nadpisujące**: Dostarczają przetworzone ścieżki, które zastępują ścieżki bazowe
3. **Ostatni zapis wygrywa**: Gdy wiele nadpisań dostarcza tę samą ścieżkę, ostatnie ma priorytet

Wykrywanie konfliktów:
- Konflikty między wejściami nadpisującymi są wykrywane i raportowane
- Zamiana Bazowa → Nadpisująca to normalne zachowanie (nie konflikt)
- Toast ostrzegawczy pokazywany przy konfliktach ścieżek

Przykład pipeline'a:
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

Przypadki użycia:
- Różne optymalizatory dla różnych animacji
- Oddzielne przetwarzanie kości/slotów z ponownym połączeniem
- Testy A/B różnych strategii optymalizacji

Warn conflicts: Pokaż ostrzeżenia przy konfliktach scalania payload.

Animation Viewer

Wizualne narzędzie do inspekcji i porównywania krzywych animacji przed i po optymalizacji.

Cel: Zapewnia graficzną reprezentację klatek kluczowych i krzywych dla wybranej ścieżki.

Użycie: Podłączając oba wejścia 'payload_before' i 'payload_after', nałoży oryginalne i zoptymalizowane krzywe, ułatwiając wizualizację wpływu optymalizacji.

Show changed: Pokaż tylko zmienione animacje.
Animation: Wybór animacji do podglądu.
Target: Docelowa kość/slot do podglądu.
Property: Właściwość do wyświetlenia (rotacja, translacja itp.).

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: Tryb repakowania po deduplikacji.
Glow threshold: Próg wykrywania sprite'ów z efektem świecenia.
Solid threshold: Próg wykrywania sprite'ów jednolitych.
Min sprite area: Minimalna powierzchnia sprite'a do analizy (piksele²).
Alpha hash threshold: Próg hasha alfa do porównania.
Verification threshold: Próg weryfikacji duplikatów.
Color rmse threshold: Próg RMSE koloru do wykrywania duplikatów.
Constrain canonical atlas size: Ogranicz kanoniczną wielkość atlasu.
Max canonical atlas width: Maksymalna kanoniczna szerokość atlasu.
Max canonical atlas height: Maksymalna kanoniczna wysokość atlasu.

Animation Filter

Filtruje ścieżki animacji na podstawie nazwy animacji (np. 'run', 'idle').

Cel: Przydatny do stosowania różnych strategii optymalizacji do różnych animacji.

Użycie: Na przykład, możesz zastosować agresywne optymalizacje stratne (jak DCT) do animacji postaci w tle, jednocześnie używając optymalizacji bezstratnych (jak Spline) dla akcji głównej postaci.

Asset Filter

Filtruje zasoby atlasu według nazwy, działa w dwóch trybach: przed rozpakowaniem (filtrowanie tekstu atlasu) lub po rozpakowaniu (filtrowanie sprite'ów).

Cel: Kontroluje które zasoby są zawarte w przepływie pracy - które zasoby rozpakować z atlasu lub które rozpakowane sprite'y zawrzeć w przepakowaniu.

Tryby:
1. TRYB PRZED ROZPAKOWANIEM (przed AtlasUnpacker):
   - Wejście: atlas_in (atlas_project)
   - Wyjście: atlas_out (przefiltrowany atlas_project)
   - Przepływ: InputNode → AssetFilter → AtlasUnpacker
   - Zastosowanie: Filtrowanie które zasoby rozpakować z atlasu (oszczędza czas przetwarzania)

2. TRYB PO ROZPAKOWANIU (po AtlasUnpacker):
   - Wejście: sprites_in (sprites)
   - Wyjście: sprites_out (przefiltrowane sprites)
   - Przepływ: AtlasUnpacker → AssetFilter → AtlasRepacker
   - Zastosowanie: Filtrowanie które rozpakowane sprite'y zawrzeć w końcowym atlasie

Zachowanie UI:
- W trybie PRZED ROZPAKOWANIEM: Analizuje tekst atlasu aby odkryć nazwy zasobów
- W trybie PO ROZPAKOWANIU: Odkrywa nazwy zasobów z tablicy sprite'ów
- Przełącznik 'Zezwól na wszystko': Kiedy zaznaczony, przepuszcza wszystkie zasoby (lista pokazana ale wyłączona)
- Pola wyboru: Wybierz konkretne zasoby do uwzględnienia (gdy 'Zezwól na wszystko' odznaczone)

Przykłady:
- Przed rozpakowaniem: Wybierz tylko zasoby 'char_*' aby rozpakować tylko sprite'y postaci
- Po rozpakowaniu: Wyklucz sprite'y 'background_*' z końcowego przepakowanego atlasu
- Utwórz atlas tylko z bronią wybierając wzorzec 'weapon_*'

Bone Filter

Filtruje ścieżki animacji kości na podstawie nazwy kości.

Cel: Pozwala na celowanie lub wykluczanie określonych kości z procesu optymalizacji.

Użycie: Możesz chcieć wykluczyć wrażliwe kości, takie jak te używane do wyrażeń twarzy, z agresywnej optymalizacji, aby zachować każdy szczegół, jednocześnie mocno optymalizując mniej ważne kości.

Skin Filter

Filtruje dane animacji i zasobów na podstawie nazw skinów.

Cel: Przetwarzanie tylko określonych skinów z projektu Spine z wieloma skinami.

Użycie: Gdy projekt Spine ma wiele skinów (np. 'default', 'armor', 'casual'), ten węzeł pozwala filtrować, które skiny uwzględnić w przetwarzaniu.

Parametry:
- **Skins List**: Pola wyboru dla każdego dostępnego skina
- **Allow All**: Przełącznik do uwzględnienia wszystkich skinów (domyślnie)

Przypadki użycia:
- Tworzenie osobnego atlasu na skin
- Stosowanie różnych optymalizacji do różnych skinów
- Wykluczanie rzadko używanych skinów z zoptymalizowanej wersji

Uwaga: Skiny współdzielą strukturę szkieletu, ale mogą mieć różne attachmenty.

Slot Filter

Filtruje ścieżki animacji slotów na podstawie nazwy slotu.

Cel: Przydatny do celowania lub wykluczania określonych slotów, które mogą mieć szczególne wymagania dotyczące czasu lub widoczności.

Użycie: Możesz go użyć do wykluczenia slotów broni lub efektów, które są przełączane przez kod, przed wpływem optymalizacji widoczności attachmentów.

Parameter Filter

Filtruje ścieżki animacji na podstawie ich typu właściwości (np. rotation, scale, color).

Cel: Pozwala na stosowanie kolejnych optymalizacji tylko do określonych typów danych animacji.

Użycie: Umieść ten węzeł przed optymalizatorem, aby ograniczyć jego zakres. Na przykład, możesz zastosować optymalizację RDP tylko do ścieżek 'translation' i 'scale'.

Atlas Unpacker

Wyodrębnia pojedyncze sprite'y z atlasu tekstur Spine.

Cel: Rozkłada plik atlasu na jego składowe sprite'y, umożliwiając indywidualną analizę lub przepakowanie.

Użycie: Połącz wyjście 'atlas_project' z InputNode do wejścia 'atlas_project_in' tego węzła. Wyjście może być następnie wysłane do AssetViewer w celu inspekcji lub do AtlasRepacker w celu optymalizacji.

⭐ Przycinanie siatki: Połącz wyjście 'Original JSON' z InputNode do wejścia 'Skeleton JSON', aby włączyć automatyczne przycinanie sprite'ów do granic ich siatki (zamiast prostokątnych granic). To znacznie zmniejsza zużycie pamięci tekstur dla sprite'ów z załącznikami siatki, usuwając przezroczyste piksele poza kadłubem siatki.

Wyjścia:
- **sprites_out**: Ustandaryzowana tablica sprite'ów (dla viewer/repacker)
- **sprites_data_out**: Wyodrębnione obrazy/metadata sprite'ów (uporządkowany pakiet)
- **atlas_out**: Przekazanie Atlas Project (przelot)

Klucze socketów: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

Przepakowuje pojedyncze sprite'y w jeden lub więcej nowych, zoptymalizowanych atlasów tekstur.

Cel: Optymalizuje pamięć tekstur i potencjalnie redukuje wywołania rysowania poprzez tworzenie wydajnych arkuszy sprite'ów.

Użycie: Akceptuje 'sprites_data' (zazwyczaj z AtlasUnpacker) i generuje nowy układ atlasu.

Parametry:
- **Max Texture Size**: Maksymalna szerokość/wysokość stron atlasu wyjściowego.
- **Padding**: Odległość w pikselach między każdym sprite'em.
- **Scale**: Skaluje wszystkie sprite'y przed pakowaniem.
- **Power of Two**: Wymusza, aby wymiary atlasu wyjściowego były potęgami dwójki (np. 1024, 2048), wymagane przez niektóre platformy.
- **Allow Rotation**: Pozwala obracać sprite'y o 90 stopni dla lepszej wydajności pakowania.

Atlas Viewer

Wizualizuje układ atlasu tekstur i pozycjonowanie sprite'ów.

Cel: Narzędzie do debugowania i inspekcji do zrozumienia struktury atlasu.

Klucze socketów: atlas_project, atlas_in, atlas, json

Page Info: Wymiary i informacje o stronie atlasu.
Stats: Statystyki wykorzystania przestrzeni i liczba sprite'ów.

Atlas Merger

Łączy wiele źródeł atlasów w jeden zunifikowany atlas.

Cel: Scalanie wielu projektów atlasów w jeden.

Wejście:
- **atlas_inputs**: Tablica multi-wejściowa projektów atlasów

Wyjścia:
- **atlas_out**: Scalony projekt atlasu
- **merged_out**: Przestarzałe scalone wyjście
- **merged_atlas_out**: Przestarzałe scalone wyjście

Przypadki użycia:
- Łączenie atlasu postaci z atlasem broni
- Scalanie podstawowych sprite'ów z zawartością DLC
- Ponowne łączenie po równoległym przetwarzaniu atlasu

Typowy pipeline:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Przed Repackerem dane to pojedyncze sprite'y; po Repackerze stają się projektem atlasu. Atlas Merger łączy projekty atlasów, a końcowy przebieg Unpacker → Repacker pakuje wszystko ciasno w jeden zunifikowany atlas.

Asset Viewer

Wyświetla pojedyncze sprite'y z rozpakowanego atlasu.

Cel: Wizualne narzędzie debugowania do manipulacji atlasem.

Użycie: Akceptuje 'sprites_data' z węzła Atlas Unpacker i pozwala wizualizować każdy wyodrębniony obraz, badać jego właściwości (wymiary, rotację itp.) i weryfikować dokładność wizualną po rozpakowaniu.

Asset select: Wybór zasobu do podglądu.
Pixel stats: Pokaż statystyki pikseli dla zasobu.