आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप GLTF को GLB में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
GLTF से GLB
दुनिया में दो तरह की .gltf हैं और यहाँ सिर्फ़ एक काम करती है। फ़ाइल को टेक्स्ट एडिटर में खोलकर आख़िर के पास "buffers" ऐरे देखिए। अगर वहाँ uri data:application/octet-stream;base64 से शुरू होता है, तो मॉडल का हर वर्टेक्स उसी एक फ़ाइल में है और बदलाव चल जाएगा। अगर uri में scene.bin या model.bin लिखा है, तो geometry दूसरी फ़ाइल में है जिसे सिंगल-फ़ाइल कन्वर्टर कभी नहीं देखता।
यह दूसरी वाली शक्ल ज़्यादा आम है, क्योंकि ज़्यादातर एक्सपोर्टर यही डिफ़ॉल्ट देते हैं। यही वजह है यह पेज इस जाँच से शुरू होता है, FAQ में दबाने की बजाय — अलग-बफ़र वाली glTF यहाँ डालने पर साफ़ संदेश मिलता है कि geometry कहीं और है, और GLB संस्करण आज़माने का सुझाव आता है, जो असल में काम आने वाला सुझाव है क्योंकि जिसने .gltf बनाई वह लगभग हमेशा .glb भी बना सकता है।
बाहरी संसाधन वाली glTF दरअसल फ़ाइलों का एक छोटा-सा जाल है जो रिश्तेदार पथों से जुड़ा है — JSON, एक .bin, और हर टेक्सचर के लिए एक तस्वीर। इनमें से हर पथ मॉडल के टूटने का एक रास्ता है। JSON को उसके साथियों के बिना हटाइए तो वह कुछ नहीं लोड करती; अलग डायरेक्टरी बनावट वाले CDN से परोसिए तो बफ़र 404 देता है; किसी संदेश में जोड़िए तो चार में से सिर्फ़ एक फ़ाइल जाती है।
GLB में यह कोई भी गड़बड़ी नहीं होती क्योंकि खोने को कुछ है ही नहीं। यह एक ही HTTP रिक्वेस्ट भी है, कई की बजाय, जो उस पेज पर मायने रखता है जहाँ मॉडल ही वह चीज़ है जिसके लिए विज़िटर आया।
नतीजा एक glTF 2.0 बाइनरी है: बारह-बाइट हेडर जिसमें magic शब्द glTF, वर्ज़न नंबर और कुल लंबाई, फिर एक JSON चंक, फिर एक बाइनरी चंक। JSON चंक स्पेस से और बाइनरी चंक ज़ीरो बाइट से चार-बाइट सीमा तक पैड होता है — यह स्पेसिफ़िकेशन की माँग है, सिर्फ़ बर्दाश्त नहीं, कई लोडर उल्टी तरह पैड की गई फ़ाइल को नकार देते हैं।
भीतर, वर्टेक्स पोज़िशन float32 में VEC3 एक्सेसर के तौर पर लिखे जाते हैं और ट्रायंगल इंडेक्स uint32 में SCALAR एक्सेसर के तौर पर — बिना किसी अपवाद के। हर पोज़िशन एक्सेसर में स्पेसिफ़िकेशन की माँगी गई min और max क़ीमत रहती है, इसलिए व्यूअर मॉडल को फ़्रेम करते हैं, ज़ूम करके ख़ाली जगह पर नहीं खुलते।
यह कन्वर्टर geometry हिलाता है। जो glTF metallic-roughness मैटीरियल, बेस कलर टेक्सचर, नॉर्मल मैप और एमिसिव मैप बताती है, वह GLB में वर्टेक्स पोज़िशन, ट्रायंगल इंडेक्स और मेश नाम भर के तौर पर बदलती है — मैटीरियल ब्लॉक, तस्वीरें, सैंपलर और टेक्सचर कोऑर्डिनेट बस लिखे ही नहीं जाते।
यह इस बात के हिसाब से तौलने लायक़ है कि आप बदल क्यों रहे हैं। अगर मक़सद टेक्सचर को एक भेजने लायक़ फ़ाइल में बाँधना था, तो यह पेज वह नहीं करता — gltf-transform या Blender एक्सपोर्टर करता है। अगर मक़सद भीतर-भरी JSON से एक बाइनरी टुकड़ा निकालना था — साइज़ टेस्ट, सिर्फ़ geometry वाला प्रीव्यू, सीन में जगह भरने वाला — नतीजा बिल्कुल सही है और काफ़ी छोटा भी।
एनिमेशन चैनल और सैंपलर नहीं पढ़े जाते, स्किन और जॉइंट हायरार्की नहीं पढ़ी जाती, और कैमरे व लाइट नहीं पढ़े जाते। कोई रिग्ड और एनिमेटेड किरदार GLB में उस स्टिल geometry के तौर पर आता है जो जिस भी पोज़ में वर्टेक्स डेटा है वही दिखाता है, हिलाने का कोई रास्ता नहीं।
किसी स्थिर वस्तु, इमारत के हिस्से, स्कैन की गई चीज़ या प्रिंट किए गए पार्ट के लिए इससे कुछ नहीं खोता, क्योंकि खोने को था ही नहीं। किसी किरदार या मशीन के लिए यही पूरा मॉडल है। यहाँ कोई आधा-अधूरा नतीजा नहीं और कोई सेटिंग इसे नहीं बदलती, इसलिए सही सलाह यह है कि glTF में क्या है यह बदलने से पहले जान लें, बाद में नहीं।
मूल सीन को उसके डिफ़ॉल्ट सीन इंडेक्स से चला जाता है, और हर नोड मैट्रिक्स को उसके पैरेंट के साथ मिलाया जाता है इससे पहले कि वर्टेक्स उस नतीजे से बदले जाएँ। जो नोड translation, rotation और scale को अलग-अलग बताते हैं उन्हें पहले मैट्रिक्स में बदला जाता है, glTF के अपने quaternion रूप से, ताकि दोनों तरह की फ़ाइलें एक ही जगह पहुँचें।
जो GLB बनती है उसका ढाँचा चपटा है: एक सीन, हर मेश के लिए एक नोड, कोई पैरेंटिंग नहीं, कोई दोबारा इस्तेमाल नहीं। जिस मॉडल की glTF में एक बोल्ट मेश हायरार्की में चालीस बार रखा था वह चालीस मेश और चालीस बार वर्टेक्स की नक़ल बन जाता है। तस्वीर वही रहती है, फ़ाइल बड़ी हो जाती है — यही वह सौदा है जो instancing न रखने वाला हर फ़ॉर्मेट माँगता है।
Draco-कंप्रेस्ड geometry Draco का नाम लेकर रुक जाती है। KHR_draco_mesh_compression सादे बफ़र व्यू को कंप्रेस्ड धारा से बदल देता है, और उसे डिकोड करने के लिए जो लाइब्रेरी चाहिए वह यहाँ नहीं है। Draco के बिना दोबारा एक्सपोर्ट करना Blender में एक चेकबॉक्स है और gltf-transform में एक फ़्लैग।
ट्रायंगल स्ट्रिप, फ़ैन, लाइन या पॉइंट के तौर पर रखी geometry बदली नहीं जाती, छोड़ दी जाती है, क्योंकि सिर्फ़ glTF मोड 4 ट्रायंगल लिस्ट है। जिस फ़ाइल में और कुछ न हो वह "कोई ट्रायंगल geometry नहीं मिली" के संदेश पर ख़त्म होती है। टूटी हुई JSON फ़ाइल — अधूरा डाउनलोड इसकी आम वजह है — कुछ मनमाना बना देने की बजाय पढ़ी न जा सकने वाली बता दी जाती है।
भीतर-भरी glTF अपना बफ़र base64 में रखती है, जो हर तीन बाइट के लिए चार अक्षर की क़ीमत लेता है। वही geometry GLB बाइनरी चंक में ले जाने से यह बोझ हट जाता है, इसलिए भीतर-भरी glTF आम तौर पर बदलते ही तक़रीबन एक चौथाई सिकुड़ जाती है, इससे पहले कि बाक़ी कुछ गिना जाए।
फिर वह सब घटाइए जो कन्वर्टर नहीं ढोता। जिस मॉडल का बड़ा हिस्सा टेक्सचर था, उसकी GLB मूल का एक छोटा हिस्सा और उतनी ही सादी हो सकती है। बदलने के बाद एक काम की जाँच ट्रायंगल गिनती है: इंडेक्स एक्सेसर की गिनती तीन से भाग देने पर वही आना चाहिए जो आपके स्रोत टूल ने बताया था, न मिले तो स्रोत में ऐसे रूप में geometry थी जिसे छोड़ दिया गया।
कहीं नहीं। यह जोड़ी पेज में सादी JavaScript की तरह चलती है, न कोई WebAssembly मॉड्यूल लाना पड़ता है न कोई रिक्वेस्ट मॉडल ले जाती है। पार्स, ट्रांसफ़ॉर्म बेक और बाइनरी बनाना — सब आपकी अपनी मशीन पर होता है, यही वजह है कोई कतार नहीं और प्रति-फ़ाइल इंतज़ार नहीं।
मुफ़्त सीमा 100 MB है, और भीतर-भरी glTF ही यहाँ वह फ़ॉर्मेट है जो इसके क़रीब पहुँच सकती है, क्योंकि base64 उसी geometry को रखने का सबसे फूला हुआ तरीक़ा है। अगर आप उस सीमा के क़रीब हैं, तो मॉडल शायद उस टूल से सीधे GLB एक्सपोर्ट करके ज़्यादा बेहतर तरीक़े से बनता है।
| GLTF | GLB | |
|---|---|---|
| पूरा नाम | GL Transmission Format | Binary glTF |
| फ़ाइल एक्सटेंशन | .gltf | .glb |
| मीडिया टाइप | model/gltf+json | model/gltf-binary |
| पहली बार प्रकाशित | 2015 | 2016 |
| प्रकाशक | Khronos Group | Khronos Group |
| विनिर्देश | glTF 2.0 | glTF 2.0 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | OBJ | OBJ |
एनिमेशन बना रहता है। GLTF और GLB — दोनों कई फ़्रेम ढोते हैं, इसलिए नतीजा अब भी चलता है।
Blender, three.js और Babylon.js GLTF और GLB — दोनों पढ़ लेते है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
GLTF Khronos Group का फ़ॉर्मेट है, जो 2015 में आया। यह glTF 2.0 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
GLB Khronos Group का है और 2016 से चला आ रहा है, और glTF 2.0 में तय किया गया है। Blender, three.js और Babylon.js इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
GLTF और GLB सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। सिर्फ़ ज्यामिति। सामग्री, रंग, बनावट और एनिमेशन साथ नहीं जाते, और जो मॉडल कई बार रखा गया हो वह हर नक़ल के अपनी-अपनी जगह पर पक्की हो जाने के साथ लौटता है।
एनिमेशन बना रहता है। GLTF और GLB — दोनों कई फ़्रेम ढोते हैं, इसलिए नतीजा अब भी चलता है।