.GLTF GL Transmission Format
.gltf

GL Transmission Format

ملف glTF يحمل نموذجاً ثلاثي الأبعاد كاملاً — الشكل، المواد، الحركات، الكاميرات — في ملف JSON إلى جانب ملفّات ثنائية. جمَّدت منظّمة Khronos الإصدار 2.0 من المواصفات عام 2017، وأكثر من 40 امتداداً رسمياً تغطّي كل تطوُّر لاحق.

بنية الصيغة
glTF (67 6C 54 46)
JSON chunk
BIN chunk
accessor
Binaryبيانات وصفية
غير قابل للتحويل

تحويل 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

مُجمَّد منذ 2017
لم يحتج الإصدار الرئيسي للتغيير منذ 7 سنوات
Khronos أصدرت glTF 2.0 في يونيو 2017 ومنذ ذلك الحين لم تحتج لقفزة إصدار رئيسية. نظام الامتدادات تكفَّل بكلّ التطوّر — أكثر من 40 امتداداً رسمياً لمعالجة كلّ شيء من الزجاج إلى المخمل إلى الضغط الذكي. الاستقرار الذي نادراً ما يُرى في تنسيقات الويب.
12 بايت تُعرِّف الهوية
التوقيع السحري glTF ثمّ الإصدار ثمّ الطول
ملف .glb يبدأ دائماً بـ 12 بايتاً ثابتة: النصّ `glTF` بـ ASCII (67 6C 54 46)، ثمّ رقم الإصدار في 4 بايت، ثمّ طول الملف الكامل في 4 بايت أخرى. بعدها قطعتان: قطعة JSON تصف المشهد (نوعها 0x4E4F534A)، وقطعة ثنائية تحمل الرؤوس (نوعها 0x004E4942).
الواقع المعزَّز من رمز QR
Android وApple والويب — ثلاثة مسارات، تنسيق واحد
وجِّه كاميرا الهاتف نحو رمز QR في معرض منتج، وسيظهر النموذج ثلاثي الأبعاد في غرفتك. نظام Android يعرض glTF مباشرةً. نظام iOS يُحوِّله إلى USDZ تلقائياً. الويب يتولّاه مكوِّن من Google. ثلاثة طرق، تنسيق واحد.
نظام امتدادات ثريّ
أكثر من 40 امتداداً رسمياً
منظّمة Khronos تُدير أكثر من 40 امتداداً تبدأ كلّها بالبادئة KHR. امتدادات مثل clearcoat للمع، transmission للشفّافية، iridescence لقوس قزح. امتداد Draco للضغط يصل إلى 90 بالمئة. الامتدادات هي طريقة التطوّر الرسمية.

تصوَّر مواصفة ملف مُصمَّمة خصّيصاً للويب — للمتصفحات والهواتف وأجهزة الواقع المعزَّز. مواصفة خفيفة، واضحة، وسريعة التحميل. هذه هي قصة 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 مع الصيغ البديلة
المقارنة المعيار الفائز
.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`)، وتحتوي على بيانات الرؤوس والفهارس، وأحياناً النسج المضمَّنة.

OffsetLengthFieldExampleDescription
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). تحتوي بيانات الأشكال، الفهارس، إطارات الحركة الرئيسية، وأحياناً الصور المضمَّنة
2015منظّمة Khronos تُصدر glTF 1.0 — أوّل صيغة نقل GL مع تعريفات shader مخصَّصة2017glTF 2.0 يُطلَق في يونيو — يستبدل shaders المخصَّصة بنموذج مواد PBR metallic-roughness الحديث؛ لا يزال المعيار الحالي2019Blender 2.80 يُشحَن مع دعم أصلي لاستيراد وتصدير glTF — يُرسِّخ التنسيق كوسيلة تبادل أصول ثلاثية الأبعاد2019Google تُصدر Scene Viewer على Android ومكوِّن `<model-viewer>` للويب — الواقع المعزَّز يصل إلى الجماهير2021Apple Quick Look يقبل ملفّات glTF وGLB مع تحويل تلقائي إلى USDZ — الواقع المعزَّز على iPhone عبر مصدر glTF2022Khronos تعتمد امتدادَي KHR_materials_iridescence وKHR_materials_anisotropy — المواد المتقدّمة في العرض الفيزيائي تصل إلى الويب الاستهلاكي2024glTF 2.0 لا يزال المعيار الحالي — نظام الامتدادات أغنى عن قفزة إصدار رئيسية لأكثر من 7 سنوات
التحقّق من بنية النموذج بمدقّق Khronos الرسمي أخرى
npx gltf-validator model.glb --format json

الأمر يُشغِّل مدقِّق glTF الرسمي من Khronos عبر أداة npx، ويُنتِج تقريراً بتنسيق JSON يُبيِّن الأخطاء والتحذيرات والتلميحات. يكشف عن محاذاة خاطئة لـ accessor، مراجع مخازن مفقودة، ومشاكل توافق امتدادات — الخطوة الأولى في أي تحقيق.

تحويل ملف GLB إلى صيغة glTF + bin منفصلة أخرى
python3 -c "import pygltflib; g=pygltflib.GLTF2().load('model.glb'); g.save('model.gltf')"

الأمر يستخدم مكتبة pygltflib في Python لتحميل حاوية GLB موحَّدة وإعادة حفظها كملف glTF منفصل (نصّ JSON) مع ملف .bin للبيانات الثنائية. مفيد عند الحاجة لتحرير بيان المشهد بالنصّ، أو عند إضافة نموذج إلى نظام تحكّم إصدارات يدعم مقارنة النصوص.

تحويل glTF غير متاح حالياً في FileDex. استخدم أوامر CLI في المرجع التقني أدناه للتحويل بين صيغ النماذج ثلاثية الأبعاد عبر Blender أو gltf-pipeline.

منخفض

نقاط الضعف

  • تحميل عناوين URI خارجية
  • استنفاد الذاكرة عبر base64 مضمَّن
  • فيض عدد صحيح في فكّ ضغط Draco
  • استغلال إزاحة البايتات في accessor

الحماية: افتح ملفات glTF في عارضات ثلاثية الأبعاد موثوقة فقط. عطِّل حلّ عناوين URI الخارجية في المحلِّلات من جانب الخادم لمنع استغلال جلب الموارد. افرض حدوداً على ذاكرة فكّ ضغط Draco وتحقّق من حدود accessor قبل التحميل إلى وحدة الرسوميات. FileDex لا يحلل glTF — هذه الصفحة مرجع ثابت، لا رفع ملف.

Blender أداة
أداة النمذجة الأساسية — برنامج ثلاثي الأبعاد مجّاني مفتوح المصدر يدعم استيراد وتصدير glTF 2.0 منذ الإصدار 2.80 في يوليو 2019. المكان الذي يُؤلَّف فيه معظم ملفّات glTF في العالم
Three.js مكتبة
محرّك الويب الثلاثي الأبعاد الأكثر انتشاراً. دعم glTF عبر GLTFLoader ميزة أساسية؛ يُشغِّل ملايين صفحات الويب التي تعرض نماذج glTF تفاعلية في المتصفح
model-viewer مكتبة
مكوِّن ويب من Google يعرض نماذج glTF وGLB بعلامة HTML واحدة `<model-viewer>`. يُفوِّض عرض الواقع المعزَّز إلى Scene Viewer على Android، ويُحوِّل تلقائياً إلى USDZ على iPhone
Babylon.js مكتبة
محرّك ويب ثلاثي الأبعاد بديل من Microsoft. دعم glTF أصلي، نظام فيزياء قويّ، ومميّزات XR متقدّمة لتطبيقات الواقع المعزَّز والافتراضي في المتصفح
Godot Engine أداة
محرّك ألعاب مجّاني مفتوح المصدر يدعم استيراد glTF 2.0 أصلياً. يستورد المواد والحركات والهياكل العظمية مباشرةً إلى نظام المشاهد الخاصّ به دون تحويلات وسيطة
المدقِّق المرجعي من Khronos. يكشف محاذاة خاطئة لـ accessor، مراجع مخازن مفقودة، مشاكل توافق امتدادات، وانتهاكات مواصفات قبل الإنتاج. أداة ضبط الجودة الأولى
gltf-transform أداة
مجموعة أدوات تحسين من سطر الأوامر — ضغط Draco، تكميم الأشكال، تغيير حجم النسج، ترتيب المخازن. الأداة القياسية لشحن ملفّات GLB مُحسَّنة للإنتاج
تطبيق مرجعي لعرض PBR من Khronos. يعرض glTF باستخدام النموذج الأساسي في المواصفات — نقطة أساس لمقارنة العارضين الآخرين والتحقّق من التوافق