GL Transmission Format
ملف glTF يحمل نموذجاً ثلاثي الأبعاد كاملاً — الشكل، المواد، الحركات، الكاميرات — في ملف JSON إلى جانب ملفّات ثنائية. جمَّدت منظّمة Khronos الإصدار 2.0 من المواصفات عام 2017، وأكثر من 40 امتداداً رسمياً تغطّي كل تطوُّر لاحق.
تحويل glTF غير متاح حالياً في FileDex. استخدم أوامر CLI في المرجع التقني أدناه للتحويل بين صيغ النماذج ثلاثية الأبعاد عبر Blender أو gltf-pipeline.
أسئلة شائعة
كيف أفتح ملف glTF أو GLB؟
استخدم عارض glTF المجّاني عبر الإنترنت. أو افتح الملف في Blender عبر قائمة الاستيراد. محرّر VS Code مع إضافة glTF Tools يُتيح معاينة النموذج وتصفّح البيان جنباً إلى جنب. للفحص السريع، محرّر Three.js عبر المتصفّح يُحمّل ملفّات GLB بالسحب والإفلات مباشرةً.
ما الفرق بين glTF و GLB؟
glTF يستخدم بيان JSON في ملف منفصل، مع ملفّات .bin منفصلة للبيانات الثنائية وصور خارجية للنسج. GLB يجمع كلّ شيء في حاوية ثنائية واحدة. بنية البيانات الداخلية متطابقة في الحالتين. GLB مُفضَّل للتوزيع لأنه يتجنَّب مشاكل الملفّات المفقودة، بينما glTF المنفصل أسهل للتحرير والتحكّم في الإصدار في مراحل التطوير.
هل يدعم glTF الحركات والتحريك الهيكلي؟
نعم، glTF 2.0 يدعم أصلياً الحركة الهيكلية، ومُرشِّحات morph، والحركة بإطارات المفاتيح. الحركات تُشير إلى قنوات تستهدف خصائص عقدة معيَّنة (الإزاحة، الدوران، الحجم، أو أوزان morph). كائنات Skin تُعرِّف تسلسل المفاصل مع مصفوفات ربط عكسية للتشوّه الهيكلي الواقعي — نفس التقنية المستخدمة في الألعاب الحديثة.
لماذا يُسمّى glTF بـ "JPEG ثلاثي الأبعاد"؟
الاسم يعكس هدف التصميم كصيغة نقل عالمية، تماماً كما وحَّد JPEG تبادل الصور. تقسيم البيانات إلى JSON خفيف وبيانات ثنائية ثقيلة يسمح بالتحميل التدريجي: العارض يُحلِّل شجرة المشهد أوّلاً، ثم يُدفِّق الأشكال والنسج عند الطلب. الاعتماد الواسع في المتصفّحات ومحرّكات الألعاب ومنصّات الواقع المعزَّز يُعزِّز المقارنة.
كيف تستخدم مشاريع رؤية السعودية 2030 تقنية glTF؟
glTF هو المعيار المعتمد لرقمنة التراث والسياحة السعودية. موقع مدائن صالح الأثري في العُلا مُسح ثلاثي الأبعاد ونُشر كنموذج glTF لجولات افتراضية عبر الويب. حيّ الطريف التراثي العالمي في الدرعية يحظى بالمعاملة نفسها. نماذج NEOM المعمارية تُشحن كملفّات GLB عبر مواقع المشروع. منصّات التجارة الإلكترونية السعودية تستخدم مكوِّن `<model-viewer>` مع ملفّات GLB لمعاينات المنتجات التفاعلية.
ما يميز .GLTF
تصوَّر مواصفة ملف مُصمَّمة خصّيصاً للويب — للمتصفحات والهواتف وأجهزة الواقع المعزَّز. مواصفة خفيفة، واضحة، وسريعة التحميل. هذه هي قصة glTF، التنسيق الذي طوّرته منظّمة Khronos بين 2012 و2017 ليكون صيغة النقل القياسية للنماذج ثلاثية الأبعاد.
اكتشف التفاصيل التقنية
STL يحمل مثلّثات. glTF يحمل عالماً كاملاً. ما الفرق؟
ملف STL يحمل مجموعة مثلّثات عارية — نقاط وأسطح فقط. ملف glTF يحمل مشهداً كاملاً: الأشكال الهندسية، لكن أيضاً المواد التي تُغطّيها، الحركات التي تُحرِّكها، الكاميرات التي تنظر إليها، والأضواء التي تُنيرها. هذا التمييز مهمّ.
بنية glTF تُشبه بنية صفحة ويب من الداخل. قسم JSON رئيسي يصف شجرة المشهد — عقد متفرّعة، كلّ عقدة تحمل موقعاً ودوراناً وحجماً، وتُشير إلى شكل أو كاميرا أو ضوء. الأشكال تُشير إلى ما يُسمّى "accessors" — نوافذ تصف بيانات الرؤوس الخام في مخزن ثنائي منفصل.
فصل بيانات المشهد عن البيانات الثنائية الثقيلة هو القرار المعماري الأهمّ. المتصفّح يقرأ JSON الصغير فوراً، يفهم بنية المشهد، ويبدأ تخصيص ذاكرة GPU قبل حتى أن تنتهي الملفّات الثنائية من التنزيل. عند وصول البيانات الخام، العارض يعرف أين تذهب وبأي صيغة. لا تحليل بنيوي معقّد — فقط نسخ مباشر إلى الذاكرة.
هذا هو سبب تسمية glTF بـ "JPEG ثلاثي الأبعاد". JPEG فصل البيانات الوصفية عن بيانات الصورة لتحميل فوري للمعاينات؛ glTF يفصل بنية المشهد عن هندسة الأشكال للعرض الفوري في المتصفح.
مشهد واحد، تنسيقان مختلفان. متى تستخدم .gltf ومتى .glb؟
glTF يأتي بنسختين مختلفتين. الأولى امتدادها .gltf وهي نصّ JSON يُشير إلى ملفات .bin منفصلة للبيانات الثنائية، وملفات .png أو .jpg للنسج والألوان. النسخة الثانية امتدادها .glb وهي حاوية ثنائية واحدة تجمع كلّ شيء.
ملف .glb يبدأ بـ 12 بايتاً مميَّزة عند الإزاحة 0: التوقيع السحري 67 6C 54 46 (نصّ ASCII glTF)، يليه 4 بايت إصدار (القيمة 2 حالياً)، ثم 4 بايت لطول الملف الإجمالي. بعد هذه الترويسة تأتي قطعتان. القطعة الأولى تحمل JSON الذي يصف المشهد، ونوعها 0x4E4F534A (ASCII JSON). القطعة الثانية تحمل البيانات الثنائية، ونوعها 0x004E4942 (ASCII BIN\0). كلّ قطعة تبدأ بـ 4 بايت تُحدِّد الطول، ثم 4 بايت تُحدِّد النوع، ثم المحتوى.
كلّ نسخة من glTF لها استخدامها. نسخة .gltf مع ملفات منفصلة مناسبة لمرحلة التأليف والتطوير — فنّان Blender يستطيع تعديل ملف JSON مباشرة، يُحدِّث نسيجاً معيَّناً، ويُقارن التغييرات في نظام التحكّم في الإصدارات. نسخة .glb مناسبة لمرحلة التوزيع — ملف واحد، بدون مخاطر ملفّات مفقودة، سهلة السحب والإفلات إلى تطبيق الواقع المعزَّز. معظم سلاسل إنتاج النماذج تستخدم .gltf داخلياً وتُصدِّر .glb للمستخدم النهائي.
التنسيق الأساسي لم يتغيَّر منذ 2017. كيف يعرض مواد حديثة؟
مادّة الكائن في glTF ليست لوناً بسيطاً. هي "وصفة عرض مبنيّة على الفيزياء" — مجموعة من القيم التي تصف كيف يتفاعل السطح مع الضوء. هذا النموذج يُسمّى PBR. اختصار لعرض مبنيّ على الفيزياء.
النموذج الأساسي في glTF 2.0 يُسمّى metallic-roughness ويتكوّن من: لون أساسي (RGB)، عامل معدنية بين 0 و1 يُحدِّد ما إذا كان السطح معدناً أم لا، عامل خشونة بين 0 و1 يُحدِّد مدى نعومة السطح، خريطة "normal" تضيف تفاصيل دقيقة للسطح، خريطة انسداد للظلال الصغيرة، وخريطة انبعاث للسطوح المضيئة ذاتياً. هذه الخمسة قيم تكفي لنمذجة 80 بالمئة من المواد الواقعية — خشب، بلاستيك، معدن مطليّ، نسيج.
الـ 20 بالمئة المتبقّية يُغطّيها نظام الامتدادات. منظّمة Khronos تُحافظ على أكثر من 40 امتداداً رسمياً، كلّها تبدأ بالبادئة KHR_. امتداد KHR_materials_clearcoat يُضيف طبقة لمعان ثانية لمحاكاة دهان السيارات أو طلاء الأظافر. KHR_materials_transmission يُعالج الزجاج والسوائل الشفّافة. KHR_materials_volume يُحاكي امتصاص الضوء في المواد شبه الشفّافة. KHR_materials_sheen يُعالج المخمل والأقمشة اللمّاعة. KHR_materials_iridescence يُعيد إنتاج قوس قزح فقاعة الصابون.
امتدادات الضغط تحلّ مشكلة مختلفة. امتداد ضغط Draco يُقلّص حجم بيانات الأشكال بنسبة 90 بالمئة أو أكثر باستخدام تقنيات تنبؤ ذكية. KHR_mesh_quantization يسمح لبيانات الرؤوس باستخدام أنواع عددية أصغر بدقة أقلّ.
قرار Khronos بتجميد مواصفات glTF 2.0 الأساسية منذ 2017 كان جريئاً. منذ ذلك الحين، كلّ ابتكارات العرض ثلاثي الأبعاد شُحنت كامتدادات فقط، والإصدار لم يتغيّر. العارضون الحديثون يدعمون glTF 2.0 الأساسي بالإضافة إلى أي امتدادات يختارونها، والمُصدِّرون يضمنون أن الباقي يتدهور بسلاسة إلى النموذج الأساسي.
وجِّه كاميرا هاتفك نحو رمز QR. نموذج ثلاثي الأبعاد يطفو في غرفتك. كيف؟
وجِّه كاميرا هاتفك نحو رمز QR في معرض منتج، وسيظهر نموذج ثلاثي الأبعاد يطفو في الغرفة. هذا النموذج هو glTF — حتى لو كنت تستخدم iPhone الذي يُحوِّله تلقائياً إلى USDZ.
شركة Google بنت منظومة الواقع المعزَّز حول glTF. على نظام Android، تطبيق مُدمَج يفتح ملفات GLB مباشرة من عناوين الويب. Google تُقدِّم مكوِّناً ويب يعرض نماذج تفاعلية بعلامة HTML واحدة، ويُفوِّض عرض الواقع المعزَّز إلى التطبيق نفسه. محرّكات الويب الثلاثة الأكبر — Three.js وBabylon.js وPlayCanvas — جميعها تدعم تحميل glTF كميزة أساسية. محرّكات الألعاب الكبرى وأدوات النمذجة الحديثة تُصدِّر إلى glTF للنشر على الويب. بينها Unreal وUnity وBlender.
نظام iOS له استثناء. عارض Apple يستخدم تنسيق USDZ هناك بدلاً من glTF. USDZ تنسيق من Apple مبنيّ على معيار Pixar. لكن حتى سلسلة إنتاج Apple تقبل glTF كمصدر. أدوات التحويل الحديثة تُحوِّل glTF إلى USDZ تلقائياً عند استهداف نظام iOS.
رؤية السعودية 2030 حوّلت glTF إلى وسيلة رسمية لحفظ التراث الرقمي. موقع مدائن صالح الأثري في العُلا مُسح بدقّة عالية ونُشر كنموذج glTF لجولات افتراضية عبر الويب. حيّ الطريف التراثي العالمي في الدرعية يحظى بالمعاملة نفسها. نماذج NEOM المعمارية تُشحن كملفات GLB عبر مواقع المشروع التسويقية. منصّات التجارة الإلكترونية السعودية (noon وAmazon.sa) تستخدم <model-viewer> لمعاينات المنتجات ثلاثية الأبعاد. الهيئة العامّة للألعاب السعودية تعمل مع محرّكَي Unity وUnreal، وكلاهما يُنتجان أصول GLB للألعاب والتجارب التفاعلية.
glTF أصبح بهدوء المعيار الثلاثي الأبعاد العابر للمنصّات الذي حلم به الويب منذ بداياته.
مقارنة .GLTF مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .GLTF vs .STL | مشهد كامل أم أشكال فقط ملف glTF يحمل مشهداً ثلاثي الأبعاد كاملاً: أشكال، مواد PBR، حركات، هياكل عظمية، كاميرات، أضواء. ملف STL يحمل مجموعة مثلّثات فقط — بدون مواد، بدون حركة، بدون أي مفهوم للمشهد. glTF للعرض التفاعلي؛ STL للطباعة ثلاثية الأبعاد. | GLTF أفضل |
| .GLTF vs .OBJ | المواد الحديثة والحركة glTF يفرض نموذج PBR metallic-roughness للمواد، ويدعم الحركات الهيكلية ومرشحات morph والحركة بإطارات مفاتيح. OBJ يُعرِّف الرؤوس والأعراف وإحداثيات النسج والأوجه فقط. glTF لسلاسل الإنتاج الحديثة؛ OBJ للأشكال الثابتة البسيطة. | GLTF أفضل |
| .GLTF vs .FBX | النقل أم التأليف glTF مُحسَّن للنقل وقت التشغيل — يُحلَّل مرّة، يُحمَّل إلى وحدة معالجة الرسوميات، يُعرض. FBX مُحسَّن لسلاسل التأليف ومشاركة الملفات بين أدوات النمذجة. الفنّانون يعملون بـ FBX؛ الموزِّعون يشحنون glTF. | تعادل |
| .GLTF vs .USDZ | الويب وAndroid مقابل Apple glTF معيار الويب وAndroid للواقع المعزَّز. USDZ هو تنسيق Apple Quick Look (معيار USD من Pixar داخل حاوية ZIP). كلاهما يصف مشاهد ثلاثية الأبعاد بطرق مختلفة لمنصّات مختلفة. معظم الشركات تُؤلِّف بـ glTF وتُحوِّل إلى USDZ عند استهداف iPhone. | تعادل |
المرجع التقني
- نوع MIME
model/gltf+json- المطوّر
- Khronos Group
- سنة التقديم
- 2015
- معيار مفتوح
- نعم — عرض المواصفات
البنية الثنائية
ملف .glb (glTF ثنائي) يبدأ بترويسة ثابتة طولها 12 بايت: أربع بايتات سحرية (`67 6C 54 46` = نصّ ASCII `glTF`)، أربع بايتات لرقم الإصدار (القيمة 2 حالياً، بترتيب صغير النهاية)، وأربع بايتات أخرى تُحدِّد الطول الإجمالي للملف. بعد الترويسة تأتي قطعتان، كلّ واحدة مسبوقة بأربع بايتات للطول وأربع للنوع. القطعة الأولى تحمل بيان JSON (نوعها `0x4E4F534A` = نصّ ASCII `JSON`)، وتحتوي على شجرة المشهد وتعريفات المواد والحركات وإعلانات accessor وbufferView. القطعة الثانية تحمل البيانات الثنائية (نوعها `0x004E4942` = نصّ ASCII `BIN\0`)، وتحتوي على بيانات الرؤوس والفهارس، وأحياناً النسج المضمَّنة.
| Offset | Length | Field | Example | Description |
|---|---|---|---|---|
0x00 | 4 بايت | التوقيع السحري | 67 6C 54 46 | نصّ ASCII `glTF` — يُحدِّد الملف كحاوية glTF ثنائية. موجود فقط في نسخة .glb؛ نسخة .gltf النصّية ليس لها توقيع سحري |
0x04 | 4 بايت | الإصدار | 02 00 00 00 | رقم إصدار glTF (عدد صحيح غير مُوقَّع، 32 بت، صغير النهاية). القيمة دائماً 2 منذ إصدار glTF 2.0 في يونيو 2017 |
0x08 | 4 بايت | الطول الإجمالي | variable | حجم الملف كاملاً بالبايت، بما في ذلك ترويسة 12 بايت. القرّاء يقرؤون هذه القيمة أوّلاً للتحقّق من اكتمال الملف قبل البدء بالتحليل |
0x0C | 4 بايت | طول القطعة الأولى | variable | حجم قطعة بيان JSON بالبايت، بدون احتساب ترويسة القطعة البالغة 8 بايت. تُستخدم لتحديد أين تنتهي JSON وأين تبدأ البيانات الثنائية |
0x10 | 4 بايت | نوع القطعة الأولى | 4A 53 4F 4E | نصّ ASCII `JSON` (نوع 0x4E4F534A). يُشير إلى أن القطعة التي تلي مباشرةً تحتوي على بيان JSON الذي يصف المشهد كاملاً |
after JSON | 8 بايت | ترويسة القطعة الثانية | len + 42 49 4E 00 | ترويسة قطعة البيانات الثنائية: 4 بايت طول + 4 بايت نوع `BIN\0` (0x004E4942). تحتوي بيانات الأشكال، الفهارس، إطارات الحركة الرئيسية، وأحياناً الصور المضمَّنة |
تحويل glTF غير متاح حالياً في FileDex. استخدم أوامر CLI في المرجع التقني أدناه للتحويل بين صيغ النماذج ثلاثية الأبعاد عبر Blender أو gltf-pipeline.
نقاط الضعف
- تحميل عناوين URI خارجية
- استنفاد الذاكرة عبر base64 مضمَّن
- فيض عدد صحيح في فكّ ضغط Draco
- استغلال إزاحة البايتات في accessor
الحماية: افتح ملفات glTF في عارضات ثلاثية الأبعاد موثوقة فقط. عطِّل حلّ عناوين URI الخارجية في المحلِّلات من جانب الخادم لمنع استغلال جلب الموارد. افرض حدوداً على ذاكرة فكّ ضغط Draco وتحقّق من حدود accessor قبل التحميل إلى وحدة الرسوميات. FileDex لا يحلل glTF — هذه الصفحة مرجع ثابت، لا رفع ملف.