Pilih preset (Mode plus):Dalam mode Plus, gunakan panel kanan untuk memilih salah satu preset bawaan (misalnya, "Basic Fallback"). Ini secara otomatis membuat grafik pengoptimalan untuk Anda. Dalam mode Bebas, buat grafik manual minimal:InputNode → QuantizerNode → OutputNode.
Jalankan grafik:Klik tombol "Jalankan Graph".
Bandingkan hasil:Beralih ke tab "Penampil" untuk membandingkan secara visual animasi asli dan animasi yang dioptimalkan.
Tinjau perubahan:Di tab "Hasil" dan "Statistik", Anda akan menemukan informasi rinci tentang kunci mana yang diubah atau dihapus.
Jenis Soket & Aliran Data
soketjenisdatakoneksi
Artikel ini menjelaskan tipe data yang digunakan oleh soket dalam grafik node dan apa yang dapat dihubungkan dimana.
Aturan cepat
Palingpengolahannode beroperasi pada aSpine Muatan. Node yang berhubungan dengan Atlas beroperasi padaProyek AtlasatauSprite. MenggunakanValidatorNodeketika Anda tidak yakin dengan apa yang diharapkan oleh soket.
Jenis soket
Spine Muatan— representasi proyek Spine yang ramah proses dan digunakan oleh sebagian besar node pemrosesan.
Proyek Atlas— Metadata atlas + gambar laman yang digunakan oleh simpul atlas.
Rekomendasi:Selalu mulai dengan optimasi Lossless. Gunakan metode Lossy hanya jika diperlukan pengurangan ukuran file lebih lanjut, dan selalu periksa hasilnya secara visual.
Bagaimana Mengukur Efektivitas
memandumetrikstatistik
Untuk memahami seberapa efektif pengoptimalan Anda, perhatikan metrik berikut:
Ukuran Berkas:Ukuran akhir dari.jsonfile adalah tujuan utama optimasi.
Jumlah Bingkai Utama:Di tab "Statistik", Anda akan menemukan tabel dan bagan yang menunjukkan berapa banyak bingkai utama yang dihapus di setiap animasi.
Perbandingan Visual:Selalu gunakan tab "Penampil" untuk membandingkan animasi "sebelum" dan "sesudah". Pastikan pengoptimalan Lossy tidak menimbulkan artefak visual yang tidak dapat diterima.
Laporkan di Tabel "Hasil":Di sini Anda dapat memeriksa secara detail setiap perubahan spesifik yang dilakukan pada data Anda.
Penampil: Panel Kontrol
penontonkontrolui
ItuPenontontab overlay aKontrolpanel di atas kanvas. Ini dibagi menjadi tiga kelompok:
Kontrol Animasi
Animasi— memilih animasi Spine mana yang diputar.
Kulit— memilih Skin mana yang diterapkan.
Kecepatan— pengganda kecepatan pemutaran (0,1× → 3,0×).
Lihat Kontrol
Atur Ulang Tampilan— mengembalikan posisi kamera/tata letak default.
Lihat Opsi— offset numerik yang digunakan untuk memposisikan tampilan perbandingan:Spasi X / Spasi Y(jarak antara asli/dioptimalkan) danOffset X / Offset Y(pergeseran global).
Kontrol Debug
Modus Debug— mengaktifkan debug rendering overlay (tergantung pada dukungan runtime).
Aktifkan Fisika— mengaktifkan simulasi fisika (jika kerangka menggunakan fisika).
Label— mengaktifkan overlay label.
Penampil: Panel Kinerja
pertunjukanfpsingatanui
ItuPertunjukanpanel menunjukkan metrik waktu proses real-time untuk kerangka yang sedang diputar.
Waktu nyata
FPS— frame per detik diukur oleh monitor.
Waktu Bingkai— waktu per frame dalam milidetik (lebih rendah lebih baik).
bagan FPS— 120 sampel terakhir ditampilkan sebagai batangan.
Metrik kerangka
Slot yang Terlihat— berapa banyak slot yang terlihat pada sampel terakhir.
Rata-rata Bisa dilihat— rata-rata pengguliran slot yang terlihat (lebih stabil daripada satu bingkai).
simpul— jumlah titik saat ini yang digunakan untuk rendering.
Batas (px)— batas kerangka saat ini lebar×tinggi dalam piksel.
Rata-rata Batas— batas rata-rata bergulir.
Tekstur Terbesar— laman atlas terbesar (menurut dimensi) yang terdeteksi untuk kerangka.
Memori Tekstur— perkiraan total memori tekstur untuk laman atlas yang dimuat. Jika tersedia, panel juga menampilkan perincian per halaman (nama file, dimensi, dan perkiraan ukuran).
Peningkatan (saat Dioptimalkan tersedia)
Peningkatan Slot— membandingkanRata-rata Bisa dilihatantara Asli vs Dioptimalkan.
Perubahan Memori— membandingkanMemori Teksturantara Asli vs Dioptimalkan.
Penampil: Garis Waktu
penontongaris waktuanimasipemutaranmemandu
ItuGaris waktupanel adalah sequencer animasi yang dapat di-dock di bagian bawah Penampil. Ini memungkinkan Anda mengatur klip animasi di beberapa trek, mengontrol pemutaran, dan melihat pratinjau transisi.
Trek & Klip
Hingga 4 trek animasi— setiap trek dipetakan ke SpinetrackIndexlapisan. Jalur yang lebih tinggi menyatu dengan jalur yang lebih rendah.
Tambahkan animasi— klik+tombol di trek mana pun untuk membuka pemilih animasi (dengan filter pencarian).
Seret & ubah ukuran klip— seret badan klip untuk memindahkannya sepanjang trek; seret tepi kiri/kanan untuk mengubah waktu atau durasi mulai.
Hapus klip— pilih klip dan tekanDeleteatauBackspace.
Deteksi tumpang tindih— klip yang tumpang tindih pada trek yang sama disorot dengan warna merah.
Kontrol Transportasi
Putar / Jeda / Hentikan— kontrol pemutaran standar.
Sebelumnya / Berikutnya— melompat ke awal klip sebelumnya atau berikutnya.
Kecepatan animasi— penggeser dari 0,1× ke 3,0×.
Berhenti otomatis— pemutaran berhenti secara otomatis di akhir garis waktu.
Pencampuran Transisi
Durasi campuran global— mengatur waktu crossfade default antara klip yang berurutan.
Penggantian per transisi— klik gelembung transisi antara dua klip untuk mengatur durasi campuran khusus. Anda dapat mengatur ulang setiap penggantian kembali ke nilai global.
Mencari & Menggosok
Kepala permainan— seret pengendali pada penggaris waktu atau klik penggaris untuk mencari.
Pratinjau waktu kursor— melayang di atas area trek menampilkan waktu di bawah kursor.
Pekerja Web— perhitungan pencarian dan peristiwa dipindahkan ke pekerja latar belakang untuk kelancaran kinerja.
Pemutaran Sadar Fisika
Alihkan fisika di antaranyaMemperbarui(kendala aktif) danTidak ada(dengan disabilitas).
Selama pencarian, waktu kerangka dimajukan untuk menyelesaikan batasan fisika dengan benar.
Dukungan Multi-Kerangka
Pemilih pasangan target— setiap trek dapat menargetkan semua pasangan (🌐 Semua pasangan) atau kerangka tertentu.
Posisi dan skala per kerangka— Input offset dan skala X/Y untuk masing-masing kerangka.
Menggambar pesanan— masukan numerik untuk mengontrol prioritas lapisan render.
Kotak centang multi-pilih untuk semua skin yang ditentukan dalam kerangka yang dimuat.
Lihat Pengaturan
Spasi X/Y— celah antara pasangan kerangka.
Mengimbangi X / Y— pergeseran area pandang global.
Beralih PMA— mode alfa yang telah dikalikan sebelumnya (Spine 3.x) atau atlas mode alfa (Spine 4.x: auto / pma / bleed / none).
Label kerangka— alihkan hamparan label.
Penampil: Perekam
penontonperekamrekamaneksporvideomemandu
ItuPerekammenangkap animasi Spine dari penampil sebagai video, gambar animasi, atau rangkaian gambar.
Mode Perekaman
⚡ Rekam Cepat— pengambilan waktu nyata menggunakanMediaRecorder + captureStream(). Hanya menghasilkan keluaran WebM. Cepat tetapi terbatas pada frame rate real-time.
🎬 Ekspor Kantor Pusat— rendering frame demi frame offline menggunakan WebCodecsVideoEncoder + readPixels(). Mendukung semua format dan menghasilkan keluaran piksel sempurna.
Format Keluaran
Video: WebM, MP4, AVI, MOV
Gambar animasi: GIF, Animasi PNG (APNG)
Urutan gambar: Urutan PNG, Urutan WebP
Codec (Ekspor HQ)
VP8, VP9, H.264 (AVC), AV1, ProRes — codec yang tersedia terdeteksi secara otomatis berdasarkan dukungan browser.
Kualitas
Preset: Rendah (~1 Mbps), Sedang (~3 Mbps), Tinggi (~5 Mbps), Lossless (~20 Mbps).
Kecepatan bit khusus— tentukan dalam kbps untuk kontrol yang baik.
Waktu
FPS: 24, 30, 60, atau khusus (1–120 fps).
Pemanasan— detik untuk penyelesaian fisika/kendala sebelum perekaman dimulai.
Jeda setelahnya— tahan frame terakhir selama durasi tertentu.
Sertakan frame terakhir— beralih.
Area Pandang & Pangkas
Mengaktifkan/menonaktifkan pemotongan— beralih wilayah pangkas.
Pangkas persegi panjang— X, Y, Lebar, Tinggi dalam koordinat dunia Spine.
Jepret untuk memasangkan— pemotongan otomatis ke pasangan kerangka dengan padding yang dapat dikonfigurasi.
Hamparan pangkas interaktif— seret sudut/tepi langsung di area pandang.
Resolusi
Modus skala— penggeser persentase (10%–400%).
Modus tetap— dimensi piksel eksplisit (hingga 4096 piksel).
Resolusi keluaran yang dihitung ditampilkan secara langsung.
Opsi Render
Render tulang— termasuk debug overlay tulang.
Merender gambar— sertakan gambar lampiran.
Render yang lain— kotak pembatas, jalur.
MSAA— Tidak ada / 2× / 4× anti-aliasing.
Menghaluskan— level 0–8 dengan pilihan algoritma (Bicubic / Bilinear).
Latar belakang
Transparan— dinonaktifkan secara otomatis untuk format yang tidak memiliki alfa (misalnya GIF, JPEG).
Warna solid— pemilih warna khusus.
Papan main dam— indikator transparansi visual.
Dukungan saluran alfa: VP9+WebM, AV1+MP4, Urutan PNG, APNG, Urutan WebP.
Hamparan HUD
Beralih: info trek, waktu, nomor bingkai, FPS, label kerangka.
Ukuran huruf— 8–64 piksel, ditambah pemilih warna teks.
Ulangi & Multi-Kerangka
Ulangi hitungan— 1–100 iterasi putaran.
Pasangan sasaran— merekam kerangka tertentu atau seluruhnya.
Modus kerangka— Gabungan (file tunggal) / File terpisah (satu file per kerangka).
Templat Nama File
String templat dengan variabel:{project}, {animation}, {W}, {H}, {fps}. Pratinjau langsung dari nama file yang diselesaikan akan ditampilkan.
Integrasi Garis Waktu
Rentang perekaman muncul sebagai klip putus-putus berwarna merah/oranye di timeline. Seret tepi untuk mengubah ukuran rentang, seret badan untuk mengubah posisinya, atau gunakan tombol pengaturan (⚙️) untuk membuka pengaturan perekaman penuh.
Tab Hasil
hasilmejaoptimasi
ItuHasiltab menunjukkan keluaran pengoptimalan terperinci.
Tabel hasil— tampilan baris per perubahan hasil pengoptimalan JSON (misalnya animasi/tulang/properti/keyframe mana yang diubah atau dihapus).
Perbandingan sprite/Atlas— ketika optimasi tekstur digunakan, bagian ini membandingkan ukuran sprite dan hasil pengepakan.
Tip: gunakan tampilan Hasil untuk menjawab:apa sebenarnya yang berubah?
Tab Statistik
statistikgrafikmetrik
ItuStatistiktab merangkum hasil pengoptimalan sebagai bagan dan metrik gabungan.
Bagan Optimasi— memvisualisasikan dampak pengoptimalan pada kumpulan data (bila JSON pengoptimalan menghasilkan perubahan).
Tabel Metrik— nomor-nomor penting seperti ukuran asli/baru dan persentase pengurangan.
Statistik Pengepakan Tekstur— jika atlas pengemasan ulang digunakan, menampilkan halaman, total/area yang digunakan, efisiensi, dan pengelompokan per halaman.
Gunakan tab ini untuk menjawab:seberapa banyak peningkatan yang kami peroleh secara keseluruhan?
Contoh Saluran Pipa (Video)
videocontohsaluran pipayoutube
Di bawah ini adalah saluran pipa dunia nyata yang lengkap dari playlist resmi YouTube.
Spine2D Eksperimen 1: Optimasi Kurva dengan Algoritma RDP— Demo pengoptimalan 2D Spine dasar: algoritma Ramer–Douglas–Peucker (RDP) membuang data kurva/kunci yang berlebihan untuk mengecilkan JSON. RDP bisa menghapus kunci penting, jadi selalu tinjau animasi dan kecualikan tulang/slot sensitif dengan simpul filter sebelum simpul RDP.Tonton di YouTube
Spine2D Eksperimen 2: Optimasi Kurva dengan Algoritma Kuantisasi— kuantisasi adalah pengoptimal kurva 2D Spine yang paling aman: nilai pembulatan (seringkali hingga 1 desimal) memberikan keuntungan ukuran secara langsung. Contoh: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]. Gunakan node kuantisasi sebagai langkah terakhir sebelum node keluaran untuk mengunci optimasi; video ditampilkan sebelum/sesudah dengan perubahan visual yang hampir tidak terlihat.Tonton di YouTube
Spine2D Eksperimen 3: Membangun Kembali Kurva dengan Algoritma Spline & Refit— Spline bersifat lossless untuk segmen lurus (menghilangkan tombol tengah yang berlebihan), sedangkan Refit bersifat lossy namun kuat: ia membangun kembali bagian kompleks sebagai kurva Bézier tunggal. Algoritme ini ideal setelah pembuatan fisika dan pembersihan melalui node Schneider. Catatan: Perulangan reparasi di atas 100 memerlukan waktu beberapa menit untuk menemukan kurva terbaik. Video ini menunjukkan cara kerja kedua metode dan persentase pengoptimalan yang diperoleh.Tonton di YouTube
Spine2D Eksperimen 4: Menghapus Data Redundan dengan Visibilitas Lampiran & Node Pembersihan— pengoptimalan 2D Spine struktural menggunakan node Visibilitas dan Pembersihan Lampiran. Visibilitas Lampiran menonaktifkan lampiran saat alfa memudar ke 0 dan memulihkannya saat fade‑in, mengurangi panggilan menarik dan menghapus kunci yang berlebihan. Pembersihan menghilangkan redundansi logis: trek warna/alfa yang tidak digunakan, kunci rotasi IK yang dikontrol sepenuhnya oleh batasan, dan kunci batasan jalur. Video ini menunjukkan perbedaan pengoptimalan berbasis logika dengan penyederhanaan kurva.Tonton di YouTube
Spine2D Eksperimen 5: Membangun Saluran Pipa Non-Linear (Memfilter & Menggabungkan Node)— Pengoptimalan 2D Spine non-linier: membagi aliran data dengan filter (Animasi, Tulang, Slot, Parameter, atau Kulit), menjalankan algoritme berbeda pada cabang paralel (misalnya, kompresi agresif untuk tulang tubuh sekaligus menjaga animasi wajah tidak hilang), lalu menggabungkan cabang dengan simpul Gabung menjadi satu kerangka. Alur kerja ini lebih dari sekadar alur Input → Optimalkan → Output dan memungkinkan Anda hanya menargetkan apa yang harus dioptimalkan.Tonton di YouTube
Spine2D Eksperimen 6: Pengemasan Ulang Tekstur & Penskalaan Selektif dengan Node Kustom— pipeline pengoptimalan tekstur tingkat lanjut: node Atlas Unpacker/Repacker memungkinkan Anda membongkar, mengubah ukuran/kompres, dan mengemas ulang atlas dalam satu grafik, lebih cepat dibandingkan alur kerja Spine standar. Dengan menggunakan pipeline non-linier, Anda bisa membagi aset, mempertahankan tekstur karakter pada 100% sambil menurunkan skala lainnya hingga 25%, lalu menggabungkan semuanya kembali menjadi satu atlas bersama. Atlas/Node Asset Penampil menyediakan inspeksi visual dan pemfilteran aset dan atlas di setiap tahap. Hal ini memudahkan untuk menentukan target pengubahan ukuran, memproses secara selektif, dan menggabungkan kembali hasil sebagai templat yang dapat digunakan kembali.Tonton di YouTube
Spine2D Eksperimen 7: Pengubahan Ukuran Skeleton Instan dengan Skala Node— pipeline pengoptimalan 2D Spine ujung ke ujung plus penskalaan kerangka. Node Skala menggantikan alur kerja Spine yang membosankan (ekspor/impor, pengemasan ulang/pembongkaran, jalur perbaikan) dengan satu langkah grafik: tetapkan ukuran target, pratinjau langsung di area pandang, dan ulangi secara real-time. Video ini menyatukan pengoptimalan kurva/kunci, pemrosesan aset, dan pengubahan ukuran kerangka dalam satu saluran yang disederhanakan.Tonton di YouTube
Spine2D Eksperimen 8: Ikhtisar Node Beta Publik— penelusuran setiap node yang tersedia dalam versi beta publik dan cara memoles ulang kebutuhan animator dan pengembang jembatan. Meliputi pembersihan kunci redundan, penyederhanaan Bézier‑to‑linear, pembulatan ukuran, penghapusan lampiran yang tidak terlihat, pembersihan properti yang tidak digunakan, deteksi karakter non-Inggris, dan atlas unpack/filter/scale/repack. Dual Penampil memvalidasi hasil dengan visual berdampingan dan perbandingan FPS. Beta Publik sedang ditayangkanre-polish.com. Tonton di YouTube
Spine2D Eksperimen 9: Memasukkan Batasan Fisika ke Keyframe— Dalam video ini, saya mendemonstrasikan eksperimen terbaru saya dengan memasukkan batasan fisika ke dalam bingkai utama standar. Algoritme pemanggangan yang baru memastikan: Loop Sempurna (tidak ada jitter atau lompatan antara frame awal dan akhir), Ukuran File yang Dioptimalkan (pembersihan kurva otomatis menjaga ukuran JSON mendekati aslinya), dan Kompatibilitas Mundur (kunci yang dipanggang memungkinkan Anda menggunakan animasi fisika Spine 4.2 dalam Spine 4.1 atau bahkan 4.0).Tonton di YouTube
Nodes
Input
Mengimpor file proyek Spine, input khusus JSON, aset demo, dan paket ZIP ke dalam graf.
Tujuan: Ini adalah titik masuk utama untuk sebagian besar alur kerja. Node ini membaca JSON, atlas, dan tekstur lalu menormalkannya menjadi data internal yang dapat diproses node lanjutan.
Mode yang didukung:
1. Proyek lengkap: JSON + atlas + tekstur
2. Hanya JSON: memproses data skeleton/animasi tanpa atlas
3. Paket ZIP: file zip terkemas yang berisi proyek lengkap
4. Aset demo: data contoh bawaan untuk pengujian cepat
Output utama:
- **payload_out**: data yang dinormalisasi untuk node optimasi
- **original_json_out**: JSON sumber untuk perbandingan atau rekonstruksi
- **atlas_project_out**: proyek atlas yang sudah di-parse saat tekstur disediakan
Picture Input
Menambahkan gambar PNG/JPEG mandiri ke viewport agar Anda dapat membuat pratinjau dan shot presentasi yang lebih rapi.
Tujuan: Gunakan node ini untuk menempatkan gambar langsung ke viewport sebagai lapisan presentasi atau alat bantu visual. Node ini berguna saat Anda ingin menghias adegan, menambahkan grafis pendukung, dan membuat pratinjau proyek terlihat lebih matang sebelum merekam video atau demo.
Alur kerja: Muat satu gambar, lalu gunakan alat viewport untuk mengubah skalanya, memindahkannya, dan menyesuaikan z-index-nya agar posisinya pas di dalam komposisi. Ini memudahkan pembuatan shot showcase yang menarik tanpa menyentuh data utama proyek Spine.
Node ini bersifat mandiri dan tidak mengekspos soket graf.
Output
Mengumpulkan hasil akhir dan memungkinkan Anda mengunduh data yang dioptimalkan sebagai file terpisah, kumpulan file yang dikelompokkan, atau arsip.
Tujuan: Bertindak sebagai pusat ekspor untuk JSON yang dioptimalkan, data atlas, tekstur, dan sprite. Node ini dapat merakit hasil dari satu set JSON/atlas/tekstur, dari beberapa set file, atau hanya dari sprite saat Anda menginginkan output gambar tanpa membangun ulang proyek Spine penuh.
Opsi ekspor:
- Unduh file satu per satu atau sebagai satu arsip
- Unduh hasil terkemas atau arsip dengan file yang tidak dikemas
- Ekspor JSON dalam bentuk ringkas atau bentuk pretty-print yang mudah dibaca
- Ekspor data proyek Spine lengkap atau hanya hasil sprite/gambar
Alur chaining: OutputNode tidak harus menjadi ujung mutlak graf. Anda dapat meneruskan outputnya ke tahap pipeline lain dan menjalankan file yang sama melalui pass optimasi tambahan. Dalam praktiknya, optimasi key dan curve diuji hingga 3 iterasi berturut-turut.
Output utama:
- **reconstructed_json_out**: JSON Spine yang dibangun ulang
- **original_json_passthrough_out**: passthrough JSON asli
- **payload_out**: payload untuk chaining lanjutan
- **changes**: perubahan optimasi yang terkumpul
- **atlas_assets**: sumber daya atlas yang siap diekspor
RDP
Menyederhanakan kurva animasi menggunakan algoritma Ramer-Douglas-Peucker (RDP).
Tujuan: Mengurangi jumlah keyframe dalam segmen animasi linier atau hampir linier dengan menghilangkan titik-titik yang terletak pada garis lurus di antara dua titik lainnya.
Aturan Emas: Dinonaktifkan secara default. Ini melindungi kurva dengan bentuk signifikan (luas/lengkungan) agar tidak rata menjadi linier. Nonaktifkan hanya untuk kompresi yang lebih agresif setelah tinjauan visual.
Kunci soket: payload_in, payload_out, perubahan
Spline
Menyesuaikan kurva spline halus ke bingkai utama animasi, mengurangi titik perantara yang tidak perlu.
Tujuan: Pemasangan kurva yang halus dengan tetap menjaga kualitas visual.
Kunci soket: payload_in, payload_out, perubahan
Refit
Memperkirakan rangkaian bingkai utama yang padat dengan kurva Bezier yang lebih sedikit untuk mengurangi ukuran.
Tujuan: Menyesuaikan lebih sedikit kurva namun tetap dalam toleransi.
Kunci soket: payload_in, payload_out, perubahan
Quantizer
Mengurangi presisi nilai numerik dalam bingkai utama dan kurva.
Tujuan: Cara sederhana namun efektif untuk mengurangi ukuran file dengan membulatkan angka ke sejumlah tempat desimal tertentu.
Penggunaan: Dapat diterapkan ke hampir semua data animasi. Menjadi lebih efektif dengan jumlah bingkai utama yang lebih tinggi.
Perhatian: Kuantisasi yang terlalu agresif (presisi rendah) dapat menyebabkan jitter atau artefak visual dalam animasi.
Kunci soket: payload_in, payload_out, perubahan
Cleanup
Melakukan berbagai tugas pembersihan untuk menghapus data animasi yang berlebihan atau tidak perlu.
Tujuan: Alat khusus untuk menghapus jenis data berlebihan tertentu yang mungkin terlewatkan oleh pengoptimal lain.
Penggunaan: Hubungkan payload Anda ke 'payload_in' dan ambil hasilnya dari 'payload_out'. Jika Anda menginginkan laporan per perubahan, gunakan juga 'perubahan'.
Kunci soket:
- Masukan: payload_in
- Output: payload_out, berubah
Pembersihan yang didukung saat ini:
1. **Hapus Trek Warna/Alfa yang Tidak Digunakan**: Menghapus garis waktu warna/alfa untuk slot yang tidak pernah terlihat selama animasi.
2. **Hapus Rotasi IK yang Berlebihan**: Menghapus bingkai utama rotasi dari tulang yang sepenuhnya dikontrol oleh batasan IK dengan campuran 100%.
3. **Hapus Kunci Batasan Jalur**: Menghapus bingkai utama putar/terjemahkan dari tulang yang sepenuhnya dikontrol oleh batasan jalur (nilai campuran 100%).
4. **Sanitasi Karakter Non-Inggris**: Mengganti karakter non-Inggris pada nama/pengidentifikasi untuk menghindari masalah pada alat hilir.
Scale
Menskalakan semua nilai numerik dalam bingkai utama animasi berdasarkan faktor tertentu.
Tujuan: Menyeragamkan skala data animasi, berguna untuk mengubah ukuran kerangka secara proporsional atau menyesuaikan intensitas animasi.
Penggunaan: Hubungkan **payload_in** dan ambil hasilnya dari **payload_out**.
Kunci soket: payload_in, payload_out
Schneider
Menyesuaikan kurva Bezier yang halus ke bingkai utama animasi menggunakan algoritma pemasangan kurva Schneider.
Tujuan: Pemasangan kurva tingkat lanjut yang menghasilkan kurva Bezier yang tampak alami dari rangkaian bingkai utama yang padat.
Ketersediaan: **Node khusus plus**.
Cara kerjanya: Algoritme Schneider menganalisis posisi keyframe dan garis singgung untuk menghasilkan titik kontrol Bezier optimal yang mendekati gerakan aslinya.
Parameter:
- **Toleransi Kesalahan**: Penyimpangan maksimum yang diperbolehkan dari bingkai utama asli. Lebih rendah = lebih akurat, lebih tinggi = kurva lebih halus.
- **Sudut Sudut**: Sudut ambang (derajat) untuk membagi kurva menjadi beberapa segmen.
Terbaik untuk:
- Animasi yang digambar tangan atau diimpor dengan banyak bingkai utama
- Mengubah interpolasi linier menjadi kurva Bezier yang halus
- Mengurangi jumlah keyframe dengan tetap menjaga kualitas kurva
Catatan: Lebih intensif secara komputasi dibandingkan algoritme yang lebih sederhana seperti RDP, namun menghasilkan kualitas kurva yang unggul.
Kunci soket: payload_in, payload_out, perubahan
Physics Constraint Bake
Memasukkan Spine gerakan PhysicsConstraint ke dalam bingkai utama putar/terjemahkan tulang dan hapus garis waktu fisika.
Tujuan: Mengubah simulasi fisika runtime menjadi bingkai utama eksplisit sehingga animasi bersifat deterministik dan dapat diedit tanpa batasan fisika. Setelah dipanggang, batasan fisika dan garis waktu fisika dihapus dari payload.
Ketersediaan: **Node khusus plus**.
Masukan/Keluaran:
- **payload_in** → **payload_out** (dipanggang)
- **perubahan** (daftar perubahan opsional)
Kontrol:
- **Sampel FPS**: Simulasi laju pengambilan sampel untuk pemanggangan.
- **Rotasi Panggang**: Menulis tombol rotasi yang dipanggang.
- **Terjemahan Panggang**: Tulis kunci terjemahan yang dipanggang.
- **Terjemahan Panggang (Anak-anak)**: Terapkan terjemahan panggang ke tulang anak yang mengandalkan gerakan fisika.
Catatan:
- Memerlukan Spine JSON asli untuk merekonstruksi data simulasi.
- Gunakan saat Anda ingin menghilangkan batasan fisika tetapi tetap mempertahankan gerakan.
Attachment Visibility
Mengoptimalkan rendering dengan mengatur lampiran slot ke null ketika alpha-nya nol.
Tujuan: Mencegah mesin game memproses atau merender lampiran yang tidak terlihat.
Penggunaan: Memproses **payload_in**, menghasilkan output **payload_out** yang dioptimalkan, dan secara opsional melaporkan **perubahan**.
Kunci soket: payload_in, payload_out, perubahan
Payload Merger
Menggabungkan kembali beberapa payload animasi yang diproses menjadi satu payload terpadu.
Tujuan: Penting untuk alur pemrosesan paralel di mana animasi atau kelompok tulang yang berbeda dioptimalkan secara terpisah dan perlu digabungkan kembali.
Masukan:
- **basis**: Muatan utama (struktur kerangka)
- **override**: Satu atau lebih muatan yang lintasannya menggantikan lintasan dasar
Keluaran:
- **merged_out**: Gabungan muatan
Kunci soket: base, override, merge_out
Animation Viewer
Alat visual untuk memeriksa dan membandingkan kurva animasi sebelum dan sesudah pengoptimalan.
Tujuan: Memberikan representasi grafis dari bingkai utama dan kurva untuk trek yang dipilih.
Penggunaan: Hubungkan **before_in** dan **after_in** untuk melapisi yang asli vs yang dioptimalkan. Secara opsional, sambungkan **perubahan** untuk menyorot trek yang terkena dampak.
Kunci soket: sebelum_masuk, setelah_masuk, berubah
Animation Filter
Memfilter trek animasi berdasarkan nama animasi (misalnya, 'run', 'idle').
Tujuan: Berguna untuk menerapkan strategi pengoptimalan yang berbeda pada animasi yang berbeda.
Penggunaan: Memfilter **payload_in** ke dalam **payload_out** dan menampilkan **animation_list** untuk pemilihan UI.
Kunci soket: payload_in, payload_out, animation_list
Asset Filter
Memfilter aset atlas berdasarkan nama, bekerja dalam dua mode: sebelum unpacker (memfilter atlas teks) atau setelah unpacker (memfilter sprite).
Tujuan: Mengontrol aset mana yang disertakan dalam alur kerja - baik aset mana yang akan dibongkar dari atlas, atau sprite mana yang sudah dibongkar untuk disertakan dalam pengemasan ulang.
Masukan/Keluaran:
- Mode Atlas: **atlas_in** → **atlas_out**
- Mode sprite: **sprite_in** → **sprite_out**
Kunci soket: atlas_in, atlas_out, sprites_in, sprites_out
Bone Filter
Memfilter trek animasi tulang berdasarkan nama tulang.
Tujuan: Memungkinkan penargetan atau pengecualian tulang tertentu dari proses pengoptimalan.
Penggunaan: Memfilter **payload_in** menjadi **payload_out**.
Kunci soket: payload_in, payload_out
Skin Filter
Memfilter animasi dan data aset berdasarkan nama skin.
Tujuan: Memproses hanya skin tertentu dari proyek Spine multi-skin.
Penggunaan: Memfilter **payload_in** menjadi **payload_out**.
Kunci soket: payload_in, payload_out
Slot Filter
Memfilter trek animasi slot berdasarkan nama slot.
Tujuan: Berguna untuk menargetkan atau mengecualikan slot tertentu yang mungkin memiliki persyaratan waktu atau visibilitas khusus.
Penggunaan: Memfilter **payload_in** menjadi **payload_out**.
Kunci soket: payload_in, payload_out
Parameter Filter
Memfilter trek animasi berdasarkan jenis propertinya (misalnya rotasi, skala, warna).
Tujuan: Memungkinkan penerapan pengoptimalan berikutnya hanya pada jenis data animasi tertentu.
Penggunaan: Memfilter **payload_in** menjadi **payload_out**.
Kunci soket: payload_in, payload_out
Atlas Unpacker
Mengekstrak sprite individual dari tekstur Spine atlas.
Tujuan: Memecah file atlas menjadi sprite komponennya, sehingga memungkinkan analisis atau pengemasan ulang individual.
Penggunaan: Hubungkan **atlas_project** dari InputNode ke **atlas_project** (atau **atlas_project_in** yang lama) pada node ini. Secara opsional, sambungkan **skeleton_json_in** (dari **original_json** InputNode) untuk mengaktifkan pemotongan mesh-aware (memotong sprite ke batas lambung mesh, bukan batas persegi panjang, yang secara signifikan dapat mengurangi memori tekstur untuk lampiran mesh).
Keluaran:
- **sprite_out**: Array sprite terstandarisasi (untuk viewer/repacker)
- **sprite_data_out**: Gambar/metadata sprite yang diekstraksi (paket terstruktur)
- **atlas_out**: passthrough proyek Atlas
Kunci soket: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out
Atlas Repacker
Mengemas ulang masing-masing sprite menjadi satu atau lebih atlas tekstur baru yang dioptimalkan.
Tujuan: Mengoptimalkan memori tekstur dan berpotensi mengurangi panggilan penarikan dengan membuat sprite sheet yang efisien.
Penggunaan: Menerima sprite melalui **sprites_data_in** (paket sprite terstruktur) atau melalui **sprites_out** (array sprite standar). Jika diperlukan untuk penanganan alfa/pengemasan poligon, berikan kerangka asli melalui **original_json**. Menghasilkan atlas yang dikemas sebagai **atlas_out**.
Kunci soket: sprites_data_in, sprites_out, original_json, atlas_out
Atlas Viewer
Alat visualisasi dan analisis atlas yang ringan untuk memeriksa struktur atlas sebelum membongkar.
Tujuan: Menyediakan cara cepat untuk melihat pratinjau halaman dan region atlas tanpa melakukan operasi pembongkaran yang berat. Membantu memvalidasi struktur atlas dan mengidentifikasi region yang tidak digunakan.
Penggunaan: Hubungkan satu proyek atlas ke **atlas_project** (atau **atlas_in** / **atlas** lama), atau periksa sekumpulan proyek atlas melalui **atlas_projects**. Secara opsional, sambungkan kerangka JSON ke **json** untuk analisis penggunaan.
Kunci soket: atlas_project, atlas_projects, atlas_in, atlas, json
Atlas Merger
Menggabungkan beberapa sumber atlas menjadi satu atlas terpadu.
Tujuan: Menggabungkan beberapa proyek atlas menjadi satu.
Masukan:
- **atlas_inputs**: Array multi-input dari proyek atlas
Keluaran:
- **atlas_out**: Proyek atlas digabungkan
- **merged_out**: Output gabungan lama
- **merged_atlas_out**: Output gabungan lama
Kunci soket: atlas_inputs, atlas_out, merge_out, merge_atlas_out
Saluran pipa yang umum:
```
InputA → Unpacker → Repacker ─┐
├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Sebelum Repacker, datanya adalah sprite individual; setelah Repacker, proyek ini menjadi proyek atlas. Atlas Penggabungan menggabungkan proyek atlas, lalu pass Unpacker → Repacker final akan mengemas ulang semuanya menjadi satu atlas yang terpadu.
Asset Viewer
Menampilkan sprite individual dari atlas yang belum dibongkar.
Tujuan: Alat debugging visual untuk manipulasi atlas.
Penggunaan: Menerima sprite melalui **sprites_out** (standar) atau **sprites_in** / **sprites_data** lama.
Kunci soket: sprites_out, sprites_in, sprites_data