glTF JSON (.gltf)
ISO/IEC תקןפורמט העברת הנתונים התלת-ממדי (glTF) הוא מפרט JSON פתוח בתקן חופשי מתמלוגים, המיועד להעברה ולטעינה יעילות של סצנות ומודל תלת-ממד עבור WebGL, WebGPU, מנועי משחקים ויישומים מקומיים.
המר GLTF ל-GLB
ממיר חינמי מ-GLTF ל-GLB פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי glTF על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי glTF על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
7B 0A 20 20 22 61 73 73 65 74 22ייצוג ASCII: {\n "asset"
תקינה: ISO/IEC 12113:2022 / Khronos Open Standard
מפרט טכני
| מבנה המכולה | מסמך JSON קריא לאדם, המתאר גרף סצנה, צמתים, רשתות, accessors, חומרים ואנימציות, ומפנה למאגרים חיצוניים |
| דחיסה | מרקמים חיצוניים (PNG, JPEG, WebP) ודחיסת גיאומטריה אופציונלית באמצעות Draco |
| סדר בתים (Endianness) | טקסט JSON בקידוד UTF-8 (מפנה למאגרים .bin בסדר Little-Endian) |
| מרחבי צבע | צבע בסיס sRGB, ערכי roughness/metallic ליניאריים |
| ערוצים ומבנה | היררכיית סצנה, צמתים, מצלמות, חומרי PBR, שלדים ל-skinning ויעדי morph |
| ממדים מרביים | מרחב קואורדינטות ומספר משולשים ללא מגבלה קבועה |
| שקיפות | מצב אלפא BLEND, מצב MASK עם סף חיתוך, או העברה נפחית |
| הזרמה ופרוגרסיביות | glTF מפריד בין תיאורי הסצנה לבין נתוני הגיאומטריה והמרקמים הבינאריים, כך שמציג יכול לטעון רכיבים לפי הצורך במקום להמתין לקובץ יחיד ומונוליתי. |
מטריצת השוואה טכנית: glTF מול מתחרים
| תכונה טכנית | glTF (נוכחי) | GLB | OBJ | FBX |
|---|---|---|---|---|
| ארכיטקטורת קבצים | טקסט סצנה מסוג JSON + קובץ .bin נלווה / מרקמים | קובץ בינארי עצמאי יחיד | קודקודי טקסט פשוטים ופאות + .mtl | מכל בינארי/ASCII קנייני |
| תקני חומרי PBR | חומרי PBR מסוג Metallic-Roughness תקניים | חומרי PBR מסוג Metallic-Roughness תקניים | חומרי Phong/Lambert ישנים | חומרים קנייניים מותאמים אישית |
| תמיכה באנימציה | יצירת שלדים (Skinning) ויעדי מורפ (Morph targets) | יצירת שלדים (Skinning) ויעדי מורפ (Morph targets) | ללא (גיאומטריה סטטית בלבד) | אנימציה מורכבת ועצמות |
| ביצועי זמן אמת | ממוטב עבור WebGL ומנועי רינדור בזמן אמת | ממוטב עבור WebGL ומנועים בזמן אמת | דורש ניתוח ובנייה מחדש איטיים | דורש ניתוח מורכב של ערכת פיתוח שולחנית (SDK) |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
שגיאת מנוע תלת-ממד: 'Failed to load buffer: URI not found'.
גורם שורש: קובץ הבינארי .bin הנלווה או תמונות המרקם לא הועלו יחד עם קובץ ה-.gltf.
שחזור: ארזו את כל הקבצים הנלווים יחד או המירו ישירות לקובץ GLB יחיד באמצעות File2File.app.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
קובצי JSON של glTF מפנים לכתובות URI חיצוניות (כתובות URI של נתונים או כתובות אתר מרוחקות) העלולות לעורר זיוף בקשות בצד השרת (SSRF) או זליגת נתיבים (Path Traversal).
ווקטורי תקיפה ידועים
- זליגת נתיבים באמצעות כתובות URI יחסיות של באפר (למשל: 'uri: ../../../etc/passwd').
- התקפת SSRF באמצעות שליפת באפרי רשת מרוחקים במחוללי תמונות ממוזערות תלת-ממדיות בצד השרת.
- מניעת שירות (DoS) באמצעות מחזורים רקורסיביים ופגומים בהיררכיית הצמתים.
שיטות מומלצות להגנה: אל תאפשרו כתובות URL מרוחקות ונרמלו את כל נתיבי ה-URI של המאגרים המקומיים לפני הטענה.
היסטוריה ואבני דרך
יתרונות מרכזיים
- מבנה JSON קריא לבני אדם המאפשר עריכה פרוגרמטית, כתיבת תסריטים לצינור עיבוד (Pipeline), ובדיקה ויזואלית.
- עיצוב מודולרי: מפריד בין מטא-דאטה קל משקל של הסצנה לבין גיאומטריה בינארית כבדה (קובצי .bin) ומרקמים.
- חומרי PBR יכולים לשפר עקביות, אך התוצאה תלויה במנוע הרינדור, בתאורה ובהגדרות.
מגבלות טכניות וחסרונות
- מורכבות של מספר קבצים: שיתוף מודל מחייב דחיסה ל-ZIP או אריזה משותפת של קובצי ה-.gltf, ה-.bin ומרקמי התמונות יחד.
- התחלת טעינה ראשונית ברשת איטית במעט בהשוואה לקובץ GLB בודד, עקב הצורך במספר בקשות HTTP.
- תלויות בנתיבים יחסיים עלולות להיפגע אם קבצי המרקם הנלווים משנים את שמם או מועברים למיקום אחר.
עובדות טכניות מעניינות
- הכינוי של glTF הוא 'ה-JPEG של תלת-הממד', מכיוון שהוא מתמקד בהעברה ובהצגה בזמן ריצה ולא ביצירת נכסים.
- קבוצת Khronos הציגה את glTF כדי לפשט את העברת נכסי התלת-ממד עבור יישומי אינטרנט וניידים.
- נאס"א מספקת מודלים תלת-ממדיים של רכבי מאדים (Rovers), לווינים ואסטרונאוטים להורדה ציבורית בפורמט glTF.
שאלות טכניות נפוצות
למה קובץ ה-glTF שלי חסר צבעים או צורות?
קובץ .gltf מכיל רק את הוראות הסצנה בפורמט JSON. הוא נסמך על קובצי .bin נלווים עבור הצורות התלת-ממדיות ועל קובצי .png/.jpg עבור הצבעים. ודא שכל הקבצים הנלווים נמצאים באותה תיקיה.
איך אני הופך קובץ glTF לקובץ GLB יחיד?
העלה את קובץ ה-.gltf שלך ואת קובצי ה-.bin והמרקם הנלווים אליו ל-File2File.app כדי למזג אותם מיד לקובץ .glb יחיד המכיל הכול.
אילו תוכנות תומכות ב-glTF?
Blender, Three.js, Babylon.js, Unity, Unreal Engine, Godot ו-Windows 3D Viewer תומכים ב-glTF ישר מהקופסה.
זוגות המרה קשורים ל-glTF
המרת נכסי glTF JSON למכלי glTF בינארי מאגדת מניפסטים נפרדים של טקסט, באפרים בינאריים ומרקמים לקובץ יחיד עבור אספקה מהירה יותר באינטרנט.
המרת GLB ל-GLTF מפרקת קופסת אחסון בינארית יחידה לקובצי טקסט ונכסים נפרדים, כך שמפתחים יכולים לערוך בקלות טקסטורות וקוד גיאומטריה תלת-ממדית.
המרת קובצי גיאומטריה מסוג Wavefront OBJ למבני glTF JSON מעדכנת מודלים תלת-ממדיים סטטיים לנכסים מוכנים לווב הנטענים באופן מיידי בתוך דפדפני אינטרנט רגילים.