מהו קובץ GLTF?
glTF (GL Transmission Format) הוא פורמט קובץ תלת מימדי המאחסן מידע על מודל תלת מימד בפורמט JSON. השימוש ב-JSON ממזער הן את הגודל של נכסי תלת-ממד והן את עיבוד זמן הריצה הדרוש כדי לפרוק ולהשתמש בנכסים אלה. הוא אומץ לשידור וטעינה יעילים של סצנות ודגמים תלת מימדיים על ידי יישומים. glTF פותחה על ידי קבוצת העבודה של קבוצת Khronos 3D Formats ומתוארת גם כ-JPEG של 3D על ידי יוצריה.
פורמט קובץ GLTF מגדיר פורמט פרסום נפוץ להרחבה עבור כלים ושירותי תוכן תלת-ממדיים, המייעל את זרימות העבודה של הכתיבה ומאפשר שימוש הדדי בתוכן בכל התעשייה. הכוונה מאחורי יצירת פורמט הקובץ glTF הייתה להגדיר פורמט פרסום נפוץ להרחבה עבור כלים ושירותים של תוכן תלת-ממדיים שאמור לייעל את זרימות העבודה של הכתיבה ולאפשר שימוש הדדי בתוכן בכל התעשייה. זה ממזער את עיבוד זמן הריצה על ידי יישומים המשתמשים ב-WebGL וממשקי API אחרים.
היסטוריה קצרה של קובץ GLTF
המפרט הראשון של פורמט קובץ glTF 1.0 הוכרז באוקטובר 2015. זה הגיע כסדרה של מאמצים שהחלו במרץ 2012 על ידי Khronos. מטרת המאמצים הללו הייתה להעריך את ההזדמנויות סביב המשיכה של WebGL. כתוצאה מכך, ההדגמה הראשונה של פורמט glTF, המבוססת על פורמט JSON, הוצגה ב-WebGl meetup בשנת 2012. הפורמט אומץ על ידי מספר חברות מעת לעת כולל Cesium, 3D Tiles, Oculus, Microsoft, Archilogic ואחרות.
glTF 2.0 פורסם ב-5 ביוני 2017 בכנס Web3D 2017. ישנה רשימה ארוכה של חברות שאימצו את פורמט הקובץ glTF לאחר מכן.
פורמט קובץ GLTF
מפרטי פורמט הקובץ עבור glTF 2.0 זמינים מקוון לעיון ויש לעיין בהם בכל יישום הקשור לקריאה/כתיבה לתמיכה ב- פורמט קובץ glTF.
glTF מגדיר נכסים כקובצי JSON עם נתונים חיצוניים תומכים. הוא מייצג מודלים תלת מימדיים בעזרת:
- תיאור הסצנה המלא הכלול בקובץ .glTF בפורמט JSON הכולל מידע על היררכיית צמתים, חומרים, מצלמות, כמו גם מידע מתאר עבור רשתות, אנימציות ומבנים אחרים
- קבצים בינאריים (.bin) המכילים נתוני גיאומטריה והנפשה, ונתונים אחרים מבוססי חיץ
- קובצי תמונה (.jpg, .png) עבור טקסטורות
כל הנכסים החיצוניים, כגון תמונות, מאוחסנים בקבצים חיצוניים שהפניה אליהם מתבצעת באמצעות URI. URIs אלה מאוחסנים לצד מיכל ה-GLB או מוטמעים ישירות ב-JSON באמצעות URI נתונים. כל glTF חוקי חייב לציין את הגרסה שלו.
glTF תוכנן להשגת גודל קובץ קטן, טעינה מהירה, ייצוג מלא של סצנה תלת-ממדית ויכולת הרחבה. מטרות עיצוב ייחודיות אלו הן הסיבות העיקריות לפופולריות של פורמט קובץ glTF בתחום התלת-ממד. להלן סוגי הפנטומימה הנתמכים על ידי פורמט הקובץ glTF עבור סוגי קבצים שונים:
- קבצי .gltf משתמשים ב-model/gltf+json
- קבצי .bin משתמשים ביישום/אוקטט-סטרים
- קבצי מרקם משתמשים בסוג התמונה/* הרשמי בהתבסס על פורמט התמונה הספציפי. עבור תאימות עם דפדפני אינטרנט מודרניים, הפורמטים הבאים של התמונה נתמכים: image/jpeg, image/png.
קידוד JSON
glTF מטיל הגבלות נוספות על פורמט קובץ JSON
כדי לפשט את היישום בצד הלקוח, ל-glTF יש הגבלות נוספות על פורמט וקידוד JSON.
- JSON חייב להשתמש בקידוד UTF-8 ללא BOM.
- כל המחרוזות המוגדרות במפרט זה (שמות מאפיינים, שמות) משתמשות רק בערכת תווים ASCII ויש לכתוב אותן כטקסט רגיל, למשל, “buffer” במקום
"\u0062\u0075\u0066\u0066\u0065\u0072"
. - שמות (מפתחות) בתוך אובייקטי JSON חייבים להיות ייחודיים, כלומר, מפתחות כפולים אינם מותרים.
כתובות URI
ניתן להפנות למאגרים ולמשאבי תמונה באמצעות URIs. שני סוגי URI הבאים חייבים להיות נתמכים על ידי הלקוחות.
URI נתונים: URI הנתונים הם כפי שהוגדרו על ידי RFC 2397 ומשמשים את glTF להטמעת משאבים ב-JSON.
נתיבי URI יחסיים: או path-noscheme כפי שהוגדרו על ידי RFC 3986, סעיף 4.2 - ללא סכמה, סמכות או פרמטרים. תווים שמורים חייבים להיות מקודדים באחוזים, לפי RFC 3986, סעיף 2.2.