فایل GLB چیست؟
GLB نمایش فرمت فایل باینری مدل های سه بعدی است که در قالب انتقال GL (glTF) ذخیره شده است. اطلاعاتی در مورد مدل های سه بعدی مانند سلسله مراتب گره ها، دوربین ها، مواد، انیمیشن ها و مش ها در فرمت باینری. این فرمت باینری دارایی glTF (JSON، .bin و تصاویر) را در یک حباب باینری ذخیره می کند. همچنین از افزایش اندازه فایل که در مورد glTF اتفاق می افتد جلوگیری می کند. فرمت فایل GLB منجر به اندازه فایل فشرده، بارگذاری سریع، نمایش کامل صحنه سه بعدی و توسعه پذیری برای توسعه بیشتر می شود. این قالب از مدل/gltf-binary به عنوان نوع MIME استفاده می کند.
فرمت فایل GLB - اطلاعات بیشتر
روشهای تحویل محتوا که توسط glTF استفاده میشود منجر به پردازش اضافی برای رمزگشایی دادههای باینری کدگذاری شده پایه ۶۴ میشود و همچنین اندازه فایل را تا ۳۳ درصد افزایش میدهد. این روش های تحویل، که به شکل گیری فرمت فایل GLB کمک کردند، عبارتند از:
glTF JSON به داده های باینری خارجی (هندسه، فریم های کلیدی، پوسته ها) و تصاویر اشاره می کند.
glTF JSON داده های باینری کدگذاری شده با base64 و تصاویر را با استفاده از URI های داده به صورت درون خطی جاسازی می کند.
GLB به عنوان یک فرمت کانتینری به عنوان فرمت فایل باینری برای نمایش دارایی glTF در یک حباب باینری معرفی شد تا از مشکلات ناشی از glTF جلوگیری شود. فرمت فایل GLB specifications باید برای اجرای هر خواننده/نویسنده مشابه برای توسعه برنامهها ارجاع داده شود.
ساختار فایل GLB
فرمت فایل GLB مبتنی بر اندیان کوچک است و ساختار آن نشان می دهد که شامل موارد زیر است:
یک مقدمه 12 بایتی با عنوان سرصفحه.
یک یا چند قطعه که حاوی محتوای JSON و دادههای باینری است.
سربرگ GLB
هدر فرمت فایل GLB از سه ورودی 4 بایتی تشکیل شده است:
uint32 magic - magic برابر با 0x46546C67 است. این رشته ASCII glTF است و می تواند برای شناسایی داده ها به عنوان glTF باینری استفاده شود
نسخه uint32 - نسخه فرمت ظرف باینری glTF را نشان می دهد
طول uin32 - طول کل GlTF باینری، از جمله سرصفحه و همه تکه ها در بایت
تکه ها
هر تکه در یک فایل GLB ساختار زیر را دارد:
uint32 | uint32 | ابایت[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- طول chunkData بر حسب بایتchunkType
- نشان می دهد که نوع قطعه را نشان می دهد«chunkData» - بار دودویی تکه
که در آن انواع تکه عبارتند از:
# | نوع تکه | ASCII | توضیحات | رویدادها |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | محتوای JSON ساختاریافته | 1 |
2. | 0x004E4942 | BIN | بافر باینری | 0 یا 1 |
ابتدا و انتهای هر قطعه باید با مرز 4 بایت تراز باشد و برای این منظور باید از padding استفاده شود.
محتوای JSON ساختاریافته
این باید اولین تکه دارایی باینری glTF باشد و پیاده سازی را قادر می سازد تا به تدریج منابع را از تکه های بعدی بازیابی کند. این همچنین قابلیت خواندن تنها یک زیرمجموعه منتخب از منابع از یک دارایی GlTF باینری مانند درشت ترین LOD یک مش را فراهم می کند. برای برآورده کردن الزامات تراز، این تکه باید با کاراکترهای Space دنباله دار (0x20) پر شود.
بافر باینری
این قطعه حاوی بار باینری برای هندسه، فریم های کلیدی انیمیشن، پوسته ها و تصاویر است. باید دومین تکه از دارایی باینری glTF باشد و باید با صفرهای انتهایی (0x00) پر شود تا الزامات تراز را برآورده کند.