מהו קובץ 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 בבלוב בינארי כדי למנוע את הבעיות הנגרמות על ידי glTF. פורמט קובץ GLB מפרטים יש להפנות לכל יישום קורא/כותב של אותו לפיתוח יישומים .
מבנה קובץ GLB
פורמט קובץ GLB מבוסס על little endian והמבנה שלו מראה שהוא מכיל:
- הקדמה של 12 בתים, שכותרתה הכותרת.
- נתח אחד או יותר שמכיל תוכן JSON ונתונים בינאריים.
כותרת GLB
כותרת פורמט הקובץ GLB מורכבת משלושה ערכים של 4 בתים:
- uint32 magic - קסם שווה ל-0x46546C67. זה glTF מחרוזת ASCII, וניתן להשתמש בו כדי לזהות נתונים כ-Binary glTF
- גירסת uint32 - מציינת את הגרסה של פורמט מיכל בינארי glTF
- אורך uin32 - האורך הכולל של glTF הבינארי, כולל Header וכל הנתחים בבתים
נתחים
לכל נתח בקובץ GLB יש את המבנה הבא:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- אורך chunkData בבתיםchunkType
- מציין מציין את סוג הנתחchunkData
- מטען בינארי של chunk
איפה סוגי הנתחים הם:
# | סוג נתח | ASCII | תיאור | התרחשויות |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | תוכן JSON מובנה | 1 |
2. | 0x004E4942 | BIN | מאגר בינארי | 0 או 1 |
ההתחלה והסוף של כל נתח חייבים להיות מיושרים לגבול של 4 בתים ויש להשתמש בריפוד למטרה זו.
תוכן JSON מובנה
זה אמור להיות החלק הראשון של נכס glTF בינארי ומאפשר ליישום לאחזר בהדרגה משאבים מהנתחים הבאים. זה גם מספק את היכולת לקרוא רק תת-קבוצת משאבים נבחרה מתוך נכס glTF בינארי כגון ה-LOD הגס ביותר של רשת. על מנת לעמוד בדרישות היישור, הנתח הזה חייב להיות מרופד בתווי שטח נגררים (0x20).
מאגר בינארי
נתח זה מכיל את המטען הבינארי עבור גיאומטריה, מסגרות מפתח אנימציה, סקינים ותמונות. זה צריך להיות החלק השני של נכס glTF הבינארי וחייב להיות מרופד באפסים נגררים (0x00) כדי לעמוד בדרישות היישור.