Skip to main content
Go to Editor

Wiki

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

aliran kerjaanimasicartacontohdataeksportfpsgaris masaingatanjeniskawalankeputusankonseplanggananmain balikmejametrikpanduanpemulapenentuan hargapengoptimumanpenontonperakamperangkaanpremiumprestasirakamanrugisaluran paipsambungansokettambah lagitidak rugiuivideoyoutube

Bermula: Aliran Kerja Asas

pemulaaliran kerjapanduan

Panduan ini akan membantu anda bermula dengan cepat dengan JSON Optimizer.

  1. Muatkan Projek:GunakanInputNodeuntuk memuatkan anda.json, .atlas, dan.pngfail.
  2. Pilih pratetap (mod Plus):Dalam mod Plus, gunakan panel kanan untuk memilih salah satu pratetap terbina dalam (cth., "Basic Fallback"). Ini secara automatik membina graf pengoptimuman untuk anda. Dalam mod Percuma, bina graf manual minimum:InputNodeQuantizerNodeOutputNode.
  3. Jalankan graf:Klik butang "Jalankan Graph".
  4. Bandingkan hasil:Beralih ke tab "Penonton" untuk membandingkan secara visual animasi asal dan dioptimumkan.
  5. Semak perubahan:Dalam tab "Keputusan" dan "Statistik", anda akan menemui maklumat terperinci tentang kekunci yang telah diubah suai atau dipadamkan.

Jenis Soket & Aliran Data

soketjenisdatasambungan

Artikel ini menerangkan jenis data yang digunakan oleh soket dalam graf nod dan perkara yang boleh disambungkan ke mana.

Peraturan cepat

Kebanyakanpemprosesannod beroperasi pada aSpine Muatan. Nod berkaitan Atlasberoperasi padaProjek AtlasatauSprite. gunaValidatorNodeapabila anda tidak pasti apa yang diharapkan oleh soket.

Jenis soket

  • Spine Muatan— perwakilan mesra masa jalan bagi projek Spine yang digunakan oleh kebanyakan nod pemprosesan.
  • Projek Atlas— atlas metadata + imej halaman yang digunakan oleh nod atlas.
  • Sprite— imej/rantau sprite yang dibongkar (Atlas Unpacker → Asset Pemapar / Atlas Repacker).
  • JSON— asal atau dibina semula Spine JSON untuk diagnostik/pengesahan/pembezaan.
  • Perubahan— senarai/strim perbezaan yang dihasilkan oleh beberapa pengoptimum dan digunakan oleh nod pemapar/pelaporan.

Kekunci → taip → sambung ke

Kunci soket (contoh)Jenis dataDihasilkan olehSambung ke
payload, payload_in, payload_outSpine MuatanInputNode, kebanyakan nod pemprosesanMemproses nod (RDP/Spline/Refit/Quantizer/Cleanup/etc.), kemudianOutputNode.payload
original_jsonJSONInputNodeDiagnosticNode, JSONDiffNode.json_before, OutputNode.original_json, beberapa nod atlas (cth. mod alfa pembungkus semula)
reconstructed_json_outJSONOutputNodeJSONDiffNode.json_after, pengesah/nyahpepijat
changesSenarai perubahanBeberapa nod pemprosesan +OutputNodeAnimationViewerNode(pilihan), laporan/nyahpepijat
atlas_projectProjek AtlasInputNode/ atlas pemaparAtlasUnpackerNode.atlas_project, OutputNode.atlas_project, penapis atlas
atlas_in, atlas_outProjek Atlas (atau strim berkaitan atlas)Atlas nod / penapisAtlas nod,AtlasViewerNode, AtlasMergerNode(melalui berbilang inputnya)
sprites_out, sprites_in, sprites_data_inSpriteAtlasUnpackerNode, penapisAssetViewerNode.sprites_in, AtlasRepackerNode.sprites_data_in
atlas_inputsBerbilang Projek AtlasPelbagai sumberAtlasMergerNode.atlas_inputs(sambungkan beberapa atlas)

Saluran paip praktikal

  • Pengoptimuman JSON asas: InputNode→ (pilihan:DiagnosticNode/ penapis) → pengoptimum (RDPNode, SplineNode, QuantizerNode, …) → OutputNode.
  • Atlas pembungkusan semula: InputNode.atlas_projectAtlasUnpackerNode→ (pilihan:AssetViewerNode) → AtlasRepackerNodeOutputNode.atlas_project/atlas_assets.

Pelan Langganan & Ciri Premium

langgananpremiumtambah lagipenentuan harga

re-polish menawarkan dua peringkat langganan untuk memenuhi keperluan yang berbeza.

Pelan Percuma

  • ✓ Asas Node Graph
  • ✓ JSON Penonton
  • • pengadun garis masa
  • • Pengoptimuman terhad
  • • spineVersi

Pelan Tambahan ($5/bulan)

  • • semuaCiri Percuma
  • ✓ Kit alat pengoptimuman meliputi kunci, lengkung dan tekstur
  • • fizikBakar
  • ✓ Bersihkan kunci yang dibakar menjadi lengkung
  • • grafPreset
  • • keutamaanSokongan

Mendapat Tambah

Klik padaNaik tarafbutang di navigasi atas, kemudian:

  • PilihDapatkan Plus
  • Anda akan diubah hala ke Patreon — lengkapkan langganan
  • Kembali ke editor nod semasa log masuk ke akaun Patreon yang sama supaya perkhidmatan boleh mengesahkan pautan dan mendayakan Plus
  • (Pilihan) Masukkan kod pengaktifan (untuk tawaran istimewa)

Konsep Teras: Lossy vs Lossless

konseprugitidak rugipemula

Semua kaedah pengoptimuman dibahagikan kepada dua jenis:

Syor:Sentiasa mulakan dengan pengoptimuman Lossless. Gunakan kaedah Lossy hanya apabila pengurangan saiz fail selanjutnya diperlukan, dan sentiasa semak hasilnya secara visual.

Cara Mengukur Keberkesanan

panduanmetrikperangkaan

Untuk memahami keberkesanan pengoptimuman anda, beri perhatian kepada metrik berikut:

  • Saiz fail:Saiz akhir.jsonfail adalah matlamat utama pengoptimuman.
  • Kiraan Kerangka Utama:Dalam tab "Statistik", anda akan menemui jadual dan carta yang menunjukkan bilangan bingkai utama yang telah dialih keluar dalam setiap animasi.
  • Perbandingan Visual:Sentiasa gunakan tab "Penonton" untuk membandingkan animasi "sebelum" dan "selepas". Pastikan pengoptimuman Lossy tidak memperkenalkan artifak visual yang tidak boleh diterima.
  • Laporan dalam Jadual "Keputusan":Di sini anda boleh menyemak secara terperinci setiap perubahan khusus yang dibuat pada data anda.

Pemapar: Panel Kawalan

penontonkawalanui

ThePenontontindanan tab aKawalanpanel di atas kanvas. Ia dibahagikan kepada tiga kumpulan:

Kawalan Animasi

  • Animasi— memilih animasi Spine yang sedang dimainkan.
  • kulit— memilih Kulit yang digunakan.
  • Kelajuan— pengganda kelajuan main balik (0.1× → 3.0×).

Lihat Kawalan

  • Tetapkan Semula Pandangan— memulihkan kedudukan kamera/reka letak lalai.
  • Lihat Pilihan— offset berangka yang digunakan untuk meletakkan pandangan perbandingan:Jarak X / Jarak Y(jarak antara asal/dioptimumkan) danOffset X / Offset Y(anjakan global).

Kawalan Nyahpepijat

  • Mod Nyahpepijat— membolehkan tindanan pemaparan nyahpepijat (bergantung pada sokongan masa jalan).
  • Dayakan Fizik— togol simulasi fizik (jika rangka menggunakan fizik).
  • Label— togol tindanan label.

Pemapar: Panel Prestasi

prestasifpsingatanui

ThePrestasipanel menunjukkan metrik masa jalan masa nyata untuk rangka yang sedang dimainkan.

Masa nyata

  • FPS— bingkai sesaat diukur oleh monitor.
  • Masa Bingkai— masa setiap bingkai dalam milisaat (lebih rendah adalah lebih baik).
  • Carta FPS— 120 sampel terakhir dipaparkan sebagai bar.

Metrik rangka

  • Slot Kelihatan— berapa banyak slot yang kelihatan pada sampel terakhir.
  • Purata Kelihatan— purata bergolek slot yang boleh dilihat (lebih stabil daripada bingkai tunggal).
  • Bucu— kiraan puncak semasa digunakan untuk pemaparan.
  • Had (px)— rangka semasa menghadkan lebar×tinggi dalam piksel.
  • Purata Sempadan— had purata bergolek.
  • Tekstur Terbesar— halaman atlas terbesar (mengikut dimensi) yang dikesan untuk rangka.
  • Memori Tekstur— anggaran jumlah memori tekstur untuk halaman atlas yang dimuatkan. Apabila tersedia, panel juga menunjukkan pecahan setiap halaman (nama fail, dimensi dan anggaran saiz).

Penambahbaikan (apabila Dioptimumkan tersedia)

  • Penambahbaikan Slot- membandingkanPurata Kelihatanantara Asal vs Dioptimumkan.
  • Perubahan Ingatan- membandingkanMemori Teksturantara Asal vs Dioptimumkan.

Penonton: Garis masa

penontongaris masaanimasimain balikpanduan

TheGaris masapanel ialah penjujukan animasi boleh dok di bahagian bawah Pemapar. Ia membolehkan anda mengatur klip animasi pada berbilang trek, mengawal main balik dan peralihan pratonton.

Trek & Klip

  • Sehingga 4 trek animasi— setiap trek memetakan ke SpinetrackIndexlapisan. Trek yang lebih tinggi bercantum di atas trek yang lebih rendah.
  • Tambah animasi— klik pada+butang pada mana-mana trek untuk membuka pemilih animasi (dengan penapis carian).
  • Seret & ubah saiz klip— seret badan klip untuk menggerakkannya di sepanjang trek; seret tepi kiri/kanan untuk menukar masa atau tempoh mula.
  • Padamkan klip— pilih klip dan tekanDeleteatauBackspace.
  • Pengesanan bertindih— klip bertindih pada trek yang sama diserlahkan dengan warna merah.

Kawalan Pengangkutan

  • Main / Jeda / Berhenti— kawalan main balik standard.
  • Sebelumnya / Seterusnya— lompat ke permulaan klip sebelumnya atau seterusnya.
  • Kelajuan animasi— peluncur dari 0.1× hingga 3.0×.
  • Auto-stop— main balik berhenti secara automatik pada penghujung garis masa.

Percampuran Peralihan

  • Tempoh campuran global— menetapkan masa silang pudar lalai antara klip berturut-turut.
  • Per-peralihan menimpa— klik gelembung peralihan antara dua klip untuk menetapkan tempoh campuran tersuai. Anda boleh menetapkan semula penggantian individu kembali kepada nilai global.

Mencari & Menggosok

  • Kepala main— seret pemegang pada pembaris masa atau klik pembaris untuk mencari.
  • Pratonton masa kursor— melayang di atas kawasan trek memaparkan masa di bawah kursor.
  • Pekerja Web— cari dan pengiraan peristiwa diturunkan kepada pekerja latar belakang untuk prestasi lancar.

Main Semula Semula Fizik

  • Togol fizik antaraKemas kini(kekangan aktif) dantiada(kurang upaya).
  • Semasa mencari, masa rangka dimajukan untuk menyelesaikan kekangan fizik dengan betul.

Sokongan Berbilang Rangka

  • Pemilih pasangan sasaran— setiap trek boleh menyasarkan semua pasangan (🌐 Semua pasangan) atau rangka tertentu.
  • Kedudukan dan skala setiap rangka— X/Y offset dan input skala untuk rangka individu.
  • Lukis susunan— input berangka untuk mengawal keutamaan lapisan render.

Debug Draw

Togol keterlihatan untuk: Tulang, Nama Tulang, Kawasan, Jerat, Badan, Sempadan, Laluan, Keratan, Mata.

Pemilihan Kulit

Kotak pilihan berbilang pilihan untuk semua kulit yang ditakrifkan dalam rangka yang dimuatkan.

Lihat Tetapan

  • Jarakkan X / Y— jurang antara pasangan rangka.
  • Offset X / Y— peralihan port pandangan global.
  • Togol PMA— mod alfa pradarab (Spine 3.x) atau atlas mod alfa (Spine 4.x: auto / pma / bleed / none).
  • Label rangka— togol tindanan label.

Penonton: Perakam

penontonperakamrakamaneksportvideopanduan

ThePerakammenangkap animasi Spine daripada penonton sebagai video, imej animasi atau jujukan imej.

Mod Rakaman

  • ⚡ Rekod Pantas— tangkapan masa nyata menggunakanMediaRecorder + captureStream(). Menghasilkan output WebM sahaja. Cepat tetapi terhad kepada kadar bingkai masa nyata.
  • 🎬 Eksport HQ— pemaparan bingkai demi bingkai luar talian menggunakan WebCodecsVideoEncoder + readPixels(). Menyokong semua format dan menghasilkan output piksel-sempurna.

Format Output

  • Video: WebM, MP4, AVI, MOV
  • Imej animasi: GIF, PNG Beranimasi (APNG)
  • Urutan imej: PNG Jujukan, Jujukan WebP

Codec (Eksport HQ)

VP8, VP9, ​​H.264 (AVC), AV1, ProRes — codec yang tersedia dikesan secara automatik berdasarkan sokongan penyemak imbas.

Kualiti

  • Pratetap: Rendah (~1 Mbps), Sederhana (~3 Mbps), Tinggi (~5 Mbps), Tanpa Kehilangan (~20 Mbps).
  • Kadar bit tersuai— nyatakan dalam kbps untuk kawalan halus.

Masa

  • FPS: 24, 30, 60 atau tersuai (1–120 fps).
  • Memanaskan badan— saat untuk penyelesaian fizik/kekangan sebelum rakaman bermula.
  • Jeda-selepas— pegang bingkai terakhir untuk tempoh yang ditetapkan.
  • Sertakan bingkai terakhir— togol.

Viewport & Pangkas

  • Dayakan/lumpuhkan pemangkasan— togol kawasan tanaman.
  • Pangkas segi empat tepat— X, Y, Lebar, Tinggi dalam koordinat dunia Spine.
  • Snap untuk berpasangan— pangkas automatik pada pasangan rangka dengan padding boleh dikonfigurasikan.
  • Tindanan tanaman interaktif— seret sudut/tepi terus dalam port pandangan.

Resolusi

  • Mod skala— peluncur peratusan (10%–400%).
  • Mod tetap— dimensi piksel eksplisit (sehingga 4096px).
  • Peleraian output yang dikira dipaparkan secara langsung.

Pilihan Render

  • Membuat tulang— sertakan tindanan tulang nyahpepijat.
  • Memaparkan imej— sertakan imej lampiran.
  • Render orang lain- kotak sempadan, laluan.
  • MSAA— Tiada / 2× / 4× anti-aliasing.
  • Melicinkan— tahap 0–8 dengan pilihan algoritma (Bicubic / Bilinear).

Latar belakang

  • Telus— dilumpuhkan secara automatik untuk format yang tidak mempunyai alfa (cth., GIF, JPEG).
  • Warna pepejal- pemilih warna tersuai.
  • Papan dam— penunjuk ketelusan visual.
  • Sokongan saluran alfa: VP9+WebM, AV1+MP4, PNG Jujukan, APNG, Jujukan WebP.

Tindanan HUD

  • Togol: maklumat trek, masa, nombor bingkai, FPS, label rangka.
  • Teks tersuai- rentetan tera air.
  • kedudukan— 4 penjuru (kiri atas, kanan atas, kiri bawah, kanan bawah).
  • Saiz fon— 8–64px, ditambah pemilih warna teks.

Ulang & Berbilang Rangka

  • Ulangi kiraan— 1–100 lelaran gelung.
  • Pasangan sasaran— merekodkan rangka tertentu atau semua.
  • Mod rangka— Gabungan (fail tunggal) / Fail berasingan (satu fail bagi setiap rangka).

Templat Nama fail

Rentetan templat dengan pembolehubah:{project}, {animation}, {W}, {H}, {fps}. Pratonton langsung nama fail yang diselesaikan dipaparkan.

Integrasi Garis Masa

Julat rakaman muncul sebagai klip putus-putus merah/oren pada garis masa. Seret tepi untuk mengubah saiz julat, seret badan untuk meletakkan semula atau gunakan butang tetapan (⚙️) untuk membuka tetapan rakaman penuh.

Tab Keputusan

keputusanmejapengoptimuman

TheKeputusantab menunjukkan output pengoptimuman terperinci.

  • Jadual keputusan— paparan baris setiap perubahan hasil pengoptimuman JSON (cth. animasi/bone/property/keyframe yang telah diubah suai atau dialih keluar).
  • Sprite/Atlas perbandingan— apabila pengoptimuman tekstur digunakan, bahagian ini membandingkan saiz sprite dan hasil pembungkusan.

Petua: gunakan paparan Hasil untuk menjawab:apa sebenarnya yang berubah?

Tab Statistik

perangkaancartametrik

ThePerangkaantab meringkaskan hasil pengoptimuman sebagai carta dan metrik agregat.

  • Carta Pengoptimuman— menggambarkan kesan pengoptimuman ke atas set data (apabila pengoptimuman JSON menghasilkan perubahan).
  • Jadual Metrik— nombor utama seperti saiz asal/baru dan peratus pengurangan.
  • Statistik Pembungkusan Tekstur— jika atlas pembungkusan semula telah digunakan, menunjukkan halaman, jumlah/kawasan terpakai, kecekapan dan pecahan setiap halaman.

Gunakan tab ini untuk menjawab:berapa banyak yang telah kami perbaiki secara keseluruhan?

Contoh Saluran Paip (Video)

videocontohsaluran paipyoutube

Di bawah ialah saluran paip dunia sebenar yang lengkap daripada senarai main YouTube rasmi.

Buka senarai main penuh

Contoh

Spine2D Eksperimen 1: Pengoptimuman Lengkung dengan RDP Algoritma— garis dasar Spine demo pengoptimuman 2D: algoritma Ramer–Douglas–Peucker (RDP) mengalih keluar data lengkung/kunci berlebihan untuk mengecilkan JSON. RDP boleh mengalih keluar kunci penting, jadi sentiasa semak animasi dan kecualikan tulang/slot sensitif dengan nod penapis sebelum nod RDP.Tonton di YouTube

Spine2D Eksperimen 2: Pengoptimuman Lengkung dengan Algoritma Kuantiti— kuantisasi ialah Spine pengoptimum lengkung 2D yang paling selamat: nilai pembundaran (selalunya kepada 1 perpuluhan) memberikan kemenangan saiz serta-merta. Contoh: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]. Gunakan nod pengkuantitian sebagai langkah terakhir sebelum nod keluaran untuk mengunci pengoptimuman; video menunjukkan sebelum/selepas dengan perubahan visual yang hampir tidak dapat dilihat.Tonton di YouTube

Spine2D Eksperimen 3: Membina Semula Lengkung dengan Algoritma Spline & Refit— Spline adalah lossless untuk segmen lurus (mengalih keluar kekunci tengah yang berlebihan), manakala Refit adalah lossy tetapi berkuasa: ia membina semula bahagian yang kompleks sebagai satu lengkung Bézier. Algoritma ini sesuai selepas fizik membakar dan membersihkan melalui nod Schneider. Nota: Pasang semula lelaran melebihi 100 boleh mengambil masa beberapa minit untuk mencari lengkung terbaik. Video menunjukkan cara kedua-dua kaedah berfungsi dan % pengoptimuman yang diperoleh.Tonton di YouTube

Spine2D Eksperimen 4: Mengalih keluar Data Berlebihan dengan Nod Keterlihatan Lampiran & Pembersihan— struktur Spine pengoptimuman 2D menggunakan nod Keterlihatan Lampiran dan Pembersihan. Keterlihatan Lampiran melumpuhkan lampiran apabila alfa pudar kepada 0 dan memulihkannya semasa fade-in, mengurangkan panggilan cabutan dan mengalih keluar kekunci berlebihan. Pembersihan mengalih keluar lebihan logik: trek warna/alfa yang tidak digunakan, kekunci putaran IK dikawal sepenuhnya oleh kekangan dan kekunci kekangan laluan. Video menunjukkan cara pengoptimuman berasaskan logik ini berbeza daripada penyederhanaan lengkung.Tonton di YouTube

Spine2D Eksperimen 5: Membina Talian Paip Bukan Linear (Penapis & Gabung Node)— bukan linear Spine pengoptimuman 2D: belah strim data dengan penapis (Animasi, Tulang, Slot, Parameter atau Kulit), jalankan algoritma yang berbeza pada cawangan selari (contohnya, pemampatan agresif untuk tulang badan sambil mengekalkan animasi muka tanpa kehilangan), kemudian gabungkan cawangan dengan nod Gabung menjadi satu rangka. Aliran kerja ini melangkaui Input ringkas → Optimumkan → Saluran paip keluaran dan membolehkan anda menyasarkan hanya perkara yang perlu dioptimumkan.Tonton di YouTube

Spine2D Eksperimen 6: Pembungkusan Semula Tekstur & Penskalaan Terpilih dengan Nod Tersuai— saluran paip pengoptimuman tekstur lanjutan: nod Atlas Unpacker/Repacker membolehkan anda membongkar, mengubah saiz/memampatkan dan membungkus semula atlas dalam satu graf, lebih pantas daripada aliran kerja Spine standard. Menggunakan saluran paip bukan linear, anda boleh membahagikan aset, mengekalkan tekstur aksara pada 100% sambil mengecilkan yang lain kepada 25%, kemudian menggabungkan semuanya kembali menjadi atlas kongsi tunggal. Atlas/Nod Pemapar Aset menyediakan pemeriksaan visual dan penapisan aset dan atlas pada setiap peringkat. Ini memudahkan untuk menentukan saiz semula sasaran, memproses secara terpilih dan menggabungkan semula hasil sebagai templat boleh guna semula.Tonton di YouTube

Spine2D Eksperimen 7: Saiz Semula Rangka Segera dengan Skala Node— hujung-ke-hujung Spine saluran paip pengoptimuman 2D serta penskalaan rangka. Nod Skala menggantikan aliran kerja Spine yang membosankan (eksport/import, bungkus semula/bongkar, betulkan laluan) dengan satu langkah graf: tetapkan saiz sasaran, pratonton serta-merta dalam port pandangan dan lelaran dalam masa nyata. Video tersebut menggabungkan pengoptimuman lengkung/kunci, pemprosesan aset dan saiz semula rangka dalam satu saluran paip yang diperkemas.Tonton di YouTube

Spine2D Eksperimen 8: Gambaran Keseluruhan Node Beta Awam— panduan setiap nod yang tersedia dalam beta awam dan cara menggilap semula menjembatani keperluan animator dan pembangun. Meliputi pembersihan kunci berlebihan, penyederhanaan Bézier‑ke‑linear, pembulatan untuk saiz, penyingkiran lampiran tidak kelihatan, pembersihan sifat yang tidak digunakan, pengesanan aksara bukan bahasa Inggeris dan atlas unpack/filter/scale/repack. Dual Pemapar mengesahkan hasil dengan perbandingan visual dan FPS sebelah-menyebelah. Public Beta bersiaran langsung dire-polish.com. Tonton di YouTube

Spine2D Eksperimen 9: Kekangan Fizik Baking kepada Bingkai Utama— Dalam video ini, saya menunjukkan eksperimen terbaharu saya dengan kekangan fizik penaik ke dalam bingkai utama standard. Algoritma pembakar baharu memastikan: Gelung Sempurna (kegelisahan sifar atau lompat antara bingkai mula dan akhir), Saiz Fail Dioptimumkan (pembersihan lengkung automatik memastikan saiz JSON hampir kepada yang asal) dan Keserasian Ke Belakang (kunci bakar membolehkan anda menggunakan Spine 4.2 fizik-token atau animasi fizik genap dalam 4.2 4.0).Tonton di YouTube

Nodes

Input

Mengimport fail projek Spine, input JSON sahaja, aset demo dan pakej ZIP ke dalam graf.

Tujuan: Ini ialah titik masuk utama untuk kebanyakan aliran kerja. Ia membaca JSON, atlas dan tekstur serta menormalkannya kepada data dalaman yang boleh diproses oleh nod hiliran.

Mod yang disokong:
1. Projek penuh: JSON + atlas + tekstur
2. JSON sahaja: proses data skeleton/animasi tanpa atlas
3. Pakej ZIP: fail zip berbungkus yang mengandungi projek lengkap
4. Aset demo: data sampel terbina dalam untuk ujian pantas

Output utama:
- **payload_out**: data ternormal untuk nod pengoptimuman
- **original_json_out**: JSON sumber untuk perbandingan atau pembinaan semula
- **atlas_project_out**: projek atlas yang telah dihuraikan apabila tekstur disediakan

Picture Input

Menambah imej PNG/JPEG kendiri ke viewport supaya anda boleh membina pratonton dan tangkapan pembentangan yang lebih kemas.

Tujuan: Gunakan nod ini untuk meletakkan imej terus ke dalam viewport sebagai lapisan pembentangan atau pembantu visual. Ia berguna apabila anda mahu menghias adegan, menambah grafik sokongan dan menjadikan pratonton projek kelihatan lebih kemas sebelum merakam video atau demo.

Aliran kerja: Muatkan satu imej, kemudian gunakan alat viewport untuk menskalakannya, mengalihkannya dan melaras z-index supaya ia duduk dengan betul dalam komposisi anda. Ini memudahkan pembinaan tangkapan pameran yang menarik tanpa menyentuh data utama projek Spine.

Nod ini berdiri sendiri dan tidak mendedahkan soket graf.

Output

Mengumpulkan hasil akhir dan membolehkan anda memuat turun data yang dioptimumkan sebagai fail berasingan, set fail berkumpulan atau arkib.

Tujuan: Bertindak sebagai hab eksport untuk JSON yang dioptimumkan, data atlas, tekstur dan sprite. Ia boleh menghimpunkan hasil daripada satu set JSON/atlas/tekstur, daripada berbilang set fail, atau daripada sprite sahaja apabila anda mahukan output imej tanpa membina semula projek Spine penuh.

Pilihan eksport:
- Muat turun fail secara individu atau sebagai satu arkib
- Muat turun hasil berbungkus atau arkib yang mengandungi fail tidak berbungkus
- Eksport JSON dalam bentuk padat atau bentuk pretty-print yang mudah dibaca
- Eksport data projek Spine lengkap atau hanya hasil sprite/imej

Aliran chaining: OutputNode tidak semestinya menjadi penghujung mutlak graf. Anda boleh menghantar outputnya ke peringkat pipeline lain dan menjalankan fail yang sama melalui pass pengoptimuman tambahan. Dalam amalan, pengoptimuman key dan curve telah diuji sehingga 3 iterasi berturut-turut.

Output utama:
- **reconstructed_json_out**: JSON Spine yang dibina semula
- **original_json_passthrough_out**: passthrough JSON asal
- **payload_out**: payload untuk chaining lanjutan
- **changes**: perubahan pengoptimuman yang dikumpulkan
- **atlas_assets**: sumber atlas sedia untuk dieksport

RDP

Memudahkan lengkung animasi menggunakan algoritma Ramer-Douglas-Peucker (RDP).

Tujuan: Mengurangkan bilangan bingkai utama dalam segmen animasi linear atau hampir linear dengan mengalih keluar titik yang terletak pada garis lurus antara dua yang lain.

Peraturan Emas: Dilumpuhkan secara lalai. Ia melindungi lengkung dengan bentuk yang ketara (kawasan/lengkungan) daripada diratakan kepada linear. Lumpuhkannya hanya untuk pemampatan yang lebih agresif selepas semakan visual.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Spline

Sesuai dengan lengkung spline licin pada bingkai utama animasi, mengurangkan titik perantaraan yang tidak perlu.

Tujuan: Pemasangan lengkung yang licin sambil mengekalkan kualiti visual.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Refit

Anggarkan jujukan rangka utama padat dengan lebih sedikit lengkung Bezier untuk mengurangkan saiz.

Tujuan: Muatkan lebih sedikit lengkung sambil kekal dalam toleransi.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Quantizer

Mengurangkan ketepatan nilai berangka dalam bingkai utama dan lengkung.

Tujuan: Cara yang mudah tetapi berkesan untuk mengurangkan saiz fail dengan membundarkan nombor kepada bilangan tempat perpuluhan yang ditentukan.

Penggunaan: Boleh digunakan pada hampir semua data animasi. Menjadi lebih berkesan dengan kiraan bingkai utama yang lebih tinggi.

Awas: Pengkuantitian yang terlalu agresif (kepersisan rendah) boleh menyebabkan kegelisahan atau artifak visual dalam animasi.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Cleanup

Menjalankan pelbagai tugas pembersihan untuk mengalih keluar data animasi yang berlebihan atau tidak diperlukan.

Tujuan: Alat khusus untuk mengalih keluar jenis data berlebihan tertentu yang mungkin terlepas oleh pengoptimum lain.

Penggunaan: Sambungkan muatan anda ke 'payload_in' dan ambil keputusan daripada 'payload_out'. Jika anda mahukan laporan setiap perubahan, gunakan juga 'perubahan'.

Kekunci soket:
- Input: muatan_masuk
- Output: muatan_keluar, perubahan

Pembersihan yang disokong pada masa ini:
1. **Alih Keluar Trek Warna/Alfa yang Tidak Digunakan**: Mengalih keluar garis masa warna/alfa untuk slot yang tidak pernah kelihatan semasa animasi.
2. **Alih Keluar Putaran IK Berlebihan**: Mengeluarkan bingkai utama putaran daripada tulang yang dikawal sepenuhnya oleh kekangan IK dengan campuran 100%.
3. **Alih Keluar Kekunci Kekangan Laluan**: Mengeluarkan rangka kunci putar/terjemah daripada tulang yang dikawal sepenuhnya oleh kekangan laluan (nilai campuran pada 100%).
4. **Sanitasi Aksara Bukan Bahasa Inggeris**: Menggantikan aksara bukan Inggeris dalam nama/pengecam untuk mengelakkan isu dalam alatan hiliran.

Scale

Menskalakan semua nilai berangka dalam bingkai utama animasi mengikut faktor tertentu.

Tujuan: Menskala data animasi secara seragam, berguna untuk mengubah saiz rangka secara berkadar atau melaraskan keamatan animasi.

Penggunaan: Sambung **payload_in** dan ambil hasil daripada **payload_out**.

Kekunci soket: muatan_masuk, muatan_keluar

Schneider

Sesuai dengan lengkung Bezier yang licin pada bingkai utama animasi menggunakan algoritma pemadanan lengkung Schneider.

Tujuan: Pemasangan lengkung lanjutan yang menghasilkan lengkung Bezier yang kelihatan semula jadi daripada jujukan rangka utama yang padat.

Ketersediaan: **Nod tambah sahaja**.

Cara ia berfungsi: Algoritma Schneider menganalisis kedudukan bingkai utama dan tangen untuk menjana titik kawalan Bezier optimum yang hampir sepadan dengan gerakan asal.

Parameter:
- **Toleransi Ralat**: Sisihan maksimum yang dibenarkan daripada bingkai utama asal. Lebih rendah = lebih tepat, lebih tinggi = lengkung yang lebih licin.
- **Sudut Sudut**: Sudut ambang (darjah) untuk membelah lengkung kepada segmen.

Terbaik untuk:
- Animasi lukisan tangan atau diimport dengan banyak bingkai utama
- Menukar interpolasi linear untuk melicinkan lengkung Bezier
- Mengurangkan kiraan kerangka utama sambil mengekalkan kualiti lengkung

Nota: Lebih intensif secara pengiraan daripada algoritma yang lebih mudah seperti RDP, tetapi menghasilkan kualiti lengkung yang unggul.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Physics Constraint Bake

Membakar Spine PhysicsConstraint gerakan ke dalam tulang berputar/terjemah kerangka utama dan mengalih keluar garis masa fizik.

Tujuan: Menukar simulasi fizik masa jalan kepada bingkai utama yang jelas supaya animasi bersifat deterministik dan boleh diedit tanpa kekangan fizik. Selepas dibakar, kekangan fizik dan garis masa fizik dialih keluar daripada muatan.

Ketersediaan: **Nod tambah sahaja**.

Input/Output:
- **muatan_masuk** → **muatan_masuk** (dibakar)
- **perubahan** (senarai perubahan pilihan)

Kawalan:
- **Sampel FPS**: Kadar pensampelan simulasi untuk pembakar.
- **Putaran Bakar**: Tulis kekunci putaran bakar.
- **Terjemahan Bakar**: Tulis kunci terjemahan yang dibakar.
- **Terjemahan Bakar (Kanak-kanak)**: Sapukan bakar terjemah pada tulang kanak-kanak yang bergantung pada gerakan fizik.

Nota:
- Memerlukan Spine JSON asal untuk membina semula data simulasi.
- Gunakan apabila anda ingin mengalih keluar kekangan fizik tetapi mengekalkan pergerakan.

Attachment Visibility

Mengoptimumkan pemaparan dengan menetapkan lampiran slot kepada null apabila alfanya adalah sifar.

Tujuan: Menghalang enjin permainan daripada perlu memproses atau membuat lampiran yang tidak kelihatan.

Penggunaan: Memproses **payload_in**, output dioptimumkan **payload_out**, dan secara pilihan melaporkan **perubahan**.

Kekunci soket: muatan_masuk, muatan_keluar, perubahan

Payload Merger

Menggabungkan berbilang muatan animasi yang diproses kembali menjadi satu muatan bersatu.

Tujuan: Penting untuk saluran paip pemprosesan selari di mana animasi atau kumpulan tulang yang berbeza dioptimumkan secara berasingan dan perlu digabungkan semula.

Input:
- **asas**: Muatan induk (struktur rangka)
- **mengatasi**: Satu atau lebih muatan yang treknya menggantikan trek asas

Output:
- **merged_out**: Muatan bercantum

Kekunci soket: asas, menimpa, merged_out

Animation Viewer

Alat visual untuk memeriksa dan membandingkan lengkung animasi sebelum dan selepas pengoptimuman.

Tujuan: Menyediakan perwakilan grafik bingkai utama dan lengkung untuk trek yang dipilih.

Penggunaan: Sambung **before_in** dan **after_in** untuk menindih asal vs dioptimumkan. Secara pilihan, sambungkan **perubahan** untuk menyerlahkan lagu yang terjejas.

Kekunci soket: before_in, after_in, berubah

Animation Filter

Menapis trek animasi berdasarkan nama animasi (cth., 'run', 'idle').

Tujuan: Berguna untuk menggunakan strategi pengoptimuman yang berbeza pada animasi yang berbeza.

Penggunaan: Tapis **payload_in** ke dalam **payload_out** dan mendedahkan **animation_list** untuk pemilihan UI.

Kekunci soket: muatan_masuk, muatan_keluar, senarai_animasi

Asset Filter

Tapis aset atlas mengikut nama, berfungsi dalam dua mod: sebelum nyahpek (menapis teks atlas) atau selepas nyahpek (menapis sprite).

Tujuan: Mengawal aset mana yang disertakan dalam aliran kerja - sama ada aset mana yang hendak dibongkar daripada atlas atau mana sprite yang telah dibongkar untuk dimasukkan dalam pembungkusan semula.

Input/Output:
- Mod Atlas: **atlas_in** → **atlas_out**
- Mod Sprite: **sprites_in** → **sprites_out**

Kekunci soket: atlas_in, atlas_out, sprites_in, sprites_out

Bone Filter

Menapis trek animasi tulang berdasarkan nama tulang.

Tujuan: Membenarkan penyasaran atau mengecualikan tulang tertentu daripada proses pengoptimuman.

Penggunaan: Tapis **payload_in** ke **payload_out**.

Kekunci soket: muatan_masuk, muatan_keluar

Skin Filter

Menapis data animasi dan aset berdasarkan nama kulit.

Tujuan: Proses hanya kulit tertentu daripada projek Spine berbilang kulit.

Penggunaan: Tapis **payload_in** ke **payload_out**.

Kekunci soket: muatan_masuk, muatan_keluar

Slot Filter

Menapis trek animasi slot berdasarkan nama slot.

Tujuan: Berguna untuk menyasarkan atau mengecualikan slot tertentu yang mungkin mempunyai keperluan masa atau keterlihatan khas.

Penggunaan: Tapis **payload_in** ke **payload_out**.

Kekunci soket: muatan_masuk, muatan_keluar

Parameter Filter

Menapis trek animasi berdasarkan jenis sifatnya (cth., putaran, skala, warna).

Tujuan: Membenarkan menggunakan pengoptimuman berikutnya hanya pada jenis data animasi tertentu.

Penggunaan: Tapis **payload_in** ke **payload_out**.

Kekunci soket: muatan_masuk, muatan_keluar

Atlas Unpacker

Mengekstrak sprite individu daripada tekstur Spine atlas.

Tujuan: Memecahkan fail atlas kepada sprite komponennya, membenarkan analisis individu atau pembungkusan semula.

Penggunaan: Sambung **atlas_project** daripada InputNode kepada **atlas_project** (atau **atlas_project_in**) pada nod ini. Secara pilihan, sambungkan **skeleton_json_in** (daripada InputNode's **original_json**) untuk mendayakan pemangkasan mesh-aware (memangkas sprite untuk mesh sempadan badan bukannya sempadan segi empat tepat, yang boleh mengurangkan memori tekstur untuk lampiran jaringan dengan ketara).

Keluaran:
- **sprites_out**: Tatasusunan sprite standard (untuk penonton/pembungkus semula)
- **sprites_data_out**: Imej sprite/metadata yang diekstrak (himpunan berstruktur)
- **atlas_out**: Atlas laluan projek

Kekunci soket: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

Membungkus semula sprite individu ke dalam satu atau lebih atlas tekstur baharu yang dioptimumkan.

Tujuan: Mengoptimumkan memori tekstur dan berpotensi mengurangkan panggilan cabutan dengan mencipta helaian sprite yang cekap.

Penggunaan: Menerima sprite sama ada melalui **sprites_data_in** (berstruktur sprite bundle) atau melalui **sprites_out** (sprites_out array standard). Jika diperlukan untuk pengendalian alfa / pembungkusan poligon, sediakan rangka asal melalui **original_json**. Mengeluarkan atlas yang dibungkus sebagai **atlas_out**.

Kekunci soket: sprites_data_in, sprites_out, original_json, atlas_out

Atlas Viewer

Alat visualisasi dan analisis atlas ringan untuk memeriksa struktur atlas sebelum membongkar.

Tujuan: Menyediakan cara pantas untuk pratonton atlas halaman dan wilayah tanpa melakukan operasi pembongkaran berat. Membantu mengesahkan struktur atlas dan mengenal pasti kawasan yang tidak digunakan.

Penggunaan: Sambungkan satu projek atlas ke **atlas_project** (atau **atlas_in** / **atlas**), atau periksa sekumpulan projek atlas melalui **atlas_projects**. Secara pilihan, sambungkan rangka JSON ke **json** untuk analisis penggunaan.

Kekunci soket: atlas_project, atlas_projects, atlas_in, atlas, json

Atlas Merger

Menggabungkan berbilang sumber atlas ke dalam satu atlas bersatu.

Tujuan: Menggabungkan berbilang projek atlas menjadi satu.

Input:
- **atlas_inputs**: Tatasusunan berbilang input projek atlas

Keluaran:
- **atlas_out**: Projek atlas digabungkan
- **merged_out**: Output gabungan warisan
- **merged_atlas_out**: Output gabungan warisan

Kekunci soket: atlas_inputs, atlas_out, merged_out, merged_atlas_out

Saluran paip biasa:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Sebelum Repacker data adalah sprite individu; selepas Repacker ia menjadi projek atlas. Atlas Penggabungan menggabungkan projek atlas, kemudian Unpacker terakhir → Pas Repacker membungkus semula semuanya dengan ketat menjadi satu atlas bersatu.

Asset Viewer

Memaparkan sprite individu daripada atlas yang tidak dibungkus.

Tujuan: Alat penyahpepijatan visual untuk manipulasi atlas.

Penggunaan: Menerima sprites melalui **sprites_out** (standard) atau legasi **sprites_in** / **sprites_data**.

Kekunci soket: sprites_out, sprites_in, sprites_data