Skip to main content
Go to Editor

Wiki

Panduan ini akan membantu Anda memulai dengan cepat menggunakan Pengoptimal JSON. Memuat Proyek: Gunakan InputNode untuk memuat Anda .json , .atlas , Dan .png f

alur kerjaanimasiberlangganancontohdataeksporfpsgaris waktugrafikhasilingatanjeniskoneksikonsepkontrolmejamemandumetrikoptimasipemulapemutaranpenetapan hargapenontonperekampertunjukanpluspremirekamanrugisaluran pipasoketstatistiktanpa kerugianuivideoyoutube

Memulai: Alur Kerja Dasar

pemulaalur kerjamemandu

Panduan ini akan membantu Anda memulai dengan cepat menggunakan Pengoptimal JSON. Memuat Proyek: Gunakan InputNode untuk memuat Anda .json , .atlas , Dan .png file. Pilih preset (Mode plus): Dalam mode Plus, gunakan p...

Read article

Jenis Soket & Aliran Data

soketjenisdatakoneksi

Artikel ini menjelaskan tipe data yang digunakan oleh soket dalam grafik node dan apa yang dapat dihubungkan dimana. Jenis soket Spine Muatan — representasi proyek Spine yang ramah proses dan digunakan oleh sebagian b...

Read article

Paket Berlangganan & Fitur Premium

berlanggananpremipluspenetapan harga

re-polish menawarkan dua tingkat langganan untuk memenuhi kebutuhan berbeda. Paket Gratis ✓ Dasar Node Graph ✓ JSON Penampil ✓ Garis waktu dengan banyak trek dan pencampuran animasi yang dapat disesuaikan • optimasi t...

Read article

Konsep Inti: Lossy vs. Lossless

konseprugitanpa kerugianpemula

Semua metode optimasi dibagi menjadi dua jenis: Tanpa rugi: Metode ini hanya menghapus data yang berlebihan... Contoh: SplineOptimizationNode , CleanupNode . Rugi: Metode ini menyederhanakan kurva animasi... Contoh: R...

Read article

Bagaimana Mengukur Efektivitas

memandumetrikstatistik

Untuk memahami seberapa efektif pengoptimalan Anda, perhatikan metrik berikut: Ukuran Berkas: Ukuran akhir dari .json file adalah tujuan utama optimasi. Jumlah Bingkai Utama: Di tab "Statistik", Anda akan menemukan ta...

Read article

Penampil: Panel Kontrol

penontonkontrolui

Itu Penonton tab overlay a Kontrol panel di atas kanvas. Ini dibagi menjadi tiga kelompok: Kontrol Animasi Animasi — memilih animasi Spine mana yang diputar. Kulit — memilih Skin mana yang diterapkan. Kecepatan — peng...

Read article

Penampil: Panel Kinerja

pertunjukanfpsingatanui

Itu Pertunjukan panel 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...

Read article

Penampil: Garis Waktu

penontongaris waktuanimasipemutaranmemandu

Itu Garis waktu panel 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 & Kl...

Read article

Penampil: Perekam

penontonperekamrekamaneksporvideomemandu

Itu Perekam menangkap animasi Spine dari penampil sebagai video, gambar animasi, atau rangkaian gambar. Mode Perekaman ⚡ Rekam Cepat — pengambilan waktu nyata menggunakan MediaRecorder + captureStream() . Hanya mengha...

Read article

Tab Hasil

hasilmejaoptimasi

Itu Hasil tab menunjukkan keluaran pengoptimalan terperinci. Tabel hasil — tampilan baris per perubahan hasil pengoptimalan JSON (misalnya animasi/tulang/properti/keyframe mana yang diubah atau dihapus). Perbandingan...

Read article

Tab Statistik

statistikgrafikmetrik

Itu Statistik tab merangkum hasil pengoptimalan sebagai bagan dan metrik gabungan. Bagan Optimasi — memvisualisasikan dampak pengoptimalan pada kumpulan data (bila JSON pengoptimalan menghasilkan perubahan). Tabel Met...

Read article

Contoh Saluran Pipa (Video)

videocontohsaluran pipayoutube

Di bawah ini adalah saluran pipa dunia nyata yang lengkap dari playlist resmi YouTube. Buka daftar putar lengkap Contoh Spine2D Eksperimen 1: Optimasi Kurva dengan Algoritma RDP — Demo pengoptimalan 2D Spine dasar: al...

Read article

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

Video To Png Sequence

Ubah klip video menjadi urutan frame PNG untuk alur kerja Spine.

Ini adalah alat input gratis di menu Input untuk alur kerja produksi. Fitur ini mendukung chroma key untuk green screen dan pembersihan matte gaya unpremultiply untuk latar belakang hitam. Hasil keluar melalui payload_out dan atlas_out.

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.

Version: Format versi Spine JSON untuk skeleton stub yang dihasilkan.
Blending: Mode blending untuk attachment yang dihasilkan (normal, aditif, multiplikasi, layar).

Psd To Skeletons

Memuat file PSD/PSB berlapis dan menghasilkan skeleton Spine yang saling terhubung sambil mempertahankan tata letak scene Photoshop untuk preview yang akurat.

Tujuan: Gunakan node ini ketika scene sudah disusun di Photoshop dan Anda ingin mengubah tumpukan layer tersebut menjadi sekumpulan skeleton Spine yang saling terhubung di dalam viewer. Setiap layer PSD yang terlihat menjadi skeleton bergaya gambar dengan posisi berdasarkan koordinat PSD, sehingga proses menyusun preview dan menempatkan objek secara presisi menjadi jauh lebih mudah.

Alur kerja di viewer: Setelah hasil dibuat, Anda tetap bisa mengubah draw order di viewer dan menempatkan skeleton lain di antara layer PSD yang diimpor, sehingga karakter atau properti Spine tambahan dapat masuk ke dalam komposisi Photoshop.

Ketersediaan: Node gratis. Node ini bersifat mandiri dan tidak mengekspos socket graph.

Version: Format versi Spine JSON yang digunakan untuk skeleton layer yang dihasilkan.
Blending: Mode blending yang digunakan untuk attachment yang dihasilkan.
Load PSD: Membuka pemilih PSD/PSB dan menghasilkan skeleton layer terhubung dari file yang dipilih.
File Info: Ringkasan read-only dari file PSD/PSB yang sedang dimuat.
Layer Count: Jumlah read-only layer terlihat yang akan diubah menjadi skeleton terhubung.
Preflight: Laporan read-only tentang masalah nama layer yang terdeteksi sebelum proses generate.

Project Input

Memuat folder atau arsip proyek Spine ke graph dan mengekspos ProjectPayload melalui soket project_out untuk node lanjutan yang mendukung proyek.

Tujuan: Titik masuk untuk workflow berbasis proyek. Memindai folder atau arsip proyek Spine, membangun ProjectPayload, dan menjaga metadata yang di-cache tetap siap untuk node lanjutan seperti Project Viewer, filter, Static Bake, dan Deduplicator.

Kontrol:
- **Load Folder**: Membuka pemilih folder sistem melalui File System Access API, memindai direktori yang dipilih, memperbarui ringkasan, menyimpan metadata ke cache, dan memulai file watcher agar perubahan berikutnya bisa dipindai ulang.
- **Browse (Fallback)**: Menggunakan input **webkitdirectory** tersembunyi untuk browser tanpa **showDirectoryPicker()**. Mode ini memuat proyek, tetapi tanpa handle direktori persisten, sehingga live watching dan rescan yang andal tidak tersedia.
- **Load Archive**: Memuat arsip **.zip** atau **.spine** sebagai pohon proyek virtual. Proyek berbasis arsip tidak menyimpan handle direktori, jadi **Rescan** memang tidak tersedia.
- **Rescan**: Memindai ulang folder yang sebelumnya dimuat saat handle direktori tersedia. Mode ini memeriksa ulang izin baca sebelum pemindaian. Proyek yang dimuat lewat fallback browse atau mode arsip biasanya melaporkan bahwa tidak ada direktori yang dimuat.
- **Clear Project**: Menghentikan pemantauan file dan menghapus payload saat ini, ringkasan, execution cache, dan metadata payload yang di-cache.
- **Reset to Defaults**: Hanya mereset kontrol node generik. Ini **tidak** membongkar proyek saat ini dan bukan pengganti **Clear Project**.
- **Drop folder or .zip here**: Titik masuk drag-and-drop yang menerima folder dan arsip lalu meneruskannya ke pipeline pemuatan yang sama.

Output:
- **project_out**: ProjectPayload dengan pohon hasil pemindaian, daftar file datar, total ukuran, dan rincian tipe untuk node lanjutan yang memahami proyek.
- **stats**: Output diagnostik khusus DEV.

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

Epsilon: Deviasi maksimum dari kurva asli. Nilai lebih tinggi menghapus lebih banyak keyframe tetapi mungkin kehilangan detail kurva.
Steep: Ambang sensitivitas kelengkungan. Melindungi kurva kompleks dari diratakan menjadi linier.
Round Mode: Mode pembulatan untuk nilai yang dioptimalkan: tanpa (pertahankan asli), persepuluhan (1 desimal), bilangan bulat.
Golden Rule: Saat diaktifkan, melindungi kurva dengan bentuk/area signifikan dari penyederhanaan oleh RDP.
S Run Length: Jumlah minimum kurva S standar Spine yang berurutan sebelum perataan berbasis template ini aktif. Setel ke 0 untuk menonaktifkan fitur ini.
S Deviation: Deviasi ternormalisasi yang diizinkan dari template kurva S standar Spine, dalam permil (0-300). Nilai yang lebih rendah membutuhkan kecocokan yang lebih dekat; nilai yang lebih tinggi meratakan lebih banyak rangkaian yang mendekati template.

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

Max Error: Kesalahan aproksimasi maksimum yang diizinkan untuk fitting spline. Lebih rendah = lebih presisi ke aslinya.
Min Group Size: Jumlah minimum keyframe linier berurutan yang diperlukan untuk membentuk grup yang dapat dihapus.

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

Error Tolerance: Deviasi maksimum yang diizinkan antara kurva asli dan Bézier yang di-fit. Lebih rendah = kecocokan lebih akurat.
Max Iterations: Jumlah iterasi optimasi untuk fitting kurva. Lebih banyak iterasi = fit lebih baik tetapi lebih lambat.

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

Precision: Jumlah tempat desimal untuk nilai keyframe. Kurang = file lebih kecil tetapi akurasi lebih rendah.

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.

Remove Unused Color Tracks: Hapus komponen warna/alpha yang tidak pernah berubah dari nilai default.
Remove Redundant IKRotation: Hapus keyframe rotasi tulang yang sepenuhnya dikendalikan oleh constraint IK.
Remove Redundant Path Constraint Keys: Hapus keyframe constraint path yang menduplikasi nilai setup.
Sanitize Non English Characters: Ganti karakter non-ASCII dalam nama tulang/slot dengan padanan yang aman.

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

Scale Factor: Pengali skala untuk skeleton (mis. 0.5 = setengah ukuran).
Scale Bones: Skalakan posisi dan ukuran tulang.
Scale Attachments: Skalakan posisi dan ukuran attachment.
Scale Animations: Skalakan keyframe animasi.
Scale Constraints: Skalakan parameter constraint.
Scale Path: Skalakan data path.

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

Error Tolerance: Deviasi maksimum yang diizinkan antara kurva asli dan yang di-fit.
Min Segment Size: Jumlah minimum keyframe dalam segmen untuk pemrosesan.

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.

Sample fps: Laju sampling untuk baking fisika (frame per detik).
Bake rotation: Bake rotasi dari constraint fisika.
Bake translation: Bake translasi dari constraint fisika.
Bake translation descendants: Bake translasi untuk tulang keturunan.

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

Alpha Threshold: Ambang alpha untuk deteksi visibilitas attachment.
Auto Restore: Pulihkan visibilitas secara otomatis setelah pemrosesan.

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

Warn conflicts: Tampilkan peringatan pada konflik penggabungan payload.

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

Show changed: Tampilkan hanya animasi yang berubah.
Animation: Pilihan animasi untuk dilihat.
Target: Tulang/slot target untuk dilihat.
Property: Properti untuk ditampilkan (rotasi, translasi, dll.).

Project Viewer

Displays a Spine project from the project_in socket for inspection and preview without mutating the incoming data.

Deduplicator

Deduplicates atlas projects by consuming project_inputs and returning payloads, atlas_projects, original_jsons, and shared_atlas_out for canonicalized downstream workflows.

The Deduplicator node scans all atlas regions for visually identical or near-identical sprites. It merges duplicates by choosing a canonical representative and remapping references. Several thresholds control detection sensitivity for different sprite types (glow, solid, alpha). Optionally constrains the output canonical atlas dimensions. A verification pass ensures the deduplicated result is visually equivalent to the original within the specified RMSE tolerance.

Repack mode: Mode repack setelah deduplikasi.
Glow threshold: Ambang untuk mendeteksi sprite efek glow.
Solid threshold: Ambang untuk mendeteksi sprite solid.
Min sprite area: Area sprite minimum untuk analisis (piksel²).
Alpha hash threshold: Ambang hash alpha untuk perbandingan.
Verification threshold: Ambang verifikasi duplikat.
Color rmse threshold: Ambang RMSE warna untuk deteksi duplikat.
Constrain canonical atlas size: Batasi ukuran atlas kanonis.
Max canonical atlas width: Lebar maksimum atlas kanonis.
Max canonical atlas height: Tinggi maksimum atlas kanonis.

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

Rotation: Sertakan/kecualikan track rotasi dari pemrosesan.
Translation: Sertakan/kecualikan track translasi dari pemrosesan.
Scale: Sertakan/kecualikan track skala dari pemrosesan.
Shear: Sertakan/kecualikan track geser dari pemrosesan.
Color: Sertakan/kecualikan track warna dari pemrosesan.
Attachment: Sertakan/kecualikan track attachment dari pemrosesan.
Deform: Sertakan/kecualikan track deformasi (mesh) dari pemrosesan.

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

Min Page Width: Lebar minimum halaman atlas dalam piksel.
Min Page Height: Tinggi minimum halaman atlas dalam piksel.
Max Page Width: Lebar maksimum halaman atlas dalam piksel.
Max Page Height: Tinggi maksimum halaman atlas dalam piksel.
Padding X: Padding horizontal antara sprite dalam piksel.
Padding Y: Padding vertikal antara sprite dalam piksel.
Edge Padding: Padding dari tepi halaman atlas.
Duplicate Padding: Duplikasi piksel tepi untuk mencegah artefak filtering.
Alpha Mode: Mode alpha: PMA (premultiplied alpha) atau langsung.
Alpha Threshold: Ambang alpha untuk memotong piksel tak terlihat.
Strip Whitespace X: Potong piksel kosong secara horizontal.
Strip Whitespace Y: Potong piksel kosong secara vertikal.
Color Bleed Radius: Radius bleed warna untuk mencegah sambungan saat filtering.
Scale: Faktor skala yang diterapkan ke semua sprite sebelum packing.
Power Of Two: Bulatkan dimensi halaman ke pangkat dua.
Divisible By4: Bulatkan dimensi halaman ke kelipatan 4 (untuk kompresi tekstur).
Square: Paksa halaman menjadi persegi.
Allow Rotation: Izinkan rotasi 90° sprite untuk packing yang lebih baik.
Packer Type: Algoritma packing: MaxRects atau Shelf.

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

Page Info: Dimensi dan informasi halaman atlas.
Stats: Statistik penggunaan ruang dan jumlah sprite.

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

Asset select: Pilihan aset untuk dilihat.
Pixel stats: Tampilkan statistik piksel untuk aset.