Skip to content

GLB ऑप्टिमाइज़र ​

किसी GLB या glTF फ़ाइल को छोटा और रेंडर करने में कम खर्चीला बनाएँ। फ़ाइल यहाँ छोड़ें और चुनें कि क्या करना है: ऐसे डेटा को हटाएँ जिसे कुछ भी संदर्भित नहीं करता, ज्योमेट्री को वेल्ड और सरल करें, ड्रॉ कॉल घटाने के लिए मेश मर्ज करें, टेक्सचर का आकार बदलकर उन्हें दोबारा एन्कोड करें और पूरी फ़ाइल को Meshopt से कंप्रेस करें। हर चरण के बाद फ़ाइल का आकार दिखता है, अंतिम रूप देने से पहले परिणाम का प्रीव्यू मिलता है और कुछ भी अपलोड नहीं किया जाता। ऑप्टिमाइज़ करना और प्रीव्यू देखना मुफ़्त है; परिणाम डाउनलोड करना Standard और Pro प्लान का हिस्सा है।

Meshopt कंप्रेशन

बाइट्स के एक अंश में भेजिए।

जिसे कोई रेफ़र नहीं करता उसे हटाइए, ज्यामिति को वेल्ड और सरल कीजिए, टेक्सचर दोबारा एन्कोड कीजिए, फिर सब कुछ Meshopt से पैक कीजिए। हर चरण के बाद आकार का आँकड़ा मिलता है और तय करने से पहले नतीजे की झलक भी।

हर चरण का आँकड़ाडाउनलोड से पहले झलककुछ अपलोड नहीं
4.0 MB676 KB

84% smaller. Our sample character with 10 clips baked in.

Remove unused data3.8 MB
Weld vertices3.8 MB
Trim animation keyframes3.6 MB
Meshopt compression676 KB
फ़ाइल छोटी करने के लिए तैयार हैं?

Meshopt, क्वांटाइज़ और यहाँ Draco क्यों नहीं है ​

Meshopt (EXT_meshopt_compression) डिफ़ॉल्ट और ब्राउज़र में चलने वाली किसी भी चीज़ के लिए सही विकल्प है। यह Draco के बराबर आकार हासिल करता है और कई गुना तेज़ी से डिकोड होता है। यह अहम है, क्योंकि डिकोडिंग तब होती है जब आपका खिलाड़ी लोडिंग स्क्रीन देख रहा होता है। three.js, Babylon.js और PlayCanvas सभी इसे पढ़ सकते हैं, और इसका डिकोडर इतना छोटा है कि इसकी चिंता करने की ज़रूरत नहीं पड़ती।

क्वांटाइज़ के लिए किसी एक्सटेंशन की आवश्यकता नहीं होती। यह पोज़िशन, नॉर्मल और UV को छोटे संख्या प्रकारों में संग्रहीत करता है, जिन्हें हर glTF लोडर बिना किसी डिकोडर के पढ़ सकता है। बचत थोड़ी कम होती है, लेकिन फ़ाइल सादा glTF बनी रहती है। इसलिए ऐसी पाइपलाइन को फ़ाइल देने के लिए यह सबसे सुरक्षित विकल्प है जिस पर आपका नियंत्रण नहीं है।

Draco फ़ाइलें यहाँ बिना समस्या खुलती हैं, इसलिए आप उन्हें डीकंप्रेस कर सकते हैं या Meshopt में बदल सकते हैं। लेकिन Draco में लिखना अलग बात है और यह टूल ऐसा नहीं करता। ब्राउज़र में चलने वाला एकमात्र Draco एन्कोडर एक asm.js बिल्ड है, जिसे इनिशियलाइज़ होने में ही कई मिनट लगते हैं, जबकि अनुरक्षित पैकेज केवल Node के लिए बने बिल्ड देते हैं। ऐसा बटन देना जो आपके टैब को फ़्रीज़ कर दे, उसे न देने से भी बदतर होगा। यदि आपको विशेष रूप से Draco आउटपुट चाहिए, तो glTF-Transform CLI आपकी मशीन पर एक ही कमांड में यह काम कर देता है:

bash
npx @gltf-transform/cli draco input.glb output.glb

हर चरण वास्तव में क्या करता है ​

अप्रयुक्त डेटा हटाएँ prune और dedup चलाता है। एक्सपोर्टर अक्सर ऐसे मटेरियल छोड़ देते हैं जिन्हें कुछ भी इस्तेमाल नहीं करता, दो नामों से मौजूद डुप्लिकेट टेक्सचर और खाली नोड। दो या तीन टूल से गुज़र चुकी फ़ाइल में केवल यह चरण अक्सर आकार का उल्लेखनीय हिस्सा घटा देता है और इससे मॉडल का रूप नहीं बदल सकता।

वर्टेक्स वेल्ड करें समान पोज़िशन और नॉर्मल वाले वर्टेक्स को मर्ज करके ट्रायंगल सूप को इंडेक्स्ड मेश में बदलता है। ज़्यादातर एक्सपोर्टर पहले ही ऐसा करते हैं; जो नहीं करते, उनमें आपको हर साझा कोने की तीन प्रतियों की कीमत चुकानी पड़ती है।

मटेरियल के अनुसार मेश जोड़ें ड्रॉ कॉल की समस्या का समाधान है। यदि आपका मॉडल दो सौ अलग-अलग ऑब्जेक्ट से बना है और वे सभी एक ही मटेरियल इस्तेमाल करते हैं, तो GPU एक के बजाय दो सौ काम कर रहा होता है। उन्हें जोड़ने से हायरार्की फ़्लैट हो जाती है, इसलिए यह डिफ़ॉल्ट रूप से बंद है: यदि आपका गेम अलग-अलग हिस्सों को चलाता है या मॉडल रिग्ड है, तो आपको वह हायरार्की चाहिए।

ज्योमेट्री सरल करें Meshopt सिंप्लिफ़ायर से मेश को डेसिमेट करता है और आपके द्वारा तय किए गए ट्रायंगल प्रतिशत को लक्ष्य बनाता है। यह स्कैन किए गए या CAD मॉडल के लिए सही उपाय है, जिनमें बिना ज़रूरत लाखों ट्रायंगल आ जाते हैं। लगभग 40% से कम पर ऑर्गेनिक आकृतियों में असर दिखने लगता है, जबकि कठोर सतहों पर यह कम दिखाई देता है।

एनिमेशन कीफ़्रेम ट्रिम करें एनिमेशन ट्रैक को दोबारा सैंपल करता है और उन कीफ़्रेम को हटा देता है जो अपने पड़ोसी कीफ़्रेम के बीच सीधी रेखा पर होते हैं। किसी ऐसे टूल से 60fps पर एक्सपोर्ट की गई क्लिप में, जिसने हर फ़्रेम बेक किया हो, यही डेटा फ़ाइल का अधिकतर हिस्सा हो सकता है।

टेक्सचर का आकार बदलकर उन्हें दोबारा एन्कोड करता है। WebP लगभग समकक्ष PNG के एक-तिहाई आकार का होता है और हर आधुनिक ब्राउज़र इसे पढ़ सकता है। अधिकतम आकार 1024 रखने का असर आमतौर पर गेम मॉडल पर दिखाई नहीं देता और अक्सर डाउनलोड आकार घटाने का सबसे बड़ा उपलब्ध उपाय होता है।

डाउनलोड आकार और मेमोरी एक ही चीज़ नहीं हैं ​

कंप्रेशन फ़ाइल को छोटा करता है। टेक्सचर अपलोड होने के बाद वे जितनी वीडियो मेमोरी लेते हैं, उस पर इसका कोई प्रभाव नहीं पड़ता, क्योंकि JPEG, PNG और WebP सभी GPU पर रॉ पिक्सेल में विस्तृत हो जाते हैं। 2048×2048 टेक्सचर VRAM में लगभग 22 MB लेता है, चाहे उसका डाउनलोड आकार 4 MB रहा हो या 200 KB।

यदि GLB व्यूअर बताता है कि आपकी समस्या फ़ाइल आकार के बजाय टेक्सचर मेमोरी है, तो समाधान KTX2 है, जो मेमोरी में पहुँचने तक GPU-कंप्रेस्ड रहता है। दोनों एक-दूसरे के पूरक हैं: GPU में रखे जाने वाले डेटा के लिए KTX2 और नेटवर्क से भेजे जाने वाले डेटा के लिए Meshopt।

सामान्य प्रश्न ​

मैं GLB फ़ाइल को कैसे कंप्रेस करूँ? ​

इसे ऊपर छोड़ें, डिफ़ॉल्ट सेटिंग रहने दें और Optimize पर क्लिक करें। डिफ़ॉल्ट सेटिंग अप्रयुक्त डेटा साफ़ करती हैं, वर्टेक्स वेल्ड करती हैं और Meshopt कंप्रेशन लागू करती हैं—वेब गेम के लिए यह सुरक्षित संयोजन है। हर चरण की सूची दिखाती है कि बचत कहाँ से हुई।

मेरी फ़ाइल कितनी छोटी हो जाएगी? ​

यह पूरी तरह इस पर निर्भर करता है कि उसमें क्या है। बिना कंप्रेशन वाला मेश-प्रधान मॉडल अक्सर Meshopt से 60 से 80 प्रतिशत तक छोटा हो जाता है। जिस फ़ाइल में अधिकतर PNG टेक्सचर हों, उसका आकार तब तक मुश्किल से बदलता है जब तक आप उन्हें WebP में नहीं बदलते। मुख्य रूप से एनिमेशन डेटा वाली फ़ाइल केवल कीफ़्रेम ट्रिमिंग पर अच्छी प्रतिक्रिया देती है। चरणवार विवरण बताता है कि आपकी फ़ाइल इनमें से किस स्थिति में है।

क्या ऑप्टिमाइज़ करने से मॉडल खराब हो जाता है? ​

अप्रयुक्त डेटा हटाना, वेल्डिंग, कीफ़्रेम ट्रिमिंग और Meshopt कंप्रेशन—इन सभी में दिखावट की कोई हानि नहीं होती। सरलीकरण ऐसा नहीं है: यह ट्रायंगल हटाता है और आक्रामक सेटिंग पर उसका असर दिखाई देता है। टेक्सचर का आकार बदलना और JPEG में बदलना भी हानिपूर्ण है। प्रीव्यू वास्तविक आउटपुट दिखाता है, ताकि डाउनलोड करने से पहले आप उसे देख सकें।

क्या Unity या Godot परिणाम खोल पाएगा? ​

Meshopt समर्थन इंपोर्टर और उसके संस्करण पर निर्भर करता है। इसलिए यदि फ़ाइल को ब्राउज़र के बजाय किसी इंजन में जाना है, तो Quantize चुनें। इसके लिए किसी एक्सटेंशन की आवश्यकता नहीं होती और यह हर जगह काम करता है। जब गंतव्य वेब पेज हो, तब Meshopt बेहतर विकल्प है।

क्या यह पहले से कंप्रेस की गई फ़ाइल खोल सकता है? ​

हाँ। Draco और Meshopt से कंप्रेस किए गए इनपुट, दोनों लोड होते समय डिकोड हो जाते हैं। इसलिए आप Draco फ़ाइल को डीकंप्रेस कर सकते हैं, उसे Meshopt में बदल सकते हैं या अलग सेटिंग के साथ दोबारा कंप्रेस कर सकते हैं।

क्या मेरा मॉडल अपलोड किया जाता है? ​

नहीं। एन्कोडर सहित पूरी पाइपलाइन आपके ब्राउज़र के Web Worker में चलती है। पेज लोड हो जाने के बाद यह ऑफ़लाइन भी काम करता है।