Skip to main content
Go to Editor

Вікі

Цей посібник допоможе швидко розпочати роботу з JSON Optimizer. Завантажити проєкт: Використайте InputNode , щоб завантажити ваші файли .json , .atlas та .png .

FPSUIYouTubeanimationexportguideplaybackrecorderrecordingtimelinevideoviewerбез-втратвідеографікиданіз-втратамиз’єднаннякеруванняконцепціїметрикиоптимізаціяпайплайнипам'ятьпереглядачплюспосібникпочатківецьпреміумприкладипродуктивністьпідпискарезультатиробочий процессокетистатистикатаблицятипиціни

Початок роботи: Базовий робочий процес

початківецьробочий процеспосібник

Цей посібник допоможе швидко розпочати роботу з JSON Optimizer. Завантажити проєкт: Використайте InputNode , щоб завантажити ваші файли .json , .atlas та .png . Вибрати пресет (режим Plus): У режимі Plus використайте...

Read article

Типи сокетів і потік даних

сокетитипиданіз’єднання

Ця стаття пояснює типи даних, які використовуються сокетами в графі нод, і що з чим можна з’єднувати. Типи сокетів Пейлоад Spine — представлення проєкту Spine, придатне для виконання, яке використовує більшість нод об...

Read article

Плани підписки та преміум-функції

підпискапреміумплюсціни

re-polish пропонує два рівні підписки для різних потреб. План Free ✓ Базовий граф вузлів ✓ Перегляд JSON ✓ Таймлайн для відтворення анімацій на кількох доріжках із налаштовуваним міксом між анімаціями ✓ Обмежені оптим...

Read article

Основні концепції: Методи з втратами vs. без втрат

концепціїз-втратамибез-втратпочатківець

Усі методи оптимізації поділяються на два типи: Без втрат: ці методи лише видаляють надлишкові дані... Приклади: Вузол оптимізації Spline , CleanupNode . З втратами: ці методи спрощують криві анімації... Приклади: Вуз...

Read article

Як оцінити ефективність

посібникметрикистатистика

Щоб зрозуміти, наскільки ефективна ваша оптимізація, зверніть увагу на наступні метрики: Розмір файлу: Кінцевий розмір файлу .json є основною метою оптимізації. Кількість ключових кадрів: У вкладці "Статистика" ви зна...

Read article

Переглядач: Панель керування

переглядачкеруванняUI

Вкладка Переглядач накладає панель Керування поверх полотна. Вона поділена на три групи: Керування анімацією Анімація — вибирає, яка анімація Spine відтворюється. Скін — вибирає, який скін застосовано. Швидкість — мно...

Read article

Переглядач: Панель продуктивності

продуктивністьFPSпам'ятьUI

Панель Performance показує метрики runtime в реальному часі для скелета(ів), що зараз відтворюються. У реальному часі FPS — кадри за секунду, виміряні монітором. Frame Time — час на кадр у мілісекундах (менше — краще)...

Read article

Переглядач: Таймлайн

viewertimelineanimationplaybackguide

Панель Таймлайн — це плаваючий секвенсер анімації в нижній частині Переглядача. Він дозволяє розміщувати кліпи анімації на кількох доріжках, керувати відтворенням і переглядати переходи. Доріжки та кліпи До 4 доріжок...

Read article

Переглядач: Запис

viewerrecorderrecordingexportvideoguide

Запис захоплює анімації Spine з переглядача як відео, анімовані зображення або послідовності кадрів. Режими запису ⚡ Швидкий запис — захоплення в реальному часі за допомогою MediaRecorder + captureStream() . Створює л...

Read article

Вкладка Результати

результатитаблицяоптимізація

Вкладка Результати показує детальний результат оптимізації. Таблиця результатів — перегляд результатів оптимізації JSON у форматі «зміна = рядок» (наприклад, яку анімацію/кістку/властивість/ключовий кадр було змінено...

Read article

Вкладка Статистика

статистикаграфікиметрики

Вкладка Статистика підсумовує результати оптимізації як графіки та агреговані метрики. Графік оптимізації — візуалізує вплив оптимізації на весь набір (коли оптимізації JSON дали зміни). Таблиця метрик — ключові числа...

Read article

Приклади пайплайнів (Відео)

відеоприкладипайплайниYouTube

Нижче наведено повні реальні пайплайни з офіційного плейлиста YouTube. Відкрити повний плейлист Приклади Spine2D Експерименти 1: оптимізація кривих алгоритмом RDP — базова демонстрація оптимізації Spine 2D: алгоритм R...

Read article

Nodes

Input

Імпортує файли проєкту Spine, вхідні дані лише у форматі JSON, демоактиви та ZIP-пакети в граф.

Призначення: Це основна точка входу для більшості сценаріїв. Вузол зчитує JSON, atlas і текстури та нормалізує їх у внутрішні дані, які можуть обробляти наступні вузли.

Підтримувані режими:
1. Повний проєкт: JSON + atlas + текстури
2. Лише JSON: обробка даних скелета/анімації без atlas
3. ZIP-пакет: запакований zip, що містить повний проєкт
4. Демоактиви: вбудовані зразки даних для швидкого тестування

Основні виходи:
- **payload_out**: нормалізовані дані для вузлів оптимізації
- **original_json_out**: вихідний JSON для порівняння або реконструкції
- **atlas_project_out**: розібраний atlas-проєкт, якщо надано текстури

Video To Png Sequence

Перетворюйте відеокліп на послідовність PNG-кадрів для робочих процесів Spine.

Це безкоштовний вхідний інструмент у меню Input, створений для продакшн-процесів. Він підтримує chroma key для зеленого фону та очищення matte у стилі unpremultiply для чорного тла. Результати передаються через payload_out і atlas_out.

Picture Input

Додає окремі PNG/JPEG-зображення у viewport, щоб ви могли робити охайніші прев'ю та презентаційні кадри.

Призначення: Використовуйте цю ноду, щоб розміщувати зображення безпосередньо у viewport як презентаційні шари або допоміжну графіку. Вона корисна, коли потрібно прикрасити сцену, додати візуальні елементи та зробити прев'ю проекту більш акуратним перед записом відео чи демо.

Робочий процес: Завантажте одне зображення, а потім за допомогою інструментів viewport масштабуйте його, переміщуйте та змінюйте його z-index, щоб правильно вбудувати у композицію. Це зручно для створення красивих showcase-кадрів без змін основних даних Spine-проекту.

Ця нода є автономною і не має graph sockets.

Version: Формат версії Spine JSON для згенерованого стабу скелету.
Blending: Режим змішування для згенерованого вкладення (normal, additive, multiply, screen).

Psd To Skeletons

Завантажує багатошарові файли PSD/PSB і генерує пов'язані скелети Spine, що зберігають композицію сцени з Photoshop для точного прев'ю.

Призначення: використовуйте цей вузол, коли сцена вже зібрана у Photoshop і ви хочете перетворити цей стек шарів на набір пов'язаних скелетів Spine у viewer. Кожен видимий PSD-шар стає окремим скелетом у стилі зображення, розташованим за координатами PSD, тому збирання preview та точне розміщення об'єктів стає значно простішим.

Робота у viewer: після генерації ви все ще можете змінювати draw order у viewer і розміщувати інші скелети між імпортованими PSD-шарами, тож додаткові персонажі або props Spine легко вставляються прямо в композицію Photoshop.

Доступність: безкоштовний вузол. Цей вузол є автономним і не відкриває graph sockets.

Version: Формат версії Spine JSON, що використовується для згенерованих скелетів шарів.
Blending: Режим змішування для згенерованих attachment.
Load PSD: Відкриває вибір PSD/PSB і генерує пов'язані скелети шарів з вибраного файлу.
File Info: Підсумок лише для читання про поточний завантажений файл PSD/PSB.
Layer Count: Кількість лише для читання видимих шарів, які буде перетворено на пов'язані скелети.
Preflight: Звіт лише для читання про проблеми з назвами шарів, виявлені до генерації.

Project Input

Завантажує папку або архів проєкту Spine у граф і передає ProjectPayload через socket project_out для подальших вузлів, що працюють із проєктами.

Призначення: Точка входу для робочих процесів на основі проєктів. Сканує папку або архів проєкту Spine, будує ProjectPayload і тримає кешовані метадані готовими для подальших вузлів, таких як Project Viewer, фільтри, Static Bake та Deduplicator.

Керування:
- **Load Folder**: Відкриває системний вибір папки через File System Access API, сканує вибраний каталог, оновлює зведення, кешує метадані та запускає file watcher, щоб пізніші зміни можна було пересканувати.
- **Browse (Fallback)**: Використовує прихований input **webkitdirectory** для браузерів без **showDirectoryPicker()**. Проєкт завантажується, але без постійного handle каталогу, тому live watching і надійні повторні сканування недоступні.
- **Load Archive**: Завантажує архів **.zip** або **.spine** як віртуальне дерево проєкту. Проєкти, завантажені з архіву, не зберігають handle каталогу, тому **Rescan** недоступний за задумом.
- **Rescan**: Повторно сканує раніше завантажену папку, коли доступний handle каталогу. Перед скануванням повторно перевіряє дозвіл на читання. Проєкти, завантажені через fallback browse або режим архіву, зазвичай повідомляють, що жодного каталогу не завантажено.
- **Clear Project**: Зупиняє моніторинг файлів і очищає поточний payload, зведення, execution cache та кешовані метадані payload.
- **Reset to Defaults**: Скидає лише загальні елементи керування вузла. Поточний проєкт **не** вивантажується, і це не заміна **Clear Project**.
- **Drop folder or .zip here**: Точка входу drag-and-drop, що приймає папки й архіви та пропускає їх через той самий pipeline завантаження.

Виходи:
- **project_out**: ProjectPayload зі сканованим деревом, плоским списком файлів, сумами розмірів і розбивкою типів для подальших вузлів, що працюють із проєктами.
- **stats**: Діагностичний вихід лише для DEV.

Output

Збирає фінальний результат і дозволяє завантажувати оптимізовані дані як окремими файлами, наборами файлів або архівами.

Призначення: Працює як центр експорту для оптимізованих JSON, atlas, textures і sprites. Нода може обробляти як один комплект JSON/atlas/textures, так і кілька файлових наборів. Якщо на вхід подати лише sprites, вона також може віддати тільки результати у вигляді зображень без повної реконструкції Spine-проєкту.

Можливості експорту:
- завантаження окремих файлів або одного архіву
- завантаження packed-результату або архіву з unpacked-файлами
- вивід JSON у стиснутому або читабельному форматі
- експорт повного Spine-проєкту або лише sprite/image-результатів

Ланцюжки: OutputNode не обов'язково є абсолютним кінцем графа. Її виходи можна передавати далі в наступний pipeline і проганяти ті самі файли через додаткові проходи оптимізації. На практиці оптимізацію keys і curves тестували до 3 послідовних ітерацій.

Основні виходи:
- **reconstructed_json_out**: перебудований Spine JSON
- **original_json_passthrough_out**: passthrough оригінального JSON
- **payload_out**: payload для подальшого ланцюжка
- **changes**: зібрані зміни оптимізації
- **atlas_assets**: atlas-ресурси для експорту

RDP

Спрощує криві анімації (RDP).

Призначення: Зменшує кількість ключових кадрів у лінійних або майже лінійних сегментах анімації, видаляючи точки, що лежать на прямій між двома іншими.

Золоте правило: Вимкнено за замовчуванням. Захищає криві з вираженою формою (площа/кривизна) від спрощення до лінійних. Вимикайте лише для агресивнішого стискання після візуальної перевірки.

Ключі сокетів: payload_in, payload_out, changes

Epsilon: Максимальне відхилення від оригінальної кривої. Більші значення видаляють більше ключових кадрів, але можуть втратити деталі кривої.
Steep: Поріг чутливості кривизни. Захищає складні криві від спрощення до лінійних.
Round Mode: Режим округлення оптимізованих значень: none (зберегти оригінал), tenths (1 десятковий знак), units (цілі числа).
Golden Rule: При увімкненні захищає криві зі значною формою/площею від спрощення RDP.
S Run Length: Мінімальна кількість послідовних стандартних S-кривих Spine, після якої вмикається спрощення за шаблоном. Встановіть 0, щоб вимкнути функцію.
S Deviation: Допустиме нормалізоване відхилення від стандартного шаблону S-кривої Spine у проміле (0-300). Менші значення вимагають точнішого збігу; більші спрощують більше майже шаблонних послідовностей.

Spline

Оптимізація кривих за допомогою сплайнів.

Призначення: Плавне апроксимування кривих зі збереженням візуальної якості.

Ключі сокетів: payload_in, payload_out, changes

Max Error: Максимальна допустима похибка апроксимації для підгонки сплайнів. Менше = більш щільне прилягання до оригіналу.
Min Group Size: Мінімальна кількість послідовних лінійних ключових кадрів для формування групи, що видаляється.

Refit

Bezier refit для зменшення кількості ключових кадрів.

Призначення: Підганяє меншу кількість кривих у межах допуску.

Ключі сокетів: payload_in, payload_out, changes

Error Tolerance: Максимально допустиме відхилення між оригінальною кривою та підігнаною Безьє. Менше = більш точна відповідність.
Max Iterations: Кількість ітерацій оптимізації для підгонки кривих. Більше ітерацій = кращий результат, але повільніше.

Quantizer

Зменшує точність числових значень у ключових кадрах і кривих.

Призначення: Простий, але ефективний спосіб зменшення розміру файлу шляхом округлення чисел до вказаної кількості десяткових знаків.

Використання: Може застосовуватися майже до будь-яких даних анімації. Стає більш ефективним зі збільшенням кількості ключових кадрів.

Обережно: Надто агресивна квантизація (низька точність) може викликати тремтіння або візуальні артефакти в анімаціях.

Precision: Кількість десяткових знаків для значень ключових кадрів. Менше = менший файл, але менша точність.

Cleanup

Виконує різні завдання з очищення для видалення надлишкових або непотрібних даних анімації.

Призначення: спеціалізований інструмент для видалення окремих типів надлишкових даних, які інші оптимізатори можуть пропустити.

Використання: підключіть payload до 'payload_in' і заберіть результат із 'payload_out'. Якщо потрібен звіт по кожній зміні, використовуйте також 'changes'.

Ключі сокетів:
- Входи: payload_in
- Виходи: payload_out, changes

Поточні підтримувані чистки:
1. **Видалити невикористані треки кольору/alpha**: видаляє таймлайни кольору/alpha для слотів, які ніколи не є видимими під час анімації.
2. **Видалити зайві IK-оберти**: видаляє ключові кадри обертання для bones, які повністю керуються IK-constraint із mix 100%.
3. **Видалити ключі Path Constraint**: видаляє ключові кадри rotate/translate для bones, які повністю керуються path constraint (mix 100%).
4. **Санітизувати неанглійські символи**: замінює неанглійські символи в назвах/ідентифікаторах, щоб уникнути проблем у наступних інструментах.

Remove Unused Color Tracks: Видалити компоненти кольору/прозорості, які ніколи не змінюються від значення за замовчуванням.
Remove Redundant IKRotation: Видалити ключові кадри обертання кісток, які повністю керуються IK-обмеженнями.
Remove Redundant Path Constraint Keys: Видалити ключові кадри обмежень шляху, які дублюють значення налаштування.
Sanitize Non English Characters: Замінити не-ASCII символи в іменах кісток/слотів на безпечні еквіваленти.

Scale

Масштабує всі числові значення в ключових кадрах анімації на вказаний коефіцієнт.

Призначення: Рівномірно масштабує дані анімації, корисно для пропорційної зміни розміру скелета або регулювання інтенсивності анімації.

Використання: Підключіть до payload і встановіть коефіцієнт масштабування. Значення вище 1.0 збільшують, нижче 1.0 зменшують.

Параметри:
- **Scale Factor**: Множник, що застосовується до всіх значень позиції та розміру.
- **Include Rotations**: Чи масштабувати також значення обертання (зазвичай вимкнено).

Випадки використання:
- Зміна розміру імпортованих анімацій під нові розміри скелета
- Створення перебільшених або стриманих варіантів анімацій
- Пакетне масштабування кількох анімацій для персонажів різного розміру

Scale Bones: Масштабувати позиції та розміри кісток.
Scale Attachments: Масштабувати позиції та розміри вкладень.
Scale Animations: Масштабувати ключові кадри анімації.
Scale Constraints: Масштабувати параметри обмежень.
Scale Path: Масштабувати дані шляхів.

Schneider

Підганяє плавні криві Безьє до ключових кадрів анімації за допомогою алгоритму апроксимації кривих Шнайдера.

Призначення: Розширена підгонка кривих, що створює природно виглядаючі криві Безьє з щільних послідовностей ключових кадрів.

Доступність: **Лише вузол Plus**.

Як це працює: Алгоритм Шнайдера аналізує позиції та дотичні ключових кадрів для генерації оптимальних контрольних точок Безьє, що точно відповідають оригінальному руху.

Параметри:
- **Error Tolerance**: Максимально допустиме відхилення від оригінальних ключових кадрів. Менше = точніше, більше = плавніші криві.
- **Corner Angle**: Пороговий кут (градуси), при якому криву розбивати на сегменти.

Найкраще для:
- Намальованих вручну або імпортованих анімацій з багатьма ключовими кадрами
- Конвертації лінійної інтерполяції в плавні криві Безьє
- Зменшення кількості ключових кадрів при збереженні якості кривої

Примітка: Обчислювально інтенсивніший за простіші алгоритми як RDP, але дає вищу якість кривих.

Min Segment Size: Мінімальна кількість ключових кадрів у сегменті для обробки.

Physics Constraint Bake

Bake Physics Constraints to Keys: перетворює рух PhysicsConstraint у ключові кадри обертання/переміщення та видаляє фізичні таймлайни.

Призначення: Перетворює симуляцію фізики під час виконання у явні ключові кадри, щоб анімації були детермінованими та редагованими без PhysicsConstraints. Після bake PhysicsConstraints і фізичні таймлайни видаляються з payload.

Доступність: **Лише вузол Plus**.

Входи/Виходи:
- **payload_in** → **payload_out** (baked)
- **changes** (необовʼязковий список змін)

Керування:
- **Sample FPS**: частота дискретизації симуляції.
- **Bake Rotation**: записує ключі обертання.
- **Bake Translation**: записує ключі переміщення.
- **Bake Translation (Children)**: застосовує bake переміщення до дочірніх кісток, що залежать від фізичного руху.

Примітки:
- Потрібен оригінальний Spine JSON для реконструкції даних симуляції.
- Використовуйте, коли потрібно прибрати PhysicsConstraints, але зберегти рух.

Attachment Visibility

Оптимізує рендеринг, встановлюючи attachment слота в null, коли його alpha дорівнює нулю.

Призначення: Запобігає необхідності ігрового движка обробляти або рендерити невидимі attachment'и.

Використання: Аналізує треки alpha/color і автоматично додає або змінює ключові кадри на відповідному треку 'attachment'.

Параметри:
- **Alpha Threshold**: Значення alpha, нижче якого attachment вважається невидимим.
- **Auto Restore**: Якщо увімкнено, нода автоматично відновить останній видимий attachment, коли значення alpha піднімається вище порогу.

Payload Merger

Об'єднує кілька оброблених payload анімацій назад в єдиний уніфікований payload.

Призначення: Необхідний для паралельних конвеєрів обробки, де різні анімації або групи кісток оптимізуються окремо і потребують повторного об'єднання.

Стратегія об'єднання:
1. **Базовий вхід**: Надає структуру скелета (кістки, слоти, скіни тощо)
2. **Override входи**: Надають оброблені треки, що замінюють базові треки
3. **Останній запис виграє**: Коли кілька override надають той самий трек, пріоритет має останній

Виявлення конфліктів:
- Конфлікти між override входами виявляються та повідомляються
- Заміна Base → Override є нормальною поведінкою (не конфлікт)
- При конфліктах треків показується попереджувальне повідомлення

Приклад конвеєра:
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

Випадки використання:
- Різні оптимізатори для різних анімацій
- Окрема обробка кісток/слотів з повторним об'єднанням
- A/B тестування різних стратегій оптимізації

Warn conflicts: Показувати попередження при конфліктах злиття пейлоадів.

Animation Viewer

Візуальний інструмент для інспекції та порівняння кривих анімації до і після оптимізації.

Призначення: Надає графічне представлення ключових кадрів і кривих для вибраного треку.

Використання: Підключивши обидва входи 'payload_before' і 'payload_after', він накладе оригінальні та оптимізовані криві, полегшуючи бачення впливу ваших оптимізацій.

Show changed: Показувати лише змінені анімації.
Animation: Вибір анімації для перегляду.
Target: Цільова кістка/слот для перегляду.
Property: Властивість для відображення (обертання, переміщення тощо).

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: Режим перепакування після дедуплікації.
Glow threshold: Поріг для визначення спрайтів з ефектом світіння.
Solid threshold: Поріг для визначення суцільних спрайтів.
Min sprite area: Мінімальна площа спрайту для аналізу (пікселі²).
Alpha hash threshold: Поріг хешування прозорості для порівняння.
Verification threshold: Поріг верифікації дублікатів.
Color rmse threshold: Поріг RMSE кольору для визначення дублікатів.
Constrain canonical atlas size: Обмежити розмір канонічного атласу.
Max canonical atlas width: Максимальна ширина канонічного атласу.
Max canonical atlas height: Максимальна висота канонічного атласу.

Animation Filter

Фільтрує треки анімації на основі назви анімації (наприклад, 'run', 'idle').

Призначення: Корисно для застосування різних стратегій оптимізації до різних анімацій.

Використання: Наприклад, ви можете застосувати агресивні оптимізації з втратами (як DCT) до анімацій фонових персонажів, використовуючи оптимізації без втрат (як Spline) для дій головного персонажа.

Asset Filter

Фільтрує ресурси атласу за назвою, працює в двох режимах: перед розпакуванням (фільтрація тексту атласу) або після розпакування (фільтрація спрайтів).

Призначення: Контролює які ресурси включені в робочий процес - або які ресурси розпаковувати з атласу, або які розпаковані спрайти включати в перепакування.

Режими:
1. РЕЖИМ ДО РОЗПАКУВАННЯ (перед AtlasUnpacker):
   - Вхід: atlas_in (atlas_project)
   - Вихід: atlas_out (відфільтрований atlas_project)
   - Робочий процес: InputNode → AssetFilter → AtlasUnpacker
   - Використання: Фільтрувати які ресурси розпаковувати з атласу (економить час обробки)

2. РЕЖИМ ПІСЛЯ РОЗПАКУВАННЯ (після AtlasUnpacker):
   - Вхід: sprites_in (sprites)
   - Вихід: sprites_out (відфільтровані sprites)
   - Робочий процес: AtlasUnpacker → AssetFilter → AtlasRepacker
   - Використання: Фільтрувати які розпаковані спрайти включати в фінальний атлас

Поведінка інтерфейсу:
- У режимі ДО РОЗПАКУВАННЯ: Аналізує текст атласу для виявлення назв ресурсів
- У режимі ПІСЛЯ РОЗПАКУВАННЯ: Виявляє назви ресурсів з масиву спрайтів
- Перемикач 'Дозволити все': Коли активний, пропускає всі ресурси (список показаний але відключений)
- Прапорці: Вибирають конкретні ресурси для включення (коли 'Дозволити все' відключений)

Приклади:
- До розпакування: Вибрати тільки ресурси 'char_*' для розпакування спрайтів персонажа
- Після розпакування: Виключити спрайти 'background_*' з фінального перепакованого атласу
- Створити атлас тільки зі зброєю вибравши шаблон 'weapon_*'

Bone Filter

Фільтрує треки анімації кісток на основі назви кістки.

Призначення: Дозволяє націлювати або виключати специфічні кістки з процесу оптимізації.

Використання: Ви можете захотіти виключити чутливі кістки, такі як ті, що використовуються для мімічних виразів, від агресивної оптимізації для збереження кожної деталі, сильно оптимізуючи менш важливі кістки.

Skin Filter

Фільтрує дані анімації та ресурсів на основі назв скінів.

Призначення: Обробляти тільки конкретні скіни з мультискінового проекту Spine.

Використання: Коли проект Spine має кілька скінів (наприклад, 'default', 'armor', 'casual'), ця нода дозволяє фільтрувати які скіни включати в обробку.

Параметри:
- **Skins List**: Прапорці для кожного доступного скіна
- **Allow All**: Перемикач для включення всіх скінів (за замовчуванням)

Випадки використання:
- Створити окремий атлас для кожного скіна
- Застосувати різну оптимізацію до різних скінів
- Виключити рідко використовувані скіни з оптимізованої збірки

Примітка: Скіни спільно використовують структуру скелета, але можуть мати різні attachment'и.

Slot Filter

Фільтрує треки анімації слотів на основі назви слота.

Призначення: Корисно для націлювання або виключення специфічних слотів, які можуть мати особливі вимоги до часу або видимості.

Використання: Ви можете використовувати це для виключення слотів зброї або ефектів, які перемикаються через код, від впливу оптимізацій видимості attachment'ів.

Parameter Filter

Фільтрує треки анімації на основі типу їх властивості (наприклад, rotation, scale, color).

Призначення: Дозволяє застосовувати наступні оптимізації тільки до специфічних типів даних анімації.

Використання: Розмістіть цю ноду перед оптимізатором, щоб обмежити його область дії. Наприклад, ви можете застосувати RDP-оптимізацію тільки до треків 'translation' і 'scale'.

Atlas Unpacker

Витягує окремі спрайти з текстурного атласу Spine.

Призначення: Розбирає файл атласу на його компонентні спрайти, дозволяючи індивідуальний аналіз або перепакування.

Використання: Підключіть **atlas_project** з InputNode до **atlas_project** (або legacy **atlas_project_in**) цієї ноди. Вихід потім можна надіслати до AssetViewer для інспекції або до AtlasRepacker для оптимізації.

⭐ Обрізання за мешем: Підключіть **skeleton_json_in** (з InputNode **original_json**) щоб увімкнути автоматичне обрізання спрайтів по межах їх мешу (замість прямокутних меж). Це значно зменшує використання пам'яті текстур для спрайтів з mesh attachments, видаляючи прозорі пікселі за межами оболонки мешу.

Виходи:
- **sprites_out**: Стандартизований масив спрайтів (для viewer/repacker)
- **sprites_data_out**: Витягнуті зображення/метадані спрайтів (структурований пакет)
- **atlas_out**: Проброс atlas project

Ключі сокетів: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

Перепаковує окремі спрайти в один або кілька нових, оптимізованих текстурних атласів.

Призначення: Оптимізує пам'ять текстур і потенційно зменшує кількість викликів малювання, створюючи ефективні спрайт-листи.

Використання: Приймає 'sprites_data' (зазвичай з AtlasUnpacker) і генерує нове розташування атласу.

Параметри:
- **Max Texture Size**: Максимальна ширина/висота вихідних сторінок атласу.
- **Padding**: Відстань у пікселях між кожним спрайтом.
- **Scale**: Змінює розмір усіх спрайтів перед пакуванням.
- **Power of Two**: Примушує вихідні розміри атласу бути ступенями двійки (наприклад, 1024, 2048), що потрібно деяким платформам.
- **Allow Rotation**: Дозволяє повертати спрайти на 90 градусів для покращення ефективності пакування.

Atlas Viewer

Візуалізує макет текстурного атласу та позиціонування спрайтів.

Призначення: Інструмент налагодження та інспекції для розуміння структури атласу та ефективності упаковки.

Використання: Підключіть дані атласу для перегляду розміщення спрайтів та статистики ефективності.

Ключі сокетів: atlas_project, atlas_in, atlas, json

Page Info: Інформація про сторінки та розміри атласу.
Stats: Статистика використання простору та кількість спрайтів.

Atlas Merger

Об'єднує кілька джерел атласів в один уніфікований атлас.

Призначення: Об'єднати кілька атлас-проєктів в один.

Вхід:
- **atlas_inputs**: Мульти-вхід — масив атлас-проєктів

Виходи:
- **atlas_out**: Об'єднаний атлас-проєкт
- **merged_out**: Застарілий об'єднаний вихід
- **merged_atlas_out**: Застарілий об'єднаний вихід

Випадки використання:
- Об'єднати атлас персонажа з атласом зброї
- Об'єднати базові спрайти з DLC контентом
- Повторно об'єднати після паралельної обробки атласу

Типовий конвеєр:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
До Repacker дані — це окремі спрайти; після Repacker — атлас-проєкт. Atlas Merger об'єднує атлас-проєкти, а фінальний прохід Unpacker → Repacker перепаковує все щільніше в єдиний атлас.

Asset Viewer

Відображає окремі спрайти з розпакованого атласу.

Призначення: Візуальний інструмент налагодження для маніпуляції атласами.

Використання: Приймає 'sprites_data' з ноди Atlas Unpacker і дозволяє переглядати кожне витягнуте зображення, переглядати його властивості (розміри, обертання тощо) та перевіряти візуальну коректність після розпакування.

Asset select: Вибір ресурсу для перегляду.
Pixel stats: Показати піксельну статистику ресурсу.