आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप GLTF को OBJ में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
GLTF से OBJ
दोनों फ़ॉर्मेट टेक्स्ट हैं, और यह समानता भ्रामक है। एक .gltf खोलिए तो एक JSON document मिलता है जिसमें vertex डेटा एक base64 string है, buffer views से byte offsets से काटा हुआ, accessors से पढ़ा हुआ। एक coordinate तक पहुँचने के लिए चार indirection हैं।
OBJ में इनमें से कुछ नहीं। v से शुरू होने वाली line एक vertex है और उसके बाद के तीन नंबर उसके coordinate हैं। यही पूरी grammar है, और यही वजह है OBJ हर उस फ़ॉर्मेट से ज़्यादा टिका रहा जिसने इसकी जगह लेनी चाही जब काम निरीक्षण का था।
ऊपर एक comment line लेखक बताती है, फिर हर mesh के लिए — glTF से नाम लाती एक o line, v lines की एक लड़ी, और f lines की एक लड़ी। कुछ और नहीं दिखता — कोई vt नहीं, कोई vn नहीं, कोई mtllib नहीं।
इसका मतलब है इसके लिए parser लगभग छह लाइन का होगा, और wc, grep व awk जैसे टूल सीधे काम आते हैं। f lines गिनना triangle count देता है; v lines गिनना vertex count।
OBJ face indices एक से शुरू होते हैं। वे पूरी फ़ाइल में लगातार भी चलते हैं, हर o group पर दोबारा शुरू नहीं होते — यही वह विवरण है जिसे ज़्यादातर हाथ से लिखे parser ग़लत पकड़ते हैं।
अगर आप फ़ाइल वापस पढ़ रहे हैं, नियम है — अब तक देखी v lines की गिनती जोड़िए और zero-based index पाने के लिए एक घटाइए।
glTF node tree किसी mesh को matrix की एक श्रृंखला से कहीं भी रख सकता है, और एक ही mesh को कई जगह भी। OBJ के पास न scene graph है, न instancing, इसलिए रूपांतरण tree को resolve करता है।
जो नतीजा नापने वाले के लिए अच्छा है — जो संख्या आप पढ़ रहे हैं वह वहीं है जहाँ ज्यामिति असल में है, transform से पहले नहीं। फ़ाइल के आकार के लिए नतीजा है कि दोहराई गई instances दोहराया gadhaव vertex data बन जाती हैं।
Materials, textures, images, samplers, UV coordinates, normals, tangents, vertex colours, morph targets, skins, animation channels, cameras, lights और कोई भी extension। इनमें से कुछ भी न पढ़ा जाता है न लिखा।
OBJ सैद्धांतिक रूप से UV और normals रख सकता है, और एक अलग MTL material बता सकती। यह converter दोनों नहीं लिखता, क्योंकि यह छह फ़ॉर्मेट के बीच ज्यामिति ले जाता है और जो डेटा कभी निकाला ही नहीं गया उससे material file गढ़ना ग़लत होगा।
glTF primitives एक mode घोषित करते हैं। Mode 4 triangle list है और यही पढ़ी जाती है; points, lines, triangle strips और fans छोड़ दी जाती हैं। सिर्फ़ line geometry वाली फ़ाइल एक संदेश के साथ रुकती है, जो ख़ाली OBJ से ज़्यादा उपयोगी है।
Draco-compressed geometry नाम बताते हुए रुकती है, क्योंकि KHR_draco_mesh_compression का decoder यहाँ नहीं है। अगर आपकी glTF size-optimised export pipeline से आई, यही सबसे बड़ी वजह होगी।
बिल्कुल, हर mesh के लिए। इस रास्ते पर कुछ नहीं मिलाया जाता — POSITION accessor element-दर-element v lines में डिकोड होता है उसी क्रम में, और index accessor f entries बनती है।
यह गिनती एक इस्तेमाल लायक़ जाँच बनाती है — अगर आपके टूल ने 48,213 vertices बताए और OBJ में 48,213 v lines हैं, कुछ छूटा नहीं। इसका यह भी मतलब है coincident vertices बचे रहते हैं।
glTF buffer में float32 coordinate चार बाइट का है। वही संख्या दशमलव पाठ के रूप में लिखी जाना आम तौर पर आठ से अठारह अक्षर लेती है, इसलिए OBJ glTF के geometry हिस्से से कहीं बड़ी होती है।
सटीकता truncate नहीं होती — values उतनी सटीकता पर छापे जाते हैं जितनी JavaScript को float round-trip करने के लिए चाहिए, इसलिए बाहर जाते वक़्त चुपचाप कुछ round नहीं होता।
अगर model को render करना है, glTF रखिए। जो इसे देखने लायक़ बनाता है — materials, textures, animation — सब कुछ इस रूपांतरण द्वारा फेंके गए हिस्से में है, और हर आधुनिक viewer इसे सीधे पढ़ता है।
बदलिए जब model asset की बजाय डेटा है — जब आपको भरोसेमंद triangle count चाहिए, ख़ुद नापा bounding box, दो exports के बीच diff, या अपने लिखे code का इनपुट।
| GLTF | OBJ | |
|---|---|---|
| पूरा नाम | GL Transmission Format | Wavefront ऑब्जेक्ट |
| फ़ाइल एक्सटेंशन | .gltf | .obj |
| मीडिया टाइप | model/gltf+json | model/obj |
| पहली बार प्रकाशित | 2015 | 1992 |
| प्रकाशक | Khronos Group | Wavefront Technologies |
| विनिर्देश | glTF 2.0 | — |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | GLB | PLY, STL |
Blender GLTF और OBJ — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
दोनों का निशाना अलग काम है: GLTF का वेब और बनी हुई फ़ाइल सौंपना पर, OBJ का प्रोग्रामों के बीच डेटा ले जाना और एडिटिंग पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
GLTF Khronos Group का फ़ॉर्मेट है, जो 2015 में आया। यह glTF 2.0 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
OBJ Wavefront Technologies का है और 1992 से चला आ रहा है। Blender, MeshLab और Maya इस फ़ॉर्मेट को पढ़ लेते है।
OBJ 1992 में आया और GLTF 2015 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
GLTF और OBJ सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। सिर्फ़ ज्यामिति। सामग्री, रंग, बनावट और एनिमेशन साथ नहीं जाते, और जो मॉडल कई बार रखा गया हो वह हर नक़ल के अपनी-अपनी जगह पर पक्की हो जाने के साथ लौटता है।
कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस Wavefront Object आम तौर पर दिखाता है।