تم التحديث 13 سبتمبر 2026
ما يحتفظ به التحويل ثلاثي الأبعاد وكم يكلف
تحويل شبكة ليس مجانياً ولا هو عملية بدون خسائر. GLB و glTF يحتفظان بكل شيء. OBJ يحتفظ بالأشياء المنفصلة وأسماء المواد الخاصة بها، لكنه يلغي اللون حسب الرأس. STL يحتفظ بالمثلثات فقط. PLY يحتفظ باللون حسب الرأس، لكنه يسطح المشهد في شبكة واحدة. USDZ احتفظ بالعنصرين وUV، لكنه فقد اللون حسب الرأس وأسماء المواد عند إعادة قراءته، ويكتب ملف zip لـ USDA. القيم أدناه تم قياسها، وليست مقدرة.
كل قيمة في هذه الصفحة مستخرجة من تنفيذ نفس المحول الذي يستخدمه هذا الموقع، مع ملفات حقيقية، وقراءة الخصائص مباشرة من البايتات التي كتبها. تم قياسها باستخدام 13 سبتمبر 2026 three.js r179. الطريقة موجودة في نهاية الصفحة والنص البرمجي موجود في المستودع.

ماذا يحتفظ كل تنسيق؟#
تم تحويل مشهد مرجعي يحتوي على مكعبين بأسماء مختلفة، كل منهما بمعدنه الخاص المسمى، اللون حسب الرؤوس، إحداثيات UV والنتائج الطبيعية، إلى الوجهات الستة. عاد GLB و glTF مكتملين. جميع التنسيقات الأخرى فقدت شيئًا، وكل منها فقد شيئًا مختلفًا.
| الوجهة | جسمان | إحداثيات UV | لون حسب الرأس | أسماء المواد | عدد الرؤوس |
|---|---|---|---|---|---|
| GLB | يتم الاحتفاظ بهم 2 | يتم الاحتفاظ به | يتم الاحتفاظ به | يتم الاحتفاظ به | 48 الرؤوس |
| glTF | يتم الاحتفاظ بهم 2 | يتم الاحتفاظ به | يتم الاحتفاظ به | يتم الاحتفاظ به | 48 الرؤوس |
| OBJ | يتم الاحتفاظ بهم 2 | يتم الاحتفاظ به | يُفقد | يتم الاحتفاظ به | 72 الرؤوس |
| STL | مُدمج في 1 | يُفقد | يُفقد | يُفقد | 72 الرؤوس |
| PLY | مُدمج في 1 | يتم الاحتفاظ به | يتم الاحتفاظ به | يُفقد | 48 الرؤوس |
| USDZ | يتم الاحتفاظ بهم 2 | يتم الاحتفاظ به | يُفقد | يُفقد | 72 الرؤوس |
لماذا يقوم STL و PLY بدمج المشهد في شبكة واحدة؟#
لا يحتوي أي من التنسيقين على رسم بياني للمشهد. يمكن لـ GLB و glTF و OBJ وصف العديد من الأجسام المسماة في نفس الملف؛ يصف STL صلبًا واحدًا و PLY قائمة واحدة من العناصر، لذا يصل المكعبان كشبكة واحدة ولا توجد طريقة لفصلهما مرة أخرى.
إنها الخسارة التي تثير الدهشة أكثر، لأنها غير مرئية. النموذج المحول يبدو مطابقًا تمامًا في عارض. فقط عندما تحاول التحديد، أو تغيير المادة، أو تحريك أحد أجزائه تكتشف أن الأجزاء لم تعد موجودة.
إذا كان النموذج يجب أن يظل قابلاً للفصل، يجب أن يكون المصير GLB أو glTF أو OBJ. إذا ذهب إلى آلة تغليف أو إلى طباعة بمادة واحدة، فإن الدمج لا يكلفك شيئًا.
كم يكبر الملف؟#
أكثر مما يتوقعه معظم الناس. في شبكة تم إنشاؤها فعليًا، احتل OBJ 5.6 مرة ما كان يشغله GLB الأصلي، و PLY 1.4 مرة. كلاهما يحملان نفس الهندسة.
| التحويل | الأصل | النتيجة | النسبة | الرؤوس المكتوبة |
|---|---|---|---|---|
| mug.glb ا GLB | 880 KB | 1,173 KB | 1.3x | 25,000 |
| mug.glb ا glTF | 880 KB | 1,564 KB | 1.8x | 25,000 |
| mug.glb ا OBJ | 880 KB | 4,928 KB | 5.6x | 150,000 |
| mug.glb ا STL | 880 KB | 2,441 KB | 2.8x | 150,000 |
| mug.glb ا PLY | 880 KB | 1,221 KB | 1.4x | 25,000 |
| mug.glb ا USDZ | 880 KB | 2,927 KB | 3.3x | 150,000 |
| lion.glb ا GLB | 8,768 KB | 11,690 KB | 1.3x | 249,369 |
| lion.glb ا glTF | 8,768 KB | 15,587 KB | 1.8x | 249,369 |
| lion.glb ا OBJ | 8,768 KB | 51,880 KB | 5.9x | 1,496,202 |
| lion.glb ا STL | 8,768 KB | 24,352 KB | 2.8x | 1,496,202 |
| lion.glb ا PLY | 8,768 KB | 12,176 KB | 1.4x | 249,369 |
| lion.glb ا USDZ | 8,768 KB | 30,487 KB | 3.5x | 1,496,202 |
لماذا يقوم OBJ و STL بمضاعفة عدد الرؤوس؟#
لأنه لا يشترك أي منهما في رؤوس بين المثلثات. تحافظ الشبكة المفهرسة بشكل جيد على كل زاوية مرة واحدة فقط وتُشير إليها من جميع المثلثات التي تلمسها؛ OBJ و STL، كما هي مكتوبة هنا، يحفظان بشكل منفصل الثلاث زوايا لكل مثلث. في الاختبار مع lion.glb، حول ذلك 249,369 الرؤوس إلى 1,496,202، عدة 6 مرات أكثر.
الهندسة لا تتغير. نفس السطح، نفس المثلثات، نفس الخط الخارجي؛ فقط المحاسبة تصبح أغلى، والملف ينمو تقريبًا بنفس النسبة.
PLY هو المثال المضاد المفيد. يحتفظ بالمؤشر، لذا يتم كتابة الشبكة نفسها بحجم قريب من الأصل ويستمر في حمل اللون لكل رأس. بالنسبة لشبكة كبيرة حيث يجب فقط الحفاظ على الهندسة، فإن PLY هو الوجهة الصادقة الأرخص في هذه القائمة.
النص مقابل الثنائي يزيد الأمر سوءًا. glTF هو JSON مع المخازن المؤقتة مشفرة بقاعدة 64، مما يكلف حوالي 33 بنسبة مئوية أكثر من GLB المتماثل، لأن base64 يحول كل ثلاثة بايتات إلى أربعة.
لماذا نما الملف حتى عند التحويل من GLB إلى GLB؟#
لأن المحوّل يحسب المتجهات العمودية للرأس لأي شبكة تصل بدونها ثم يقوم بكتابتها. غالبًا ما تكون الشبكة المولّدة ليس لديها أي خصائص للمتجهات العمودية، لذلك يضيف الذهاب والإياب متجهًا كاملًا لكل رأس.
الاختبار مع mug.glb هو مثال واضح: تدخل 880 KB وتخرج 1,173 KB، دون أي تغيير في الهندسة. المتجهات العمودية المضافة هي الفرق.
إنها قرار متعمد، وليست خللاً. الشبكة التي لا تحتوي على متجهات عمودية تبدو مسطحة ومتعددة الوجوه في معظم العارضين، لذلك يحسب المحوّل هذه المتجهات مرة واحدة عند تحميلها بدلاً من ترك كل أداة لاحقة تخمنها.
هل تغير عملية التحويل الشكل؟#
لا. كل وجهة تم تحويلها ثم تم إعادة قراءتها، وخرج السطح متماثلًا: نفس عدد المثلثات ونفس مساحة السطح الكلية، حتى حد القياس، في شبكة مكونة من 498,734 مثلثات. الهندسة هي الجزء من ملف 3D الذي يبقى سليماً بعد التحويل.
| الوجهة | المثلثات بعد | خطأ في مساحة السطح | كيف تُحفظ الإحداثيات |
|---|---|---|---|
| GLB | بدون تغييرات | 0% | float32 ثنائي |
| glTF | بدون تغييرات | 0% | ذاكرة مؤقتة بصيغة base64 |
| OBJ | بدون تغييرات | 0% | نص مع 17 الكسور العشرية |
| STL | بدون تغييرات | 0% | float32 ثنائي |
| PLY | بدون تغييرات | 0% | float32 ثنائي |
| USDZ | بدون تغييرات | 0% | ملف مضغوط من USDA |
إذن، هل التحويل ثلاثي الأبعاد يفقد شيئًا أم لا؟#
كلاهما، والتمييز هو ما يفيد. الهندسة لا تفقد شيئًا: الشكل الذي يدخل هو الشكل الذي يخرج. كل ما يحيط بالهندسة يُفقد، وأي أجزاء تفقدها تعتمد بالكامل على الوجهة التي اخترتها.
هنا لا شيء يقطع الإحداثيات. GLB و STL و PLY تكتب أعداداً عشرية عائمة ثنائية 32 بت. glTF يدرج نفس المخزن المؤقت الثنائي كـ base64 داخل JSON الخاص به. USDZ يكتب ملف zip من USDA. OBJ هو الوحيد الذي يكتب المواقع كنص عشري، ويكتبها بدقة كاملة بدلاً من تقريبها، وهذا جزء من السبب في أن ملفاته أكبر بكثير.
هذا يعني أن القلق المعتاد، أن كل تحويل يقلل قليلاً من النموذج، مثل إعادة حفظ JPEG، لا ينطبق. التحويل من GLB إلى OBJ والعودة لا يُنعّم الشبكة.
ما يفعله بالفعل هو تجاهل ما يظهر أعلاه في هذه الصفحة: الرسم البياني للمشهد في STL و PLY، اللون حسب النقطة في OBJ و STL و USDZ، أسماء المواد في STL و PLY و USDZ، وUV في STL. هذه الخسائر دائمة، بمعنى أن إعادة التحويل لا يمكن أن تُعيد اختراعها مرة أخرى.
ما الوجهة التي يجب أن تختارها؟#
اختر الوجهة حسب ما يجب أن يبقى، لا حسب الامتداد الذي تضعه الأداة المستقبلة أولاً في قائمتها. هذه هي الاختيارات المبررة استنادًا إلى ما تم قياسه أعلاه.
| إذا كنت تحتاج إلى | اختر | لماذا |
|---|---|---|
| كل شيء محفوظ، في ملف واحد | GLB | الوجهة الوحيدة التي احتفظت معًا بمخطط المشهد، أسماء المواد، خرائط UV واللون حسب كل رأس، بحجم أصغر بين الصيغ الكاملة. |
| كل شيء محفوظ، قابل للقراءة من قبل الإنسان | glTF | نفس المحتوى مثل GLB، أكبر بنحو 33 بالمئة بسبب أن المخازن مؤرخة بالـ base64 داخل JSON. |
| كائنات منفصلة باسم في برنامج سطح المكتب | OBJ | احتفظ بالكائنين واسمَي المادة. تجاهل اللون حسب الرأس واكتب الملف الأكبر من بين الستة. |
| الطباعة ثلاثية الأبعاد | STL | مثلثات ولا شيء آخر، وهو كل ما يقرأه مشغل الشرائح. الأصغر بين الوجهات التي ليست glTF في شبكة حقيقية. |
| الهندسة واللون حسب الرأس، مع وزن خفيف | PLY | الوجهة الوحيدة التي ليست glTF والتي احتفظت باللون لكل رأس، وتحتفظ بالفهرس، لذا تبقى قريبة من حجم الأصل. |
| نظرة سريعة من Apple / الواقع المعزز على iPhone | USDZ | احتفظت بالعنصرين وخرائط UV في مشهد المرجع. فقدت اللون لكل رأس وأسماء المواد عند إعادة قراءتها. ملف مضغوط لـ USDA يمكن للهاتف فتحه. |
ما الذي يحدد هذه التنسيقات#
القياسات أعلاه هي من عندنا؛ ما يمكن أن يحمله كل تنسيق لا نقرره نحن. هذه هي المواصفات والمراجع الخاصة بالتنسيق التي تحدد ذلك، حتى يمكن التحقق مما تقوله هذه الصفحة من المصدر بدلاً من تصديقه فقط.
- مواصفات glTF 2.0مجموعة Khronos
حدد رسم المشهد، المواد والاكسسوارات التي يحملها GLB و glTF، وشرح لماذا كانت هذه هي الوجهات الوحيدة التي نجت سليمة هنا.
- نوع الوسيط model/gltf-binaryIANA
النوع المسجل لـ GLB، الحاوية الثنائية التي تم قياسها أعلاه.
- نوع الوسيط model/stlIANA
STL كما هو مسجل: مثلثات وnormales للوجه، دون أي حقل للون، UV، المواد أو أسماء الكائنات.
- تنسيق ملف Wavefront OBJPaul Bourke
المرجع الدائم لـ OBJ، الذي لا يحتوي على حقل خاص للون لكل رأس، مما يتوافق مع ما تم استبعاده بواسطة التحويل.
- تنسيق ملف مضلعات PLYPaul Bourke
وثق الخصائص لكل رأس، بما في ذلك اللون، التي تجعل من PLY الوجهة الوحيدة التي ليست glTF والتي تحتفظ به هنا.
- مواصفات تنسيق ملف USDZPixar / OpenUSD
USDZ هو ملف مضغوط zip مدخلته الأولى هي مشهد USDA. هذا هو الحزمة التي يكتبها ويقرأها هذا المحول.
كيفية القياس#
يقوم القياس بتنفيذ المنتج، وليس وصفه. يقوم النص البرمجي باستيراد نفس المحملين والمصدرين مثل محول المتصفح، بنفس الخيارات، وهو موجود في المستودع حتى يمكن إعادة إنتاج الأرقام أو مناقشتها.
- بناء مشهد مرجعي يتضمن مكعبين مسميين، كل منهما بمواد معدنية مسماة، لون لكل رأس، إحداثيات UV والسطوح العادية.
- تحميل الشبكات الحقيقية المولدة بنفس الطريقة التي يقوم بها المحول بتحميل الملف الذي تعطيه له، بما في ذلك الخطوة التي تحسب نُظُم الرؤوس عندما تصل الشبكة بدونها.
- تصدير إلى GLB و glTF و OBJ و STL و PLY و USDZ باستخدام نفس المصدّرين الذين يستدعيهم المحول ونفس الإعدادات الثنائية.
- تسجيل الحجم بالبايت لكل نتيجة.
- قراءة السمات مباشرة من البايتات المكتوبة وليس من مشهد تم إعادة تحميله، لأن المحمل يخترع ما لا يحتويه الملف: ملف OBJ بدون خطوط vn يتم إعادة تحميله كذلك مع سمة نظم تم توليفها.
- نشر الجدول مباشرة من تلك النتيجة. مقاس 13 سبتمبر 2026 three.js r179.
أسئلة
- هل فقدان جودة عند تحويل ملف ثلاثي الأبعاد؟
- النموذج لا. تم تحويل كل وجهة وأُعيد قراءتها، وظهر عدد المثلثات ومساحة السطح الكلية متطابقة في شبكة من 498,734 المثلثات، دون اقتطاع الإحداثيات بأي صيغة. ما يتم فقده هو كل ما يحيط بالهندسة، ويعتمد على الوجهة: STL يتجاهل UV، اللون، المواد، ورسم المشهد؛ OBJ يتجاهل اللون حسب الرأس؛ PLY يتجاهل أسماء المواد ويمزج المشهد؛ USDZ يتجاهل اللون حسب الرأس وأسماء المواد عند إعادة قراءته؛ GLB و glTF احتفظا بكل شيء.
- أي تنسيق ثلاثي الأبعاد يشغل أقل مساحة؟
- GLB، في شبكة حقيقية. في هذه الاختبارات كتب GLB 1,173 KB حيث كتب OBJ 4,928 KB لنفس الطراز، لأن GLB ثنائي ويحافظ على فهرس الرؤوس المشترك، بينما OBJ الناتج نصي ويخزن كل زاوية من كل مثلث بشكل منفصل.
- لماذا يشغل OBJ الخاص بي مساحة أكبر بكثير من GLB الذي أُخذ منه؟
- لسببين، كلاهما مهم: OBJ نصي وليس ثنائي، وOBJ الذي يُكتب هنا لا يشارك الرؤوس بين المثلثات، لذلك يتم مضاعفة عدد الرؤوس بمقدار بعض 6 في شبكة مفهرسة جيدًا. السطح متطابق؛ الحسابات غير متطابقة.
- هل يحتفظ STL باللون؟
- لا. STL ثنائي يحفظ عادي للمثلث وثلاث زوايا لكل مثلث، ولا يحتوي على أي حقل للون أو UV أو المواد أو أسماء الكائنات. وقد تم تطبيق ذلك في جميع ملفات STL المكتوبة في هذه الاختبارات.
- هل يمكنني الاحتفاظ باللون لكل رأس دون استخدام GLB؟
- نعم، مع PLY. في هذه الاختبارات كان هذا هو الوجهة الوحيدة التي ليست glTF والتي أعلنت عن خاصية اللون في رأسها. ومع ذلك، يقوم بدمج مشهد يحتوي على عدة كائنات في شبكة واحدة، لذلك تحتفظ باللون وتفقد الأجزاء.
- هل يؤدي تحويل نموذج ثلاثي الأبعاد مرارًا وتكرارًا إلى تدهوره؟
- لا. على عكس إعادة حفظ JPEG، فإن التحويل ثلاثي الأبعاد لا يتراكم فيه الخطأ: حيث يتم نسخ الإحداثيات كأعداد float ثنائية أو، في حالة OBJ، تُكتب كأعداد عشرية بدقة كاملة. رحلة ذهاب وإياب عبر أي من هذه الصيغ أعادت السطح على حاله تمامًا. ما لا يعود هو معلومات المواد والمشهد التي لم يستطع الوجهة نقلها من البداية.
- هل يمكنني إعادة إنتاج هذه الأرقام؟
- نعم. نص القياس موجود في المستودع، في scripts/measure-conversions.mjs، ويكتب JSON الذي تقرأه هذه الصفحة. تم تشغيله آخر مرة في 13 سبتمبر 2026 three.js r179.