محرك ثلاثي الأبعاد
وحدة برمجية ذات بنية واضحة تهدف إلى تقديم وظائف مخصصة لأداء حسابات فراغية بهدف إظهار رسوميات ثلاثية الأبعاد باستخدام الحاسوب.
سبب التسمية
محرك ثلاثي الأبعاد هي الترجمة العربية للمصطلح الإنجليزي 3D Engine. لذلك، فإن الحدثة لا علاقة لها بالتحريك Animation بالرغم من حتى وظيفة التحريك هي إحدى الوظائف التي يقوم بها المحرك ثلاثي الأبعاد عادةً (انظر في الأسفل). يمكن ربط الاسم مع المحرك الحقيقي (كمحرك السيارة) حيث أنهما يتشابهان من ناحية وجود هيكلية معقدة مخبأة يمكن الاستفادة منها عن طريق قابلة استخدام مبسطة (المقود والدواسات في السيارة مثلاً والإجراءات المتاحة في محرك الـ 3D باللقاء).
الحاجة لمحرك ثلاثي الأبعاد
تتألف عملية إظهار الرسوميات في الحاسوب من سلسلة طويلة من العمليات المتلاحقة مُشكـِّلة ما يدعى بـ"خط إنتاج" Pipeline. أغلب البرامج التي تقوم بإظهار ثلاثي الأبعاد بحاجة إلى حتى تحتوي على التعليمات التي تقوم بتجهيز خط الإنتاج هذا. هذه العمليات لا تختلف في قسم كبير منها بين برنامج وآخر، مما يعني حتى كُتـَّـاب هذه البرامج يمنكهم إعادة استخدام المنطق نفسه فيما بينهم وتوفير الوقت. يقوم محرك الـ 3D بتجميع هذه العمليات الشائعة وتنظيمها ضمن بنية موحدة يمكن إعادة استخدامها بسهولة. إضافة إلى ذلك، يمكن لمحرك الـ 3D حتى بقدم قابلة تعامل interface مجردة من التفاصيل الخاصة بالنظام التحتي low-level system. هذا المفهوم ازدادت أهميته في الآونة الأخيرة بسبب الحاجة لاستهداف عدة منصات مختلفة platforms (مثلاً نظام تشغيل ويندوز ونظام تشغيل لينكس).
وظائف المحرك ثلاثي الأبعاد
تختلف شمولية وظائف المحرك ثلاثي الأبعاد بحسب أهدافه وضخامته. قد تهجرز الوظائف في طبقة بسيطة تيسر فقط عملية تسليم المعلومات (المضلعات الفراغية مثلاً) لجهاز الرسم rendering hardware، وقد تتسع لتغطي جميع شيء بدءاً من نقل المعلومات (مضلعات وإكساءات وحركات ...الخ) من البيئة المستخدمة لخلق وتحرير هذه المعلومات (برنامج 3D عادةً) وحتى لحظة إظهار الألوان على جهاز الخرج. فيما يلي قائمة تحاول حتى تضم جميع العمليات التي يمكن للمحرك ثلاثي الأبعاد القيام بها ودعمها، مذكورة بترتيب تطبيقها:
أدوات خط الإنتاج
- تقديم أدوات تحرير تستخدم لتجهيز معلومات خاصة بالمحرك لا يمكن عادة تجهيزها بأدوات أخرى. كمثال، بعض المحركات تقدم أداة خاصة لتجهيز الشيدرز أوالمواد materials المستخدمة لرسم الأجسام، ثم حفظ هذه المواد في ملف يمكن للمحرك قراءته واستخراج تفاصيل المواد المطلوبة منه.
- تقديم بريمجات scripts تساعد على تهيئة المعلومات في بيئة التحرير إلى شكل يلائم طبيعة حسابات المحرك. مثلاً، بريمج يقوم بتحويل الهيكل العظمي rig لشخصية من سلاسل عظام bone chains إلى عقد تحويل بسيطة transformation nodes، حيث حتى أغلب المحركات تنفذ حسابات الشجرية على مجموعة من مصفوفات التحويل transformation matrices يمكن التعبير عنها بشكل بصري عن طريق عقد التحويل.
- تقديم إضافة برمجية plug-in إلى بيئة التحرير تقوم بتحويل المشهد المطلوب (أوجزء منه) إلى صيغة يستطيع المحرك قراءتها والتعامل معها بسرعة وفعالية. كمثال، إضافة وحدة تصدير ملفات MD3 الخاصة بشخصيات كويك ثلاثة Quake3 من شخصيات مبنية في برنامج ثري دي ستوديوماكس.
- تقديم أدوات خارجية تقوم بمعالجة البيانات الناتجة من بيئة التحرير لتنظيفها واختصار الغير مطلوب منها، تمهيداً لتجميعها بشكل مختصر يسهل قراءتها من قبل المحرك أويحسن أداء حساباتها. كمثال، أداة خارجية command-line tool تقوم بالكشف عن المثلثات ذات المساحة الصغيرة جداً وحذفها من قائمة المثلثات التي تشكل الجسم.
مخطات زمن التشغيل
- تقديم هيكلية framework يمكن للمستفيدين من المحرك بناء برنامجهم عليها. كمثال، ... (classes)