Skip to main content
Go to Editor

Вікі

Learn how to optimize your Spine 2D animations, reduce file size, and improve performance

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

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

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

Цей посібник допоможе швидко розпочати роботу з JSON Optimizer.

  1. Завантажити проєкт: Використайте InputNode, щоб завантажити ваші файли .json, .atlas та .png.
  2. Вибрати пресет (режим Plus): У режимі Plus використайте праву панель, щоб обрати один із вбудованих пресетів (наприклад, "Basic Fallback"). Це автоматично побудує граф оптимізації. У режимі Free побудуйте мінімальний ручний граф: InputNodeQuantizerNodeOutputNode.
  3. Запустити граф: Натисніть кнопку "Запустити граф".
  4. Порівняти результати: Перейдіть на вкладку "Переглядач", щоб візуально порівняти оригінальні та оптимізовані анімації.
  5. Переглянути зміни: На вкладках "Результати" та "Статистика" ви знайдете детальну інформацію про те, які ключі було змінено або видалено.

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

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

Ця стаття пояснює типи даних, які використовуються сокетами в графі нод, і що з чим можна з’єднувати.

Швидке правило

Більшість нод обробки працюють із пейлоадом Spine. Ноди, пов’язані з атласом, працюють з проєктом атласу або зі спрайтами. Використовуйте ValidatorNode, якщо не впевнені, який тип очікує сокет.

Типи сокетів

  • Пейлоад Spine — представлення проєкту Spine, придатне для виконання, яке використовує більшість нод обробки.
  • Проєкт атласу — метадані атласу + зображення сторінок, які використовують ноди атласу.
  • Спрайти — розпаковані зображення/регіони спрайтів (Atlas Unpacker → Переглядач ресурсів / Atlas Repacker).
  • JSON — оригінальний або реконструйований Spine JSON для діагностики/валідації/порівняння.
  • Зміни — список/потік різниць, який створюють деякі оптимізатори та використовують ноди перегляду/звітів.

Ключ → тип → підключити до

Ключ сокета (приклади)Тип данихСтворюєПідключити до
payload, payload_in, payload_outПейлоад SpineInputNode, більшість нод обробкиНоди обробки (RDP/Spline/Refit/Quantizer/Cleanup/тощо), потім OutputNode.payload
original_jsonJSONInputNodeDiagnosticNode, JSONDiffNode.json_before, OutputNode.original_json, деякі ноди атласу (наприклад, alpha-режим repacker)
reconstructed_json_outJSONOutputNodeJSONDiffNode.json_after, валідатори/налагодження
changesСписок змінДеякі ноди + OutputNodeAnimationViewerNode (опційно), звіти/налагодження
atlas_projectПроєкт атласуInputNode / переглядач атласуAtlasUnpackerNode.atlas_project, OutputNode.atlas_project, фільтри атласу
atlas_in, atlas_outПроєкт атласу (або пов’язаний потік)Ноди/фільтри атласуНоди атласу, AtlasViewerNode, AtlasMergerNode (через мульти-вхід)
sprites_out, sprites_in, sprites_data_inСпрайтиAtlasUnpackerNode, фільтриAssetViewerNode.sprites_in, AtlasRepackerNode.sprites_data_in
atlas_inputsКілька проєктів атласуКілька джерелAtlasMergerNode.atlas_inputs (підключіть кілька атласів)

Практичні пайплайни

  • Базова оптимізація JSON: InputNode → (опційно: DiagnosticNode / фільтри) → оптимізатори (RDPNode, SplineNode, QuantizerNode, …) → OutputNode.
  • Перепакування атласу: InputNode.atlas_projectAtlasUnpackerNode → (опційно: AssetViewerNode) → AtlasRepackerNodeOutputNode.atlas_project/atlas_assets.

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

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

re-polish пропонує два рівні підписки для різних потреб.

План Free

  • ✓ Базовий граф вузлів
  • ✓ Перегляд JSON
  • ✓ Таймлайн для відтворення анімацій на кількох доріжках із налаштовуваним міксом між анімаціями
  • ✓ Обмежені оптимізації
  • ✓ Версії Spine: 4.2, 4.1, 4.0, 3.8, 3.7

План Plus ($5/місяць)

  • ✓ Всі безкоштовні функції
  • ✓ Набір інструментів оптимізації для ключових кадрів, кривих і текстур
  • ✓ Запікання фізики у ключові кадри
  • ✓ Очищення запечених ключових кадрів у криві
  • ✓ Графічні пресети
  • ✓ Пріоритетна підтримка

Як отримати Plus

Натисніть кнопку Upgrade у верхній навігації, далі:

  • Виберіть Get Plus
  • Вас буде перенаправлено на Patreon — оформіть підписку
  • Поверніться до редактора нод, будучи залогіненими в той самий Patreon-акаунт, щоб сервіс перевірив прив’язку та увімкнув Plus
  • (Опційно) Введіть код активації (для спеціальних пропозицій)

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

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

Усі методи оптимізації поділяються на два типи:

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

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

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

Щоб зрозуміти, наскільки ефективна ваша оптимізація, зверніть увагу на наступні метрики:

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

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

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

Вкладка Переглядач накладає панель Керування поверх полотна. Вона поділена на три групи:

Керування анімацією

  • Анімація — вибирає, яка анімація Spine відтворюється.
  • Скін — вибирає, який скін застосовано.
  • Швидкість — множник швидкості відтворення (0.1× → 3.0×).

Керування виглядом

  • Скинути вигляд — відновлює стандартне положення камери/розкладки.
  • Параметри виду — числові зсуви для позиціонування порівняльного вигляду: Інтервал X / Інтервал Y (відстань між Оригінал/Оптимізований) і Зсув X / Зсув Y (глобальний зсув).

Керування налагодженням

  • Режим налагодження — вмикає накладки налагодження рендерингу (залежить від підтримки рушієм).
  • Увімкнути фізику — перемикає симуляцію фізики (якщо скелет використовує фізику).
  • Мітки — перемикає накладку з мітками.

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

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

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

У реальному часі

  • FPS — кадри за секунду, виміряні монітором.
  • Frame Time — час на кадр у мілісекундах (менше — краще).
  • FPS chart — останні 120 зразків у вигляді стовпчиків.

Метрики скелета

  • Visible Slots — скільки слотів було видимо у останньому зразку.
  • Avg. Visible — ковзне середнє видимих слотів (стабільніше, ніж один кадр).
  • Vertices — поточна кількість вершин, що використовується для рендерингу.
  • Bounds (px) — поточні межі скелета (ширина×висота) у пікселях.
  • Avg. Bounds — ковзне середнє меж.
  • Largest Texture — найбільша сторінка атласу (за розмірами), виявлена для скелета.
  • Texture Memory — оцінка загальної пам’яті текстур для завантажених сторінок атласу. За наявності панель також показує деталізацію по сторінках (назва файлу, розміри та оцінений розмір).

Покращення (коли доступний Optimized)

  • Slot Improvement — порівнює Avg. Visible між Original та Optimized.
  • Memory Change — порівнює Texture Memory між Original та Optimized.

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

viewertimelineanimationplaybackguide

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

Доріжки та кліпи

  • До 4 доріжок анімації — кожна доріжка відповідає шару trackIndex Spine. Вищі доріжки змішуються поверх нижчих.
  • Додати анімацію — натисніть кнопку + на будь-якій доріжці, щоб відкрити вибір анімації (з фільтром пошуку).
  • Перетягування та зміна розміру кліпів — перетягуйте тіло кліпу для переміщення вздовж доріжки; перетягуйте ліві/праві краї для зміни часу початку або тривалості.
  • Видалення кліпів — виберіть кліп і натисніть Delete або Backspace.
  • Виявлення перекриття — кліпи, що перекриваються на одній доріжці, підсвічуються червоним.

Елементи керування транспортом

  • Відтворити / Пауза / Стоп — стандартні елементи керування відтворенням.
  • Попередній / Наступний — перехід до початку попереднього або наступного кліпу.
  • Швидкість анімації — повзунок від 0.1× до 3.0×.
  • Авто-стоп — відтворення автоматично зупиняється в кінці таймлайну.

Мікшування переходів

  • Глобальна тривалість мікшування — встановлює час crossfade за замовчуванням між послідовними кліпами.
  • Індивідуальні перевизначення — натисніть на бульбашку переходу між двома кліпами, щоб задати власну тривалість мікшування. Можна скинути індивідуальні перевизначення до глобального значення.

Пошук та скрабінг

  • Голівка відтворення — перетягуйте ручку на лінійці часу або натисніть на лінійку для переміщення.
  • Попередній перегляд часу курсора — при наведенні на область доріжки показується час під курсором.
  • Web Worker — обчислення пошуку та подій виносяться у фоновий потік для плавної продуктивності.

Відтворення з урахуванням фізики

  • Перемикайте фізику між Update (активні обмеження) та None (вимкнено).
  • Під час пошуку час скелета просувається для правильного утихомирення фізичних обмежень.

Підтримка кількох скелетів

  • Вибір цільової пари — кожна доріжка може бути спрямована на всі пари (🌐 Усі пари) або на конкретний скелет.
  • Позиція та масштаб по скелету — поля зсуву X/Y та масштабу для окремих скелетів.
  • Порядок малювання — числове поле для керування пріоритетом шару рендерингу.

Debug Draw

Перемикайте видимість: Bones, Bone Names, Regions, Meshes, Hulls, Bounds, Paths, Clipping, Points.

Вибір скіна

Множинний вибір для всіх скінів, визначених у завантаженому скелеті.

Налаштування виду

  • Spacing X / Y — відстань між парами скелетів.
  • Offset X / Y — глобальний зсув вʼюпорта.
  • PMA — режим premultiplied alpha (Spine 3.x) або режим alpha атласу (Spine 4.x: auto / pma / bleed / none).
  • Мітки скелетів — перемикання накладки з мітками.

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

viewerrecorderrecordingexportvideoguide

Запис захоплює анімації Spine з переглядача як відео, анімовані зображення або послідовності кадрів.

Режими запису

  • ⚡ Швидкий запис — захоплення в реальному часі за допомогою MediaRecorder + captureStream(). Створює лише WebM. Швидко, але обмежено частотою кадрів реального часу.
  • 🎬 HQ Експорт — офлайн-рендеринг кадр за кадром за допомогою WebCodecs VideoEncoder + readPixels(). Підтримує всі формати та забезпечує ідеальну якість.

Формати виведення

  • Відео: WebM, MP4, AVI, MOV
  • Анімоване зображення: GIF, Animated PNG (APNG)
  • Послідовність кадрів: PNG Sequence, WebP Sequence

Кодеки (HQ Експорт)

VP8, VP9, H.264 (AVC), AV1, ProRes — доступні кодеки автоматично визначаються на основі підтримки браузера.

Якість

  • Пресети: Низька (~1 Mbps), Середня (~3 Mbps), Висока (~5 Mbps), Без втрат (~20 Mbps).
  • Власний бітрейт — вкажіть у kbps для точного контролю.

Тайминг

  • FPS: 24, 30, 60 або власне значення (1–120 fps).
  • Прогрів — секунди для стабілізації фізики/обмежень перед початком запису.
  • Пауза після — утримує останній кадр протягом заданого часу.
  • Включити останній кадр — перемикач.

Вʼюпорт і кадрування

  • Увімкнути/вимкнути кадрування — перемикач регіону кадрування.
  • Прямокутник кадрування — X, Y, Ширина, Висота у координатах світу Spine.
  • Прив'язати до пари — автоматичне підлаштування кадрування під пару скелетів із налаштовуваним відступом.
  • Інтерактивна накладка кадрування — перетягуйте кути/ребра безпосередньо у вʼюпорті.

Роздільна здатність

  • Режим масштабування — відсотковий повзунок (10%–400%).
  • Фіксований режим — явні розміри в пікселях (до 4096px).
  • Обчислена роздільна здатність виведення відображається в реальному часі.

Опції рендерингу

  • Рендерити кістки — увімкнути накладку налагодження кісток.
  • Рендерити зображення — увімкнути зображення прикріплень.
  • Рендерити інше — обмежувальні рамки, шляхи.
  • MSAA — Немає / 2× / 4× згладжування.
  • Згладжування — рівні 0–8 з вибором алгоритму (Bicubic / Bilinear).

Фон

  • Прозорий — автоматично вимикається для форматів без альфа-каналу (наприклад, GIF, JPEG).
  • Суцільний колір — власний вибір кольору.
  • Шахова дошка — візуальний індикатор прозорості.
  • Підтримка альфа-каналу: VP9+WebM, AV1+MP4, PNG Sequence, APNG, WebP Sequence.

Накладка HUD

  • Перемикачі: інформація про доріжку, час, номер кадру, FPS, мітки скелетів.
  • Власний текст — рядок водяного знаку.
  • Позиція — 4 кути (верхній лівий, верхній правий, нижній лівий, нижній правий).
  • Розмір шрифту — 8–64px, плюс вибір кольору тексту.

Повторення та кілька скелетів

  • Кількість повторень — 1–100 ітерацій циклу.
  • Цільова пара — записати конкретний скелет або всі.
  • Режим скелетів — Об'єднаний (один файл) / Окремі файли (один файл на скелет).

Шаблон імені файлу

Рядок шаблону зі змінними: {project}, {animation}, {W}, {H}, {fps}. Попередній перегляд розв'язаного імені файлу відображається в реальному часі.

Інтеграція з таймлайном

Діапазон запису відображається як червоно-оранжевий штриховий кліп на таймлайні. Перетягуйте краї для зміни розміру діапазону, перетягуйте тіло для зміни позиції, або використовуйте кнопку налаштувань (⚙️) для відкриття повних налаштувань запису.

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

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

Вкладка Результати показує детальний результат оптимізації.

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

Порада: використовуйте цю вкладку, щоб відповісти: що саме змінилося?

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

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

Вкладка Статистика підсумовує результати оптимізації як графіки та агреговані метрики.

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

Використовуйте цю вкладку, щоб відповісти: наскільки ми покращили загалом?

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

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

Нижче наведено повні реальні пайплайни з офіційного плейлиста YouTube.

Відкрити повний плейлист

Приклади

Spine2D Експерименти 1: оптимізація кривих алгоритмом RDP — базова демонстрація оптимізації Spine 2D: алгоритм Ramer–Douglas–Peucker (RDP) видаляє зайві дані кривих і ключів, зменшуючи JSON. RDP може видаляти важливі ключі, тож завжди перевіряйте анімації та виключайте чутливі кістки/слоти фільтрами перед вузлом RDP. Дивитися на YouTube

Spine2D Експерименти 2: оптимізація кривих алгоритмом квантизації — квантизація є найбезпечнішим оптимізатором кривих: округлення значень (часто до 1 знака) одразу зменшує розмір. Приклад: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]. Використовуйте вузол квантизації як останній крок перед вузлом виходу, щоб зафіксувати оптимізацію; відео показує до/після з майже непомітними візуальними змінами. Дивитися на YouTube

Spine2D Експерименти 3: перебудова кривих Spline і Refit — Spline без втрат для прямих сегментів (видаляє зайві середні ключі), тоді як Refit — з втратами, але потужний: перебудовує складні ділянки як одну криву Безьє. Ці алгоритми ідеальні після bake фізики та очищення через вузол Schneider. Примітка: ітерації Refit понад 100 можуть займати хвилини, щоб знайти найкращу криву. Відео показує роботу обох методів і відсоток оптимізації. Дивитися на YouTube

Spine2D Експерименти 4: видалення надлишкових даних вузлами видимості прикріплень і очищення — структурна оптимізація Spine 2D за допомогою вузлів видимості прикріплень і очищення. Вузол видимості прикріплень вимикає прикріплення, коли альфа падає до 0, і відновлює їх при плавній появі, зменшуючи виклики рендера та зайві ключі. Очищення видаляє логічні надлишки: невикористані треки кольору/альфи, ключі IK‑обертання, повністю керовані обмеженнями, та ключі обмежень шляху. Відео показує, як ці логічні оптимізації відрізняються від спрощення кривих. Дивитися на YouTube

Spine2D Експерименти 5: побудова нелінійних пайплайнів (фільтри та злиття) — нелінійна оптимізація Spine 2D: розділіть потік даних фільтрами (анімація, кістка, слот, параметр або скін), запускайте різні алгоритми на паралельних гілках (наприклад, агресивна компресія для кісток тіла з безвтратною лицьовою анімацією), потім об’єднайте гілки вузлом злиття в один скелет. Цей робочий процес виходить за межі простого Вхід → Оптимізація → Вихід і дозволяє оптимізувати лише те, що потрібно. Дивитися на YouTube

Spine2D Експерименти 6: перепакування текстур і вибіркове масштабування — просунуті пайплайни оптимізації текстур: вузли розпакування/перепакування атласу дозволяють розпакувати, змінити розмір і запакувати атласи в одному графі, швидше за стандартні процеси Spine. Використовуючи нелінійний пайплайн, можна розділити ресурси, залишити текстури персонажа на 100%, інші зменшити до 25%, а потім об’єднати все в один спільний атлас. Вузли перегляду атласу/ресурсів забезпечують візуальну перевірку та фільтрацію ресурсів і атласів на кожному етапі. Це полегшує визначення цілей розміру, вибіркову обробку та повторне поєднання результатів як шаблону. Дивитися на YouTube

Spine2D Експерименти 7: миттєве масштабування скелета вузлом масштабу — оптимізація Spine 2D від початку до кінця плюс масштабування скелета. Вузол масштабу замінює громіздкий процес Spine (експорт/імпорт, перепакування/розпакування, виправлення шляхів) одним кроком у графі: задайте цільовий розмір, миттєвий перегляд у вікні перегляду та ітерації в реальному часі. Відео поєднує оптимізацію кривих і ключів, обробку ресурсів та масштабування скелета в одному потоці. Дивитися на YouTube

Spine2D Експерименти 8: огляд вузлів публічної бети — огляд усіх вузлів у публічній бета‑версії та як re‑polish поєднує потреби аніматорів і розробників. Охоплює очищення зайвих ключів, спрощення Bézier→лінійне, округлення для зменшення розміру, видалення невидимих прикріплень, очищення невикористаних властивостей, виявлення неанглійських символів та атлас розпакувати/фільтрувати/масштабувати/перепакувати. Подвійний перегляд перевіряє результати з візуальним порівнянням і FPS поруч. Публічна бета доступна на re-polish.com. Дивитися на YouTube

Spine2D Експерименти 9: випікання фізичних обмежень у ключові кадри — у цьому відео я показую свої останні експерименти з випіканням фізичних обмежень у стандартні ключові кадри. Новий алгоритм bake гарантує: ідеальні цикли (нульовий джитер або стрибки між початком і кінцем), оптимізований розмір файла (автоматичне очищення кривих тримає розмір JSON близьким до оригіналу) та зворотну сумісність (випечені ключі дозволяють використовувати фізичні анімації Spine 4.2 у Spine 4.1 або навіть 4.0). Дивитися на YouTube

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-проєкт, якщо надано текстури

Picture Input

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

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

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

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

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

Spline

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

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

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

Refit

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

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

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

Quantizer

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

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

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

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

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. **Санітизувати неанглійські символи**: замінює неанглійські символи в назвах/ідентифікаторах, щоб уникнути проблем у наступних інструментах.

Scale

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

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

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

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

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

Schneider

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

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

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

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

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

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

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

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 тестування різних стратегій оптимізації

Animation Viewer

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

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

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

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

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 і дозволяє переглядати кожне витягнуте зображення, переглядати його властивості (розміри, обертання тощо) та перевіряти візуальну коректність після розпакування.