Skip to main content
Go to Editor

विकी

यह मार्गदर्शिका आपको JSON Optimizer के साथ जल्दी शुरुआत करने में मदद करेगी। प्रोजेक्ट लोड करें: अपने .json , .atlas , और .png फ़ाइलों को लोड करने के लिए InputNo

YouTubeanimationexportguideplaybackrecorderrecordingtimelinevideoviewerअनुकूलनअवधारणाएंआंकड़ेउदाहरणएफपीएसकंट्रोल्सकनेक्शनगाइडचार्टडेटातालिकापरफ़ॉर्मेंसपरिणामपाइपलाइन्सप्रकारप्रीमियमप्लसमूल्यमेट्रिक्समेमोरीयूआईलॉसलेसलॉसीवर्कफ़्लोवीडियोव्यूअरशुरुआतीसदस्यतासॉकेट

शुरुआत करना: बुनियादी वर्कफ़्लो

शुरुआतीवर्कफ़्लोगाइड

यह मार्गदर्शिका आपको JSON Optimizer के साथ जल्दी शुरुआत करने में मदद करेगी। प्रोजेक्ट लोड करें: अपने .json , .atlas , और .png फ़ाइलों को लोड करने के लिए InputNode का उपयोग करें। प्रिसेट चुनें (Plus मोड): Plus मोड में,...

Read article

सॉकेट प्रकार और डेटा फ़्लो

सॉकेटप्रकारडेटाकनेक्शन

यह लेख नोड ग्राफ़ में सॉकेट्स द्वारा उपयोग किए जाने वाले डेटा प्रकारों और क्या कहाँ कनेक्ट किया जा सकता है, इसे समझाता है। सॉकेट प्रकार Spine Payload — रनटाइम के लिए उपयुक्त Spine प्रोजेक्ट का प्रतिनिधित्व, जो अधिकांश...

Read article

सदस्यता योजनाएँ और प्रीमियम फीचर्स

सदस्यताप्रीमियमप्लसमूल्य

re-polish अलग-अलग जरूरतों के लिए दो सब्सक्रिप्शन टियर प्रदान करता है. Free प्लान ✓ बुनियादी नोड ग्राफ ✓ JSON व्यूअर ✓ कई ट्रैक्स के साथ एनिमेशन प्लेबैक के लिए टाइमलाइन और एनिमेशन के बीच कस्टम मिक्स ✓ सीमित अनुकूलन ✓ S...

Read article

मूल अवधारणाएं: हानिपूर्ण बनाम हानिरहित

अवधारणाएंलॉसीलॉसलेसशुरुआती

सभी अनुकूलन विधियाँ दो प्रकारों में बाँटी जाती हैं: हानिरहित: ये विधियाँ केवल अतिरिक्त/रिडंडेंट डेटा हटाती हैं... उदाहरण: Spline अनुकूलन नोड , CleanupNode . हानिपूर्ण: ये विधियाँ एनीमेशन कर्व्स को सरल बनाती हैं... उदा...

Read article

दक्षता कैसे मापें

गाइडमेट्रिक्सआंकड़े

अपने अनुकूलन की प्रभावशीलता को समझने के लिए, निम्नलिखित मेट्रिक्स पर ध्यान दें: फ़ाइल आकार: .json फ़ाइल का अंतिम आकार अनुकूलन का मुख्य लक्ष्य है। कीफ़्रेम की संख्या: "आंकड़े" टैब में, आपको तालिकाएं और ग्राफ़ मिलेंगे ज...

Read article

Viewer: कंट्रोल्स पैनल

व्यूअरकंट्रोल्सयूआई

दृश्य टैब कैनवस के ऊपर नियंत्रण पैनल दिखाता है। यह तीन समूहों में बंटा है: एनीमेशन नियंत्रण एनीमेशन — कौन-सा Spine एनीमेशन चल रहा है, चुनता है। स्किन — कौन-सी स्किन लागू है, चुनता है। गति — प्लेबैक स्पीड मल्टीप्लायर (...

Read article

Viewer: परफ़ॉर्मेंस पैनल

परफ़ॉर्मेंसएफपीएसमेमोरीयूआई

Performance पैनल वर्तमान में चल रहे skeleton(s) के लिए रियल-टाइम runtime मेट्रिक्स दिखाता है। रियल-टाइम FPS — मॉनिटर द्वारा मापा गया frames per second। Frame Time — प्रति फ्रेम समय (मिलीसेकंड में; कम बेहतर)। FPS chart...

Read article

Viewer: टाइमलाइन

viewertimelineanimationplaybackguide

टाइमलाइन पैनल Viewer के नीचे एक डॉकेबल एनिमेशन सीक्वेंसर है। यह आपको कई ट्रैक्स पर एनिमेशन क्लिप्स व्यवस्थित करने, प्लेबैक नियंत्रित करने और ट्रांजिशन का पूर्वावलोकन करने देता है। ट्रैक्स और क्लिप्स 4 एनिमेशन ट्रैक तक...

Read article

Viewer: रिकॉर्डर

viewerrecorderrecordingexportvideoguide

रिकॉर्डर Viewer से Spine एनिमेशन को वीडियो, एनिमेटेड इमेज या इमेज सीक्वेंस के रूप में कैप्चर करता है। रिकॉर्डिंग मोड ⚡ Quick Record — MediaRecorder + captureStream() का उपयोग करके रियल-टाइम कैप्चर। केवल WebM आउटपुट। त...

Read article

परिणाम टैब

परिणामतालिकाअनुकूलन

परिणाम टैब विस्तृत अनुकूलन आउटपुट दिखाता है। परिणाम तालिका — JSON अनुकूलन परिणामों का row-per-change व्यू (जैसे कौन-सा एनीमेशन/बोन/प्रॉपर्टी/कीफ़्रेम बदला या हटाया गया)। Sprite/Atlas तुलना — जब टेक्सचर अनुकूलन उपयोग ह...

Read article

आंकड़े टैब

आंकड़ेचार्टमेट्रिक्स

आंकड़े टैब अनुकूलन परिणामों को चार्ट्स और समेकित मेट्रिक्स के रूप में संक्षेप में दिखाता है। अनुकूलन चार्ट — dataset पर अनुकूलन प्रभाव को विज़ुअलाइज़ करता है (जब JSON अनुकूलनों ने बदलाव किए हों)। मेट्रिक्स तालिका — मु...

Read article

पाइपलाइन उदाहरण (वीडियो)

वीडियोउदाहरणपाइपलाइन्सYouTube

नीचे आधिकारिक YouTube प्लेलिस्ट से पूर्ण, वास्तविक पाइपलाइनें दी गई हैं। पूरी प्लेलिस्ट खोलें उदाहरण Spine2D प्रयोग 1: RDP एल्गोरिथ्म के साथ कर्व अनुकूलन — आधारभूत Spine 2D अनुकूलन डेमो: Ramer–Douglas–Peucker (RDP) एल...

Read article

Nodes

Input

Spine प्रोजेक्ट फाइलें, केवल-JSON इनपुट, डेमो एसेट्स और ZIP पैकेज को ग्राफ में आयात करता है।

उद्देश्य: यह अधिकांश वर्कफ्लो के लिए मुख्य एंट्री पॉइंट है। यह JSON, atlas और textures को पढ़ता है और उन्हें ऐसे आंतरिक डेटा में सामान्यीकृत करता है जिन्हें downstream nodes प्रोसेस कर सकें।

समर्थित मोड:
1. पूर्ण प्रोजेक्ट: JSON + atlas + textures
2. केवल JSON: atlas के बिना skeleton/animation डेटा प्रोसेस करें
3. ZIP पैकेज: एक पैक किया हुआ zip जिसमें पूरा प्रोजेक्ट हो
4. डेमो एसेट्स: त्वरित परीक्षण के लिए built-in sample डेटा

मुख्य आउटपुट:
- **payload_out**: optimization nodes के लिए सामान्यीकृत डेटा
- **original_json_out**: तुलना या पुनर्निर्माण के लिए source JSON
- **atlas_project_out**: textures मिलने पर parsed atlas project

Video To Png Sequence

Spine वर्कफ़्लो के लिए वीडियो क्लिप को PNG फ्रेम सीक्वेंस में बदलें।

यह Input मेनू में उपलब्ध एक मुफ्त इनपुट टूल है, जो प्रोडक्शन वर्कफ़्लो के लिए उपयुक्त है। इसमें ग्रीन स्क्रीन के लिए chroma key और काले बैकग्राउंड के लिए unpremultiply-स्टाइल matte cleanup सपोर्ट है। आउटपुट payload_out और atlas_out के माध्यम से मिलते हैं।

Picture Input

स्टैंडअलोन PNG/JPEG इमेज को viewport में जोड़ता है ताकि आप अधिक साफ previews और presentation shots बना सकें।

उद्देश्य: इस node का उपयोग इमेज को सीधे viewport में presentation layers या visual helpers के रूप में रखने के लिए करें। यह तब उपयोगी है जब आप किसी scene को सजाना, सहायक graphics जोड़ना, और video या demo रिकॉर्ड करने से पहले project previews को अधिक polished बनाना चाहते हैं।

वर्कफ्लो: एक इमेज लोड करें, फिर viewport tools का उपयोग करके उसे scale करें, move करें, और उसका z-index समायोजित करें ताकि वह आपकी composition में सही जगह बैठे। इससे मुख्य Spine project data को छुए बिना आकर्षक showcase shots बनाना आसान हो जाता है।

यह node standalone है और कोई graph sockets expose नहीं करता।

Version: उत्पन्न स्टब कंकाल के लिए Spine JSON संस्करण प्रारूप।
Blending: उत्पन्न अटैचमेंट के लिए ब्लेंड मोड (सामान्य, योजक, गुणा, स्क्रीन)।

Psd To Skeletons

परतदार PSD/PSB फ़ाइलें लोड करता है और जुड़े हुए Spine skeleton बनाता है जो सटीक preview के लिए Photoshop scene layout को बनाए रखते हैं।

उद्देश्य: इस node का उपयोग तब करें जब scene पहले से Photoshop में तैयार हो और आप उस layer stack को viewer में linked Spine skeletons के सेट में बदलना चाहते हों। हर visible PSD layer अपनी PSD coordinates के आधार पर image-style skeleton बन जाती है, जिससे preview बनाना और objects को सटीक रूप से रखना बहुत आसान हो जाता है।

Viewer workflow: generation के बाद भी आप viewer में draw order बदल सकते हैं और imported PSD layers के बीच दूसरे skeleton रख सकते हैं, ताकि अतिरिक्त Spine characters या props Photoshop composition के भीतर फिट हो सकें।

उपलब्धता: यह free node है। यह node standalone है और graph sockets expose नहीं करता।

Version: generated layer skeletons के लिए उपयोग किया जाने वाला Spine JSON version format।
Blending: generated attachments के लिए उपयोग किया जाने वाला blending mode।
Load PSD: PSD/PSB picker खोलें और चुनी गई file से linked layer skeletons generate करें।
File Info: अभी लोड की गई PSD/PSB file का read-only summary।
Layer Count: visible layers की read-only count जो linked skeletons में बदली जाएँगी।
Preflight: generation से पहले पाई गई layer-name issues की read-only report।

Project Input

Spine project folder या archive को graph में लोड करता है और downstream project-aware nodes के लिए project_out socket के जरिए ProjectPayload उपलब्ध कराता है।

उद्देश्य: project-based workflows का entry point. यह Spine project folder या archive को scan करता है, ProjectPayload बनाता है, और Project Viewer, filters, Static Bake और Deduplicator जैसे downstream nodes के लिए cached metadata तैयार रखता है.

Controls:
- **Load Folder**: File System Access API के जरिए system folder picker खोलता है, चुनी गई directory को scan करता है, summary अपडेट करता है, metadata को cache करता है, और file watcher शुरू करता है ताकि बाद के बदलाव फिर से scan किए जा सकें.
- **Browse (Fallback)**: जिन browsers में **showDirectoryPicker()** नहीं है, उनके लिए hidden **webkitdirectory** input का उपयोग करता है. यह project लोड करता है, लेकिन persistent directory handle के बिना, इसलिए live watching और reliable rescans उपलब्ध नहीं होते.
- **Load Archive**: **.zip** या **.spine** archive को virtual project tree के रूप में लोड करता है. Archive-backed projects directory handle नहीं रखते, इसलिए **Rescan** डिज़ाइन के अनुसार उपलब्ध नहीं होता.
- **Rescan**: Directory handle उपलब्ध होने पर पहले से loaded folder को फिर से scan करता है. Scan से पहले read permission फिर से check करता है. fallback browse या archive mode से loaded projects आम तौर पर बताते हैं कि कोई directory loaded नहीं है.
- **Clear Project**: File watching रोकता है और current payload, summary, execution cache और cached payload metadata साफ करता है.
- **Reset to Defaults**: सिर्फ generic node controls रीसेट करता है. यह current project को unload नहीं करता और **Clear Project** का विकल्प नहीं है.
- **Drop folder or .zip here**: folders और archives के लिए drag-and-drop entry point, जो उन्हें उसी loading pipeline से गुजारता है.

Outputs:
- **project_out**: scanned tree, flat file list, size totals और type breakdown वाला ProjectPayload, जो downstream project-aware nodes के लिए होता है.
- **stats**: केवल DEV diagnostic output.

Output

अंतिम परिणाम एकत्र करता है और आपको optimized data को अलग-अलग फाइलों, grouped file sets या archives के रूप में डाउनलोड करने देता है।

उद्देश्य: यह optimized JSON, atlas data, textures और sprites के लिए export hub की तरह काम करता है। यह एक single JSON/atlas/textures set, कई file sets, या सिर्फ sprites से परिणाम बना सकता है जब आप पूर्ण Spine project को फिर से बनाए बिना image output चाहते हैं।

Export options:
- फाइलों को अलग-अलग या एक single archive के रूप में डाउनलोड करें
- packed results या unpacked files वाले archive को डाउनलोड करें
- JSON को compact form या readable pretty-printed form में export करें
- पूरा Spine project data या केवल sprite/image results export करें

Chaining workflow: OutputNode को graph का बिल्कुल आखिरी सिरा होना जरूरी नहीं है। आप इसके outputs को किसी दूसरे pipeline stage में भेज सकते हैं और उन्हीं फाइलों पर अतिरिक्त optimization passes चला सकते हैं। व्यवहार में, key और curve optimization को लगातार 3 iterations तक test किया गया है।

मुख्य आउटपुट:
- **reconstructed_json_out**: rebuilt Spine JSON
- **original_json_passthrough_out**: original JSON का passthrough
- **payload_out**: आगे chaining के लिए payload
- **changes**: एकत्र किए गए optimization changes
- **atlas_assets**: export के लिए तैयार atlas resources

RDP

एनीमेशन कर्व्स को सरल करता है (RDP).

उद्देश्य: रैखिक या लगभग रैखिक एनीमेशन सेगमेंट में keyframes की संख्या घटाने के लिए उन बिंदुओं को हटाता है जो दो अन्य बिंदुओं के बीच सीधी रेखा पर होते हैं.

स्वर्ण नियम: डिफ़ॉल्ट रूप से अक्षम। यह स्पष्ट आकार (area/curvature) वाली कर्व्स को रैखिक बनने से बचाती है। इसे केवल विज़ुअल जाँच के बाद अधिक आक्रामक compression के लिए बंद करें।

सॉकेट कीज़: payload_in, payload_out, changes

Epsilon: मूल वक्र से अधिकतम विचलन। उच्च मान अधिक कीफ़्रेम हटाते हैं लेकिन वक्र विवरण खो सकते हैं।
Steep: वक्रता संवेदनशीलता सीमा। जटिल वक्रों को रैखिक में समतल होने से बचाता है।
Round Mode: अनुकूलित मानों के लिए गोलाई मोड: कोई नहीं (मूल रखें), दशमांश (1 दशमलव), पूर्णांक।
Golden Rule: सक्षम होने पर, महत्वपूर्ण आकार/क्षेत्र वाले वक्रों को RDP द्वारा सरलीकृत होने से बचाता है।
S Run Length: टेम्पलेट-आधारित फ्लैटनिंग शुरू होने से पहले लगातार मिलने वाली मानक Spine S-curves की न्यूनतम संख्या। इस सुविधा को बंद करने के लिए 0 सेट करें।
S Deviation: मानक Spine S-curve टेम्पलेट से अनुमत normalized deviation, permille (0-300) में। कम मान अधिक सटीक मिलान मांगते हैं; अधिक मान अधिक near-template runs को flatten करते हैं।

Spline

स्प्लाइन-आधारित कर्व ऑप्टिमाइज़ेशन.

उद्देश्य: दृश्य गुणवत्ता बनाए रखते हुए स्मूद कर्व फिटिंग.

सॉकेट कीज़: payload_in, payload_out, changes

Max Error: स्प्लाइन फिटिंग के लिए अधिकतम अनुमत सन्निकटन त्रुटि। कम = मूल के करीब फिट।
Min Group Size: हटाने योग्य समूह बनाने के लिए आवश्यक न्यूनतम क्रमिक रैखिक कीफ़्रेम।

Refit

कर्व रीफिट (Bezier) से keyframes कम करता है.

उद्देश्य: सहनशीलता के भीतर रहते हुए कम कर्व फिट करता है.

सॉकेट कीज़: payload_in, payload_out, changes

Error Tolerance: मूल वक्र और फिट किए गए बेज़ियर के बीच अधिकतम अनुमत विचलन। कम = अधिक सटीक मिलान।
Max Iterations: वक्र फिटिंग के लिए अनुकूलन पुनरावृत्तियों की संख्या। अधिक = बेहतर फिट लेकिन धीमा।

Quantizer

कीफ़्रेम और वक्रों में संख्यात्मक मानों की सटीकता को कम करता है।

उद्देश्य: संख्याओं को निर्दिष्ट दशमलव स्थानों पर गोल करके फ़ाइल आकार को कम करने के लिए सरल लेकिन प्रभावी विधि।

उपयोग: लगभग सभी एनिमेशन डेटा पर लागू किया जा सकता है। उच्च कीफ़्रेम गणना के साथ अधिक प्रभावी हो जाता है।

सावधानी: बहुत आक्रामक क्वांटाइजेशन (कम सटीकता) एनिमेशन में कंपन या दृश्य विकृतियां पैदा कर सकता है।

Precision: कीफ़्रेम मानों के लिए दशमलव स्थानों की संख्या। कम = छोटी फ़ाइल लेकिन कम सटीकता।

Cleanup

अनावश्यक या अनावश्यक एनिमेशन डेटा को हटाने के लिए विभिन्न सफाई कार्य करता है।

उद्देश्य: कुछ ऐसे रिडंडेंट डेटा प्रकार हटाने के लिए विशेष टूल जिन्हें अन्य ऑप्टिमाइज़र मिस कर सकते हैं।

उपयोग: अपने payload को 'payload_in' से कनेक्ट करें और परिणाम 'payload_out' से लें। यदि आप per-change रिपोर्ट चाहते हैं, तो 'changes' भी उपयोग करें।

सॉकेट कीज़:
- इनपुट: payload_in
- आउटपुट: payload_out, changes

वर्तमान में समर्थित cleanups:
1. **Remove Unused Color/Alpha Tracks**: उन slots के color/alpha timelines हटाता है जो एनीमेशन के दौरान कभी visible नहीं होते।
2. **Remove Redundant IK Rotations**: 100% mix वाले IK constraint द्वारा पूरी तरह नियंत्रित bones से rotation keyframes हटाता है।
3. **Remove Path Constraint Keys**: path constraint (mix 100%) द्वारा पूरी तरह नियंत्रित bones से rotate/translate keyframes हटाता है।
4. **Sanitize Non-English Characters**: downstream टूल्स में समस्याओं से बचने के लिए नाम/identifiers में non-English characters को replace करता है。

Remove Unused Color Tracks: रंग/अल्फा घटक हटाएँ जो डिफ़ॉल्ट मान से कभी नहीं बदलते।
Remove Redundant IKRotation: IK बाधाओं द्वारा पूरी तरह से नियंत्रित हड्डी रोटेशन कीफ़्रेम हटाएँ।
Remove Redundant Path Constraint Keys: सेटअप मान दोहराने वाले पथ बाधा कीफ़्रेम हटाएँ।

Scale

निर्दिष्ट कारक द्वारा एनिमेशन कीफ़्रेम में सभी संख्यात्मक मानों को स्केल करता है।

उद्देश्य: एनिमेशन डेटा को समान रूप से स्केल करता है, आनुपातिक रूप से कंकाल का आकार बदलने या एनिमेशन तीव्रता को समायोजित करने के लिए उपयोगी।

उपयोग: payload से कनेक्ट करें और स्केल कारक सेट करें। 1.0 से ऊपर के मान बड़ा करते हैं, 1.0 से नीचे के मान छोटा करते हैं।

पैरामीटर:
- **Scale Factor**: सभी स्थिति और आकार मानों पर लागू गुणक।
- **Include Rotations**: क्या रोटेशन मानों को भी स्केल करना है (आमतौर पर अक्षम)।

उपयोग के मामले:
- आयातित एनिमेशन को नए कंकाल आयामों से मेल खाने के लिए आकार बदलना
- एनिमेशन के अतिरंजित या सूक्ष्म संस्करण बनाना
- विभिन्न चरित्र आकारों के लिए कई एनिमेशन का बैच स्केलिंग

Scale Bones: हड्डी की स्थिति और आकार को स्केल करें।
Scale Attachments: अटैचमेंट की स्थिति और आकार को स्केल करें।
Scale Animations: एनिमेशन कीफ़्रेम को स्केल करें।
Scale Constraints: बाधा पैरामीटर को स्केल करें।
Scale Path: पथ डेटा को स्केल करें।

Schneider

श्नाइडर कर्व फ़िटिंग एल्गोरिथ्म का उपयोग करके एनिमेशन कीफ़्रेम में चिकने बेज़ियर वक्र फ़िट करता है।

उद्देश्य: उन्नत वक्र फ़िटिंग जो घने कीफ़्रेम अनुक्रमों से प्राकृतिक दिखने वाले बेज़ियर वक्र उत्पन्न करती है।

उपलब्धता: **केवल Plus नोड**.

यह कैसे काम करता है: श्नाइडर एल्गोरिथ्म कीफ़्रेम स्थितियों और स्पर्शरेखाओं का विश्लेषण करता है ताकि इष्टतम बेज़ियर नियंत्रण बिंदु उत्पन्न किए जा सकें जो मूल गति से मेल खाते हों।

पैरामीटर:
- **Error Tolerance**: मूल कीफ़्रेम से अधिकतम स्वीकार्य विचलन। कम = अधिक सटीक, अधिक = चिकने वक्र।
- **Corner Angle**: थ्रेशहोल्ड कोण (डिग्री) जिस पर वक्र को खंडों में विभाजित करना है।

सर्वश्रेष्ठ के लिए:
- कई कीफ़्रेम वाले हाथ से खींचे गए या आयातित एनिमेशन
- रैखिक इंटरपोलेशन को चिकने बेज़ियर वक्रों में परिवर्तित करना
- वक्र गुणवत्ता बनाए रखते हुए कीफ़्रेम की संख्या कम करना

नोट: RDP जैसे सरल एल्गोरिथ्म की तुलना में अधिक गणनात्मक रूप से गहन, लेकिन बेहतर वक्र गुणवत्ता उत्पन्न करता है।

Min Segment Size: प्रसंस्करण के लिए एक खंड में कीफ़्रेम की न्यूनतम संख्या।

Physics Constraint Bake

Bake Physics Constraints to Keys: PhysicsConstraint की गति को rotation/translation कीफ़्रेम में बदलता है और physics timelines हटाता है।

उद्देश्य: रनटाइम physics simulation को स्पष्ट कीफ़्रेम में बदलता है ताकि एनिमेशन deterministic रहें और PhysicsConstraints के बिना संपादन योग्य हों। Bake के बाद payload से PhysicsConstraints और physics timelines हटा दिए जाते हैं।

उपलब्धता: **केवल Plus नोड**.

इनपुट/आउटपुट:
- **payload_in** → **payload_out** (baked)
- **changes** (वैकल्पिक परिवर्तन सूची)

कंट्रोल्स:
- **Sample FPS**: simulation sampling rate.
- **Bake Rotation**: rotation कीफ़्रेम लिखता है।
- **Bake Translation**: translation कीफ़्रेम लिखता है।
- **Bake Translation (Children)**: physics motion पर निर्भर child bones पर translate bake लागू करता है।

नोट्स:
- simulation डेटा पुनर्निर्माण के लिए original Spine JSON चाहिए।
- जब PhysicsConstraints हटाने हों लेकिन गति बनाए रखनी हो, तब उपयोग करें।

Attachment Visibility

जब इसका अल्फा शून्य होता है तो स्लॉट के attachment को null पर सेट करके रेंडरिंग को अनुकूलित करता है।

उद्देश्य: गेम इंजन को अदृश्य attachments को संसाधित या रेंडर करने से रोकता है।

उपयोग: अल्फा/रंग ट्रैक का विश्लेषण करता है और स्वचालित रूप से संबंधित 'attachment' ट्रैक पर कीफ़्रेम जोड़ता या संशोधित करता है।

पैरामीटर:
- **Alpha Threshold**: अल्फा मूल्य जिसके नीचे एक attachment को अदृश्य माना जाता है।
- **Auto Restore**: यदि सक्षम है, तो नोड स्वचालित रूप से अंतिम दृश्य attachment को पुनर्स्थापित करेगा जब अल्फा मूल्य सीमा से अधिक हो जाता है।

Payload Merger

कई संसाधित एनिमेशन पेलोड को वापस एकल एकीकृत पेलोड में विलय करता है।

उद्देश्य: समानांतर प्रोसेसिंग पाइपलाइनों के लिए आवश्यक जहां विभिन्न एनिमेशन या बोन समूहों को अलग से अनुकूलित किया जाता है और पुनः संयोजित करने की आवश्यकता होती है।

विलय रणनीति:
1. **बेस इनपुट**: कंकाल संरचना प्रदान करता है (बोन, स्लॉट, स्किन आदि)
2. **ओवरराइड इनपुट**: संसाधित ट्रैक प्रदान करते हैं जो बेस ट्रैक को बदलते हैं
3. **अंतिम लिखने वाला जीतता है**: जब कई ओवरराइड एक ही ट्रैक प्रदान करते हैं, अंतिम को प्राथमिकता मिलती है

संघर्ष पहचान:
- ओवरराइड इनपुट के बीच संघर्षों का पता लगाया जाता है और रिपोर्ट किया जाता है
- बेस → ओवरराइड प्रतिस्थापन सामान्य व्यवहार है (संघर्ष नहीं)
- ट्रैक संघर्ष होने पर चेतावनी टोस्ट दिखाया जाता है

पाइपलाइन उदाहरण:
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

उपयोग के मामले:
- विभिन्न एनिमेशन के लिए विभिन्न अनुकूलक
- पुनः संयोजन के साथ अलग बोन/स्लॉट प्रोसेसिंग
- विभिन्न अनुकूलन रणनीतियों का A/B परीक्षण

Warn conflicts: पेलोड मर्ज विवादों पर चेतावनियाँ दिखाएँ।

Animation Viewer

अनुकूलन से पहले और बाद एनिमेशन वक्रों का निरीक्षण और तुलना करने के लिए दृश्य उपकरण।

उद्देश्य: चयनित ट्रैक के लिए कीफ़्रेम और वक्रों का ग्राफिकल प्रतिनिधित्व प्रदान करता है।

उपयोग: दोनों इनपुट 'payload_before' और 'payload_after' को कनेक्ट करके, यह मूल और अनुकूलित वक्रों को ओवरले करेगा, जिससे आपके अनुकूलन के प्रभाव को visualize करना आसान हो जाएगा।

Show changed: केवल बदली हुई एनिमेशन दिखाएँ।
Animation: देखने के लिए एनिमेशन चयन।
Target: देखने के लिए लक्ष्य हड्डी/स्लॉट।
Property: प्रदर्शित करने के लिए गुण (रोटेशन, अनुवाद, आदि)।

Project Viewer

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

Deduplicator

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

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

Repack mode: डुप्लिकेशन हटाने के बाद रीपैक मोड।
Glow threshold: ग्लो इफ़ेक्ट स्प्राइट पहचानने की सीमा।
Solid threshold: ठोस स्प्राइट पहचानने की सीमा।
Min sprite area: विश्लेषण के लिए न्यूनतम स्प्राइट क्षेत्र (पिक्सेल²)।
Alpha hash threshold: तुलना के लिए अल्फा हैश सीमा।
Verification threshold: डुप्लिकेट सत्यापन सीमा।
Color rmse threshold: डुप्लिकेट पहचान के लिए रंग RMSE सीमा।
Constrain canonical atlas size: कैनोनिकल एटलस आकार सीमित करें।
Max canonical atlas width: अधिकतम कैनोनिकल एटलस चौड़ाई।
Max canonical atlas height: अधिकतम कैनोनिकल एटलस ऊँचाई।

Animation Filter

एनिमेशन नाम (जैसे 'run', 'idle') के आधार पर एनिमेशन ट्रैक फ़िल्टर करता है।

उद्देश्य: विभिन्न एनिमेशन पर विभिन्न अनुकूलन रणनीतियों को लागू करने के लिए उपयोगी।

उपयोग: उदाहरण के लिए, आप पृष्ठभूमि चरित्र एनिमेशन पर आक्रामक हानिकारक अनुकूलन (जैसे DCT) लागू कर सकते हैं जबकि मुख्य चरित्र क्रियाओं के लिए हानिरहित अनुकूलन (जैसे Spline) का उपयोग कर सकते हैं।

Asset Filter

एटलस एसेट्स को नाम से फ़िल्टर करता है, दो मोड में काम करता है: अनपैक से पहले (एटलस टेक्स्ट फ़िल्टर) या अनपैक के बाद (स्प्राइट फ़िल्टर)।

उद्देश्य: नियंत्रित करता है कि वर्कफ़्लो में कौन से एसेट्स शामिल हैं - एटलस से कौन से एसेट्स अनपैक करें या रीपैकिंग में कौन से अनपैक किए गए स्प्राइट शामिल करें।

मोड:
1. प्री-अनपैक मोड (AtlasUnpacker से पहले):
   - इनपुट: atlas_in (atlas_project)
   - आउटपुट: atlas_out (फ़िल्टर किया गया atlas_project)
   - वर्कफ़्लो: InputNode → AssetFilter → AtlasUnpacker
   - उपयोग केस: एटलस से कौन से एसेट्स अनपैक करें फ़िल्टर करें (प्रोसेसिंग समय बचाता है)

2. पोस्ट-अनपैक मोड (AtlasUnpacker के बाद):
   - इनपुट: sprites_in (sprites)
   - आउटपुट: sprites_out (फ़िल्टर किए गए sprites)
   - वर्कफ़्लो: AtlasUnpacker → AssetFilter → AtlasRepacker
   - उपयोग केस: अंतिम एटलस में कौन से अनपैक किए गए स्प्राइट शामिल करें फ़िल्टर करें

UI व्यवहार:
- प्री-अनपैक मोड में: एसेट नाम खोजने के लिए एटलस टेक्स्ट को पार्स करता है
- पोस्ट-अनपैक मोड में: स्प्राइट सरणी से एसेट नाम खोजता है
- 'सभी की अनुमति दें' टॉगल: जब चेक किया जाता है, सभी एसेट्स को पास करता है (सूची दिखाई देती है लेकिन अक्षम)
- चेकबॉक्स: शामिल करने के लिए विशिष्ट एसेट्स चुनें (जब 'सभी की अनुमति दें' अनचेक हो)

उदाहरण:
- प्री-अनपैक: केवल कैरेक्टर स्प्राइट्स को अनपैक करने के लिए केवल 'char_*' एसेट्स चुनें
- पोस्ट-अनपैक: अंतिम रीपैक किए गए एटलस से 'background_*' स्प्राइट्स को बाहर करें
- 'weapon_*' पैटर्न चुनकर केवल हथियार एटलस बनाएं

Bone Filter

हड्डी के नाम के आधार पर हड्डी एनिमेशन ट्रैक फ़िल्टर करता है।

उद्देश्य: अनुकूलन प्रक्रिया से विशिष्ट हड्डियों को लक्षित या बाहर करने की अनुमति देता है।

उपयोग: आप संवेदनशील हड्डियों, जैसे चेहरे के भावों के लिए उपयोग की जाने वाली, को आक्रामक अनुकूलन से बाहर करना चाह सकते हैं ताकि प्रत्येक विवरण को संरक्षित किया जा सके जबकि कम महत्वपूर्ण हड्डियों को भारी रूप से अनुकूलित किया जा सके।

Skin Filter

स्किन नामों के आधार पर एनिमेशन और एसेट डेटा को फ़िल्टर करता है।

उद्देश्य: मल्टी-स्किन Spine प्रोजेक्ट से केवल विशिष्ट स्किन को प्रोसेस करता है।

उपयोग: जब Spine प्रोजेक्ट में कई स्किन हों (जैसे 'default', 'armor', 'casual'), यह नोड आपको फ़िल्टर करने देता है कि प्रोसेसिंग में कौन से स्किन शामिल करने हैं।

पैरामीटर:
- **Skins List**: प्रत्येक उपलब्ध स्किन के लिए चेकबॉक्स
- **Allow All**: सभी स्किन शामिल करने के लिए टॉगल (डिफ़ॉल्ट)

उपयोग के मामले:
- प्रति स्किन अलग एटलस बनाना
- विभिन्न स्किन पर विभिन्न अनुकूलन लागू करना
- अनुकूलित बिल्ड से शायद ही कभी उपयोग किए जाने वाले स्किन को बाहर करना

नोट: स्किन कंकाल संरचना साझा करते हैं लेकिन विभिन्न अटैचमेंट हो सकते हैं।

Slot Filter

स्लॉट नाम के आधार पर स्लॉट एनिमेशन ट्रैक फ़िल्टर करता है।

उद्देश्य: विशिष्ट स्लॉट को लक्षित या बाहर करने के लिए उपयोगी जिनकी विशेष समय या दृश्यता आवश्यकताएं हो सकती हैं।

उपयोग: आप इसका उपयोग हथियार या प्रभाव स्लॉट को बाहर करने के लिए कर सकते हैं जो कोड द्वारा स्विच किए जाते हैं, attachment दृश्यता अनुकूलन से प्रभावित होने से।

Parameter Filter

उनके गुण प्रकार (जैसे rotation, scale, color) के आधार पर एनिमेशन ट्रैक फ़िल्टर करता है।

उद्देश्य: निम्नलिखित अनुकूलन को केवल विशिष्ट प्रकार के एनिमेशन डेटा पर लागू करने की अनुमति देता है।

उपयोग: इसके दायरे को सीमित करने के लिए इस नोड को एक अनुकूलक से पहले रखें। उदाहरण के लिए, आप केवल 'translation' और 'scale' ट्रैक पर RDP अनुकूलन लागू कर सकते हैं।

Atlas Unpacker

Spine टेक्सचर एटलस से व्यक्तिगत sprites निकालता है।

उद्देश्य: एटलस फ़ाइल को उसके घटक sprites में विघटित करता है, व्यक्तिगत विश्लेषण या पुनर्पैकिंग की अनुमति देता है।

उपयोग: InputNode से 'atlas_project' आउटपुट को इस नोड के 'atlas_project_in' इनपुट से कनेक्ट करें। आउटपुट फिर निरीक्षण के लिए AssetViewer या अनुकूलन के लिए AtlasRepacker को भेजा जा सकता है।

⭐ मेश क्रॉपिंग: InputNode से 'Original JSON' आउटपुट को 'Skeleton JSON' इनपुट से कनेक्ट करें ताकि sprites को उनकी मेश सीमाओं (आयताकार सीमाओं के बजाय) में स्वचालित रूप से क्रॉप किया जा सके। यह मेश हल के बाहर पारदर्शी पिक्सेल को हटाकर मेश अटैचमेंट वाले sprites के लिए टेक्सचर मेमोरी उपयोग को महत्वपूर्ण रूप से कम करता है।

आउटपुट:
- **sprites_out**: मानकीकृत sprites array (viewer/repacker के लिए)
- **sprites_data_out**: निकाले गए sprite images/metadata (संरचित बंडल)
- **atlas_out**: Atlas project पासथ्रू

सॉकेट कीज़: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

व्यक्तिगत sprites को एक या अधिक नए, अनुकूलित टेक्सचर एटलस में पुनर्पैक करता है।

उद्देश्य: टेक्सचर मेमोरी को अनुकूलित करता है और कुशल स्प्राइट शीट बनाकर संभावित रूप से draw calls को कम करता है।

उपयोग: 'sprites_data' (आमतौर पर AtlasUnpacker से) स्वीकार करता है और एक नया एटलस लेआउट उत्पन्न करता है।

पैरामीटर:
- **Max Texture Size**: आउटपुट एटलस पृष्ठों की अधिकतम चौड़ाई/ऊंचाई।
- **Padding**: प्रत्येक sprite के बीच पिक्सेल में दूरी।
- **Scale**: पैकिंग से पहले सभी sprites को स्केल करता है।
- **Power of Two**: आउटपुट एटलस आयामों को दो की शक्तियां होने के लिए बाध्य करता है (जैसे 1024, 2048), कुछ प्लेटफार्मों द्वारा आवश्यक।
- **Allow Rotation**: बेहतर पैकिंग दक्षता के लिए sprites को 90 डिग्री घुमाने की अनुमति देता है।

Atlas Viewer

अनपैक करने से पहले एटलस संरचना का निरीक्षण करने के लिए हल्का एटलस विज़ुअलाइज़ेशन और विश्लेषण टूल।

उद्देश्य: भारी अनपैकिंग किए बिना एटलस पेज और क्षेत्रों का तेज़ पूर्वावलोकन करने का तरीका देता है। एटलस संरचना की पुष्टि करने और अप्रयुक्त क्षेत्रों की पहचान करने में मदद करता है।

उपयोग: InputNode से 'atlas_project' आउटपुट को 'atlas' इनपुट से जोड़ें। वैकल्पिक रूप से 'original_json_out' को 'json' इनपुट से जोड़ें ताकि क्षेत्र उपयोग का विश्लेषण हो सके।

विशेषताएं:
- क्षेत्र सीमाओं के साथ एटलस पेजों का दृश्य पूर्वावलोकन
- क्षेत्र हाइलाइटिंग: हरा = उपयोग में, लाल = कंकाल में अप्रयुक्त
- पेज नेविगेशन नियंत्रण
- कुल और अप्रयुक्त क्षेत्रों के आँकड़े

उपयोग के मामले:
- अनुकूलन से पहले एटलस की त्वरित जाँच
- अप्रयुक्त क्षेत्रों (डेड वेट) की पहचान
- एटलस पैकिंग समस्याओं का डीबग
- एसेट संरचना को समझना

सॉकेट कीज़: atlas_project, atlas_in, atlas, json

Page Info: एटलस पेज आयाम और जानकारी।
Stats: स्थान उपयोग आँकड़े और स्प्राइट गणना।

Atlas Merger

कई एटलस स्रोतों को एकल एकीकृत एटलस में जोड़ता है।

उद्देश्य: कई एटलस प्रोजेक्ट को एक में मर्ज करें।

इनपुट:
- **atlas_inputs**: एटलस प्रोजेक्ट का मल्टी-इनपुट ऐरे

आउटपुट:
- **atlas_out**: मर्ज किया गया एटलस प्रोजेक्ट
- **merged_out**: लीगेसी मर्ज आउटपुट
- **merged_atlas_out**: लीगेसी मर्ज आउटपुट

उपयोग के मामले:
- कैरेक्टर एटलस को वेपन एटलस के साथ जोड़ें
- बेस स्प्राइट को DLC कंटेंट के साथ मर्ज करें
- समानांतर एटलस प्रोसेसिंग के बाद पुनः संयोजित करें

सामान्य पाइपलाइन:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Repacker से पहले डेटा अलग-अलग स्प्राइट होते हैं; Repacker के बाद यह एटलस प्रोजेक्ट बन जाता है। Atlas Merger एटलस प्रोजेक्ट को जोड़ता है, फिर अंतिम Unpacker → Repacker पास सब कुछ एकल एटलस में कसकर पैक करता है।

Asset Viewer

अनपैक किए गए एटलस से व्यक्तिगत sprites प्रदर्शित करता है।

उद्देश्य: एटलस हेरफेर के लिए दृश्य डिबगिंग उपकरण।

उपयोग: Atlas Unpacker नोड से 'sprites_data' स्वीकार करता है और आपको प्रत्येक निकाली गई छवि को visualize करने, इसके गुणों (आयाम, रोटेशन, आदि) की जांच करने और अनपैकिंग के बाद दृश्य सटीकता सत्यापित करने की अनुमति देता है।

Asset select: देखने के लिए एसेट चयन।
Pixel stats: एसेट के लिए पिक्सेल आँकड़े दिखाएँ।