GLB ما ه
GLB هو تمثيل تنسيق الملف الثنائي للنماذج ثلاثية الأبعاد المحفوظة في تنسيق GL Transmission (glTF). معلومات حول النماذج ثلاثية الأبعاد مثل التسلسل الهرمي للعقدة والكاميرات والمواد والرسوم المتحركة والشبكات بتنسيق ثنائي. يخزن هذا التنسيق الثنائي أصل glTF (JSON و. bin والصور) في كائن ثنائي. كما أنه يتجنب مشكلة الزيادة في حجم الملف التي تحدث في حالة تنسيق glTF. ينتج عن تنسيق ملف GLB أحجام ملفات مضغوطة ، وتحميل سريع ، وتمثيل كامل للمشهد ثلاثي الأبعاد ، وقابلية للتوسيع لمزيد من التطوير. يستخدم التنسيق model / gltf-binary كنوع MIME.
تنسيق ملف GLB - مزيد من المعلومات
تؤدي طرق تسليم المحتوى التي يستخدمها glTF إلى معالجة إضافية لفك تشفير البيانات الثنائية المشفرة بالأساس 64 وزيادة حجم الملف أيضًا بنسبة 33٪. تتضمن طرق التسليم هذه ، التي ساهمت في تكوين تنسيق ملف GLB ، ما يلي:
- يشير glTF JSON إلى البيانات الثنائية الخارجية (الهندسة ، الإطارات الرئيسية ، الأشكال) ، والصور.
- يدمج glTF JSON البيانات الثنائية بترميز base64 ، والصور المضمنة باستخدام عناوين URI للبيانات.
تم تقديم GLB كتنسيق حاوية كتنسيق ملف ثنائي لتمثيل أصل glTF في blob ثنائي لتجنب المشكلات التي تسببها glTF. يجب الإشارة إلى تنسيق ملف GLB المواصفات لأي تطبيق للقارئ / الكاتب من أجل تطوير التطبيقات .
هيكل ملف GLB
يعتمد تنسيق ملف GLB على ملف endian الصغير ويظهر هيكله أنه يحتوي على:
- ديباجة 12 بايت بعنوان الرأس.
- جزء واحد أو أكثر يحتوي على محتوى JSON وبيانات ثنائية.
رأس GLB
يتكون رأس تنسيق ملف GLB من ثلاثة إدخالات 4 بايت:
- سحر uint32 - السحر يساوي 0x46546C67. إنها سلسلة ASCII glTF ، ويمكن استخدامها لتحديد البيانات على أنها Binary glTF
- إصدار uint32 - يشير إلى إصدار تنسيق حاوية Binary glTF
- uin32 length - الطول الإجمالي لـ Binary glTF ، بما في ذلك الرأس وجميع القطع بالبايت
القطع
يحتوي كل مقطع في ملف GLB على البنية التالية:
uint32 | uint32 | ubyte [] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- طول chunkData بالبايت- “chunkType” - يشير إلى نوع القطعة
- “chunkData” - الحمولة الثنائية للقطعة
حيث تكون أنواع القطع:
# | نوع القطعة | ASCII | الوصف | مرات الظهور |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | محتوى JSON منظم | 1 |
2. | 0x004E4942 | BIN | مخزن مؤقت ثنائي | 0 أو 1 |
يجب محاذاة بداية ونهاية كل جزء مع حد 4 بايت ويجب استخدام الحشو لهذا الغرض.
محتوى JSON المنظم
يجب أن يكون هذا هو الجزء الأول من أصل Binary glTF ويمكّن التنفيذ من استرداد الموارد بشكل تدريجي من الأجزاء اللاحقة. يوفر هذا أيضًا القدرة على قراءة مجموعة فرعية محددة فقط من الموارد من أصل Binary glTF مثل LOD الأكثر خشونة في الشبكة. من أجل تلبية متطلبات المحاذاة ، يجب أن تكون هذه القطعة مبطنة بأحرف مسافة زائدة (0x20).
Binary Buffer
يحتوي هذا الجزء على الحمولة الثنائية للهندسة ، وإطارات مفاتيح الرسوم المتحركة ، والجلود ، والصور. يجب أن يكون الجزء الثاني من أصل ثنائي glTF ويجب أن يكون مبطنًا بأصفار زائدة (0x00) لتلبية متطلبات المحاذاة.