glTF בינארי (.glb)
ISO/IEC תקןפורמט Binary glTF (בקיצור GLB) הוא מארז בינארי עצמאי וקובץ יחיד של תקן glTF 2.0, המכונה בצדק 'ה-JPEG של תלת-הממד' עבור גרפיקת תלת-ממד מבוססת אינטרנט, מציאות רבודה (AR) ומנועי משחקים בזמן אמת.
המר GLTF ל-GLB
ממיר חינמי מ-GLTF ל-GLB פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי GLB על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי GLB על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
67 6C 54 46ייצוג ASCII: glTF
תקינה: ISO/IEC 12113:2022 / Khronos Open Standard
מפרט טכני
| מבנה המכולה | כותרת בינארית של 12 בתים ('glTF', גרסה ואורך), ואחריה מקטע JSON (CHUNK 0) ומקטע מאגר בינארי (CHUNK 1) |
| דחיסה | דחיסת גיאומטריית רשת באמצעות DRACO, KHR_texture_basisu (מרקמי KTX2/Basis Universal ל-GPU) ו-ExtMeshopt |
| סדר בתים (Endianness) | סדר בתים Little-Endian (תקן Intel x86 / WebGL) |
| מרחבי צבע | מרקמי sRGB, ערוצי roughness/metallic ליניאריים של PBR |
| ערוצים ומבנה | חומרי PBR (Metallic-Roughness), רשתות עם שלד, יעדי morph, אנימציות, מצלמות ותאורה |
| ממדים מרביים | מספר הקודקודים והמשולשים אינו מוגבל (תומך במודלים של כמה גיגה-בתים) |
| שקיפות | כיסוי אלפא (MASK), מיזוג אלפא (BLEND) והעברה נפחית |
| הזרמה ופרוגרסיביות | קובץ יחיד המכיל את כל הנתונים, עם מקטעים בינאריים שתוכנות יכולות לנתח ולהעלות למאגרי GPU |
מטריצת השוואה טכנית: GLB מול מתחרים
| תכונה טכנית | GLB (נוכחי) | GLTF | USDZ | FBX |
|---|---|---|---|---|
| מודל אריזה | קובץ בינארי עצמאי יחיד | JSON + קבצי .bin חיצוניים ומרקמים | ארכיון ZIP של סכמות USD ומרקמים | פורמט בינארי/ASCII קנייני |
| תקן אינטרנט ומציאות רבודה (AR) | התמיכה משתנה בין תוכנות. | התמיכה משתנה בין תוכנות. | תקן מציאות רבודה עבור iOS Quick Look של אפל | תקן ייבוא למנועי משחקים שולחניים |
| מודל חומרים | PBR תקני מסוג Metallic-Roughness של glTF | PBR תקני של glTF | התמיכה משתנה בין תוכנות. | צלליות (Shaders) קנייניות מסוג Phong/Lambert/PBR |
| ביצועי קריאה בכרטיס המסך (GPU) | מיידי (מיפוי זיכרון ישיר) | מהיר (ריבוי בקשות רשת) | מהיר (פריטי ZIP בלתי דחוסים) | איטי (דורש ניתוח מורכב) |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
מודל תלת-ממד מוצג ללא מרקמים או עם משטחים שחורים אטומים.
גורם שורש: נתוני מרקם מוטמעים פגומים או הפניה חסרה למרקם מסוג PBR metallic-roughness.
שחזור: בדוק ותקנו את היסטי הבייטים (Offsets) באמצעות כלי ההמרה 3D Converter של File2File.app או בעזרת glTF-Transform.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
מנתחי קוד (Parsers) של GLB מעבדים מקטעי טקסט מסוג JSON בשילוב עם באפרים בינאריים שרירותיים העלולים לגרום לגלישת באפר (Buffer Overflow) אם אורכי הבאפר אינם תואמים.
ווקטורי תקיפה ידועים
- קריאת יתר של באפר (Buffer over-read) כאשר ערכי ה-byteOffset + byteLength של ה-bufferView חורגים מאורך המקטע הבינארי.
- קריאת אינדקס קודקודים מחוץ לגבולות (Out-of-bounds) במהלך ביצוע פקודת drawElements ב-WebGL.
- מניעת שירות (DoS) באמצעות לולאות פריסת דחיסה פתולוגיות של Draco.
שיטות מומלצות להגנה: ודא בקפדנות שכל טווחי הבייטים של accessor ושל bufferView נמצאים בתוך גבולות המקטע הבינארי המוצהרים.
היסטוריה ואבני דרך
יתרונות מרכזיים
- עצמאי לחלוטין: מארז המשלב גיאומטריית תלת-ממד, חומרי PBR, מרקמים (PNG / JPEG / KTX2) ואנימציות שלדים בקובץ אחד.
- מקטעים בינאריים יכולים לצמצם את העבודה הנדרשת לטעינת נתוני הסצנה, אך היישומים עדיין מנתחים את המטא-נתונים של glTF ומכינים משאבים לצינור העיבוד שלהם.
- התקן הבלתי מעורער עבור WebGL, WebGPU, תצוגות מקדימות של מוצרים בתלת-ממד במסחר אלקטרוני ומציאות רבודה בנייד.
מגבלות טכניות וחסרונות
- האופי הבינארי שלה מקשה על בדיקה או עריכה ידנית של טקסט ללא כלי תלת-ממד ייעודיים.
- דורש ספריות פירוק של Draco או Basis Universal בעת שימוש בהרחבות דחיסה מתקדמות.
- פלטפורמות של אפל מעדיפות את USDZ עבור תצוגת מציאות רבודה מקומית ב-iOS Quick Look, מה שמחייב המרת פורמט מ-GLB.
עובדות טכניות מעניינות
- ארבעת הבייטים הראשונים בכל קובץ GLB הם 0x67 0x6C 0x54 0x46, המרכיבים יחד את המילה 'glTF' בקידוד ASCII.
- כשאתה צופה בנעל תלת-ממדית בדפדפן בטלפון חכם, סביר מאוד שאתה רואה מודל GLB אינטראקטיבי.
- GLB תוכנן כך שחומרה גרפית תוכל לקרוא מאגרי קודקודים ישירות מהדיסק לזיכרון VRAM ללא המרה.
שאלות טכניות נפוצות
מה ההבדל בין glTF ל-GLB?
glTF הוא קובץ JSON המפנה לקובצי גיאומטריה חיצוניים מסוג .bin ולקובצי תמונה נפרדים המשמשים כמרקמים. GLB לוקח את כל החבילה הזו ואורז אותה בקובץ בינארי יחיד וקומפקטי.
איך אוכל להמיר GLB ל-USDZ עבור מציאות רבודה (AR) של Apple?
ניתן להמיר מודלים של GLB לקובצי USDZ המוכנים ל-Apple בלחיצת כפתור אחת באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.
האם אני יכול לפתוח קובצי GLB ב-Blender?
כן. Blender כולל מייבא ומייצא מובנים ובעלי ביצועים גבוהים עבור glTF/GLB, המוטמעים ישירות בתוכנה.