موضوع: كيفية صنع المحركات وبرمجتها بالدعم من عرب المنابر

ردود: 2 | زيارات: 1663
  1. #1
    عضو متميز
    صور رمزية omarzonex
    تاريخ التسجيل
    Jan 2009
    المنطقة
    نبض قلبي- فلسطين
    ردود
    6,684

    كيفية صنع المحركات وبرمجتها بالدعم من عرب المنابر

    كيفية صنع المحركات وبرمجتها بالدعم من عرب المنابر

    الموضوع مفتوح للجميع للمناقشة هنا
    كيفية صنع المحركات الألعاب وبرمجتها عن طريق محترفي عرب المنابر


    أولاً:
    المحرك الثلاثي الأبعاد هو وحدة برمجية ذات بنية واضحة تهدف إلى تقديم وظائف مخصصة لأداء حسابات فراغية بهدف إظهار رسوميات ثلاثية الأبعاد باستخدام الحاسوب.

    سبب تسمية محرك ثلاثي الابعاد :
    محرك ثلاثي الأبعاد هي الترجمة العربية للمصطلح الإنجليزي 3D Engine. لذلك، فإن الكلمة لا علاقة لها بالتحريك Animation بالرغم من أن وظيفة التحريك هي إحدى الوظائف التي قد يقوم بها المحرك ثلاثي الأبعاد . يمكن ربط الاسم مع المحرك الحقيقي (كمحرك السيارة) حيث أنهما يتشابهان من ناحية وجود هيكلية معقدة مخبأة يمكن الاستفادة منها عن طريق واجهة استخدام مبسطة (المقود والدواسات في السيارة مثلاً والإجراءات المتاحة في محرك الـ 3D بالمقابل).

    ما هي الحاجات الواجب توافرها في المحرك ثلاثي الأبعاد :
    تتألف عملية إظهار الرسوميات في الحاسوب من سلسلة طويلة من العمليات المتلاحقة مُشكـِّلة ما يدعى بـ"خط تجهيز" (pipeline). أغلب البرامج التي تقوم بإظهار ثلاثي الأبعاد تحتاج إلى أن تحتوي على التعليمات التي تقوم بإعداد خط التجهيز هذا. هذه العمليات لا تختلف في قسم كبير منها بين برنامج وآخر، مما يعني أن كُتـَّـاب هذه البرامج يمنكهم إعادة استخدام المنطق نفسه فيما بينهم وتوفير الوقت. يقوم محرك الـ 3D بتجميع هذه العمليات الشائعة وتنظيمها ضمن بنية موحدة يمكن إعادة استخدامها بسهولة. إضافة إلى ذلك، يمكن لمحرك الـ 3D أن بقدم واجهة تعامل interface مجردة من التفاصيل الخاصة بالنظام التحتي low-level system. هذا المفهوم ازدادت أهميته في الآونة الأخيرة بسبب الحاجة لاستهداف عدة منصات مختلفة platforms (مثلاً نظام تشغيل ويندوز ونظام تشغيل لينكس).


    ما هي وظائف المحرك الثلاثي الأبعاد :
    تختلف شمولية وظائف المحرك ثلاثي الأبعاد بحسب أهدافه وضخامته. قد تتركز الوظائف في طبقة بسيطة تدير عملية تسليم المعلومات (المضلعات الفراغية مثلاً) لمعالج الرسوميات rendering hardware (كدايركت ثري دي مثلاً)، وقد تتسع لتغطي كل شيء بدءاً من نقل المعلومات (مضلعات وإكساءات وحركات ...الخ) من البيئة المستخدمة لخلق وتحرير هذه المعلومات (برنامج 3D عادةً) وحتى لحظة إظهار الألوان على جهاز الخرج (كمثال، محرك مينتال راي او الفيراي او غيرها من المصيرات في الرندر ). فيما يلي قائمة تحاول أن تشمل كل العمليات التي يمكن للمحرك ثلاثي الأبعاد القيام بها ودعمها، مذكورة بترتيب تطبيقها ما يلي :

    1- أدوات خط الإنتاج

    * أدوات تحرير تستخدم لتجهيز معلومات خاصة بالمحرك لا يمكن عادة تجهيزها بأدوات أخرى. كمثال، بعض المحركات تقدم أداة خاصة لتجهيز المظللات أو المواد materials المستخدمة لرسم الأجسام، ثم حفظ هذه المواد في ملف يمكن للمحرك قراءته واستخراج تفاصيل المواد المطلوبة منه (كما هو الحال في محرك أنريل).
    *برمجيات scripts تساعد على تهيئة المعلومات في بيئة التحرير بشكل يلائم طبيعة حسابات المحرك. مثلاً، بريمج يقوم بتحويل الهيكل العظمي rig لشخصية من سلاسل عظام bone chains إلى عقد تحويل بسيطة transformation nodes، حيث أن أغلب المحركات تنفذ حسابات الشجرية على مجموعة من مصفوفات التحويل transformation matrices يمكن التعبير عنها بشكل بصري عن طريق عقد التحويل.
    * تقديم إضافة برمجية plug-in إلى بيئة التحرير تقوم بتحويل المشهد المطلوب (أو جزء منه) إلى صيغة يستطيع المحرك قراءتها والتعامل معها بسرعة وفعالية. كمثال، إضافة وحدة تصدير ملفات MD3 الخاصة بشخصيات كوايك Quake3 من شخصيات مبنية في برنامج ثري دي ستوديو ماكس، أو تحويل مشهد في برنامج سوفت إيماج إكس إس آي إلى صيغة MI الخاصة بمينتال راي.
    * أدوات خارجية تقوم بمعالجة البيانات الناتجة من بيئة التحرير لتنظيفها واختصار الغير مطلوب منها، تمهيداً لتجميعها بشكل مختصر يسهـِّل قراءتها من قبل المحرك أو يحسن أداء حساباتها. كمثال، أداة خارجية command-line tool تقوم بالكشف عن المثلثات ذات المساحة الصغيرة جداً وحذفها من قائمة المثلثات التي تشكل الجسم.

    2- مكتبات زمن التشغيل

    * تقديم هيكلية framework يمكن للمستفيدين من المحرك بناء برنامجهم عليها. كمثال، نافذة جاهزة للتخريج مع حلقة رسم مجهزة يمكن تعبئتها بالأجسام المطلوب رسمها وترك بقية مهمات التخريج على المحرك.
    * تقديم خدمات إدارة الذاكرة. عدة محركات تقدم نظام لتنظيف الموارد الغير مستخدمة garbage collection يريح المستخدم من أعباء متابعة الموارد التي يقوم باستخدامها في المشهد (كالإكساءات مثلاً).
    * تسهيلات لكشف الأخطاء ومتابعتها. كالتأكيدات asserts والتقارير ومقاييس الأداء وتكاليف الذاكرة والمعالجة.
    * مكتبة لأداء الحسابات الرياضية كالمصفوفات والمتجهات وتتبع الأشعة ray tracing. غالباً ما تكون هذه المكتبة محسنة للعمل على أحجام كبيرة من البيانات.
    * عدة تطوير software development kit يمكن للمستخدمين التعامل معها لاستحداث عمليات إضافية مخصصة تخدم متطلبات معينة. كمثال، عدة مينتال راي الخاصة بتأليف مظللات جديدة.
    * مكتبة حسابات لتقسيم المشهد تمهيداً لرسم الأجزاء الظاهرة منه فقط عن طريق استبعاد cull الأجزاء الغير داخلة ضمن كادر المشهد. كمثال، نظام استبعاد يعتمد على الكرات المحيطة للأجسام bounding spheres.
    * وحدة لترتيب عناصر المشهد ليتم رسمه بترتيب معين يساعد على تحسين الأداء أو الجودة (مثلاً بالاعتماد على التقسيم الفراغي الثنائي binary space partitioning).
    * وحدات لأداء مهام التحريك animation المختلفة. كتحريك الشخصيات باستخدام حركات مسبقة التسجيل، أو بنظام حسابات فورية كالحركيات العكسية inverse kinematics والحسابات الفيزيائية. بعض المحركات الحديثة تتضمن إمكانيات دمج عدة حركات من مصادر مختلفة بهدف إنشاء حركات جديدة. يمكن تعميم خدمات التحريك على أية قيمة قابلة للتغير مع الزمن وفقاً لتابع ما. تستعمل طرق الاستيفاء الرياضي بكثرة لإيجاد القيم الوسيطة في أية لحظة من زمن المشهد.
    * تنظيم المشهد ضمن بنية معينة تمكن المستخدمين من الوصول لمحتوياته واستنتاج الروابط المختلفة بين عناصر المشهد. عادة يطلق على مثل هذه البنية مخطط المشهد scene graph، وتشمل عناصر المشهد ممثلة بشجرية تظهر علاقات الربط والأب/الابن بين العناصر.
    * وحدات يمكن التعامل معها من أجل بناء المجسمات ورسمها بالمواصفات المطلوبة. يمكن لهذا البند أن يشمل تلبيس الشخصيات وتحوير المجسمات كعمليات ممكن تنفيذها على المجسمات.
    * مهام أخرى خاصة مطلوبة من قبل مكتبات أخرى يعتمد عليها المحرك. كمثال، فلترة النداءات المتكررة لمكتبة دايركت ثري دي المستخدمة في الرسم.




    ما هي أنظمة المحركات الرئيسية :


    يوجد حالياً نظامين رئيسين في معالجة ورسم المشاهد الثلاثية الأبعاد:

    * من الشاشة إلى العالم screen-to-world: الانطلاق من البكسلات على الشاشة وتتبع الأشعة عودة إلى المشهد التخيلي. هذه الطريقة تعرف بتتبع الأشعة. كل شعاع ينطلق من أحد بكسلات الشاشة ليرتطم بجسم ما في العالم. من نقطة الارتطام هذه يتم بعث أشعة إضافية في العالم تتوجه نحو مصادر الضوء الرئيسية في المشهد. هذه الأشعة قد ترتطم بأجسام أخرى وتنعكس عنها لتتشتت باتجاهات أخرى يتم تتبعها بشكل مستمر حتى حد معين (كعدد ثابت من الارتطامات أو نفاذ طاقة الضوء مثلاً).
    * من العالم إلى الشاشة world-to-screen: الانطلاق من المشهد التخيلي وإسقاطه على سطح الشاشة. وهي الطريقة المعاكسة للطريقة السابقة. حيث يتم إيجاد البكسلات التي سيغطيها كل جسم بشكل مستقل، ويتم حساب ألوان هذه البكسلات عن طريق حسابات مبسطة تتجاهل في كثير من الأحيان الموجودات المحيطة.

    أغلب المحركات الثلاثية الأبعاد المستخدمة في الإنتاج الفلمي تعتمد النظام الأول (متتبعة للأشعة) بسبب إمكانية هذه المحركات تنفيذ حسابات بمماثلة فيزيائية للظواهر الطبيعية مما قد يسهل إنتاج صور أكثر واقعية. بينما ينتشر النظام الثاني بين المحركات المسموح لها بالتنازل عن صحة الحسابات الناتجة عنها. كمثال، أغلب بطاقات الإظهار الاستهلاكية لأجهزة الكمبيوتر الشخصي تعتمد على نظام الإسقاط المباشر (world-to-screen) لرسم الأجسام المكونة من مثلثات، حيث يتم رسم كل مثلث على حدة وتسمى الفيرتكس .


    ما هي طرق توزيع واستخدام كافة المحركات :
    يمكن طرح المحرك للاستخدام بعدة أشكال. القائمة التالية تلخص الخيارات المتاحة:

    * كود مفتوح المصدر: بحيث يمكن للمستفيد أن يعدل الكود كما يشاء، أو أن يستخدم المحرك المبني بالكود الأساسي.
    * مكتبة برمجية مترجمة: أو تسمى بالصندوق الأسود. حيث تقدم هذه المكتبة وظائف برمجية محددة يتعامل معها المستخدم، بينما الحسابات الحقيقية تكون مخبأة وتتم دون أن تحتاج المستخدم أن يقلق نفسه بتفاصيلها.
    * أدوات تنفيذية بسيطة مع واجهة برمجية: يكون المحرك في هذه الحالة ذا خط تنفيذ واضح ومحدد يتم اتباعه دائماً ولا يمكن تعديله جوهرياً. لإعطاء بعض المرونة، تقوم هذه الأدوات بتقديم نقاط وصل plug-in connections يمكن للمستخدم أن يستفيد منها ليدخل حساباته الخاصة ضمن الخط العام عن طريق كتابة بريمج صغير باستخدام عدة تطوير برمجية software development kit يقدمها المحرك.
    * أدوات بواجهة استخدام فقط: تكون واجهة الاستخدام هي الوسيلة لتحديد مواصفات وطرق حساب الأجسام التي سيتم رسمها بالمحرك. ثم يقوم المحرك برسم هذه الأجسام طبقاً للمواصفات وبدون إدخال المستخدم في تفاصيل العمل.

    يوجد مثالين يبين الفرق بين الوظائف الذي يقوم بها المحرك الثلاثي البعد لأنتاج الأفلام السينمائية والفرق الأخر موجه للرسم الفوري كالتالي :

    الفرق الأول لأنتاج السينمائي
    منتال راي او الفيراي :

    يعتمد طريقة التوزيع والاستخدام الثالثة (أدوات تنفيذية بسيطة مع واجهة برمجية). الواجهة البرمجية لمينتال راي مرنة بشكل يتيح للمبرمجين تنفيذ طيف واسع من طلبات المعلومات عن العالم المحيط بالنقطة التي يتم رسمها. مع إمكانية مفتوحة لدفع معلومات إضافية في المشهد يمكن استقبالها لاحقاً أثناء الرسم والتصرف بناءً على فحواها. يتم توزيع مينتال راي أيضاً بحسب الطريقة الرابعة من طرق التوزيع أعلاه، وهذا ما نراه في برامج مثل سوفت إيماج إكس إس آي ومايا ومؤخراً ثري دي ستوديو ماكس.

    الفرق الثاني للرسم الفوري :
    Game Pro :
    يعتمد الطريقة الثانية وهي مكتبة برمجية مترجمة يقدم أدوات لاختبار المظللات الفورية داخل برنامج ثري دي ستوديو ماكس ومايا، ومكتبات زمن تشغيل واسعة كالحسابات الرياضية وتحويل الموارد. يستهدف عدد من أنظمة التشغيل المختلفة.

    ----------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------


    ثانيا :
    المظللات Shaders :
    المظللات والمسمى بالشيدر Shader وهي مجموعة محدودة من الحسابات المخصصة للوصول إلى تأثير جرافيكي معين.

    كيفية ظهور المظللات :
    اختلفت طريقة التفكير في إنجاز المؤثرات الرسومية. يتم أولاً تحليل المؤثر المطلوب، واستنباط الحسابات المكونة له. يتم تحديد المظللات المتاحة في المحرك والتي يمكن الاستفادة منها لأداء الحسابات المطلوبة أو أجزاء منها. قد يظهر أنه لا يوجد مظلل قادر على إنجاز جزء معين من الحسابات المطلوبة، عندها يلجأ إلى كتابة هذا المظلل وإضافته إلى مكتبة المظللات المتاحة من قبل المحرك. بعد ذلك، يتم تركيب المظللات مع بعضها لتمثل الحسابات المطلوبة للتأثير المرغوب. حديثاً يتضمن تقييم جودة المحرك ثلاثي الأبعاد مدى شمولية

    أول محرك رسومي يقوم بعمل مؤثرات رسومية جديدة دون الحاجة إلى إعادة بناء المحرك في كل مرة الأ وهو محرك ريندر مان ومن نتيجة أسم المظلل يدل على المعنى الواضح لها وهي تقوم بحساب تظليل ولون كل بكسل من الصورة النهائية. تلى ذلك مظللات تقوم بعمليات أكثر تعقيداً من مجرد حساب الضوء المباشر والطيف اللوني (كالانعكاسات والانكسارات مثلاً). فتمدد المصطلح ليشمل أية عملية مخصصة يتم إضافتها لحسابات اللون النهائي للبكسلات في الصورة النهائية.

    يمكن ربط المظللات مع بعضها في سلسلة من العمليات المتلاحقة لتشكل تأثيراً أكثر تعقيداً مما يمكن تحقيقه بمظلل واحد فقط. اعتماداً على هذا المفهوم الأخير، نجد أن المحركات مثل ريندر مان ومينتال راي والفيراي وغيرها من المحركات تسمح بالتعبير عن المواد Materials باستخدام شجرة من المظللات المرتبطة فيما بينها . كل مظلل مستقل بذاته، ويمكن إضافته أو إزالته لتعديل النتائج النهائية. من الجدير بالذكر أن هذه الشجرة ككل أيضاً قد تدعى مظلل.

    ما هي طريقة التعامل المحركات مع هذه المظللات Shaders :ومقارنتها بالمظللات السريعة التنفيذ
    مع تطور المعالجات الرسومية (كرت الشاشة بأنواعها ) يتم تنفيذ المظللات المخصصة على هذه المعالجات
    المظلل الفوري وهو كود مخصص يتم تنفيذه على المعالج الرسومي. من هنا نرى أنه بالإضافة للمظللات التي تعمل على البكسلات، فإنه يوجد أيضاً مظللات تعمل على النقاط (vertices)، ومؤخراً مظللات تعمل على مستوى المجسم ككل، لديها إمكانية تعريف واستحداث مضلعات جديدة ضمن عملية الرسم ..... حيث ان المظلللات السريعة تعتمد على نصوص برمجية مكتوبة بمحركات مشهورة مثل
    DirectX --OpenGL حيث أن المشاهد المرسومة بهذه المظللات يجب أن تتم خلال أجزاء صغيرة من الثانية للحفاظ على سلاسة الحركة ضمن المشهد السريع والفوري على الشاشة . لذا نرى الكثير من المعالجات السريعة تقدم عدداً محدوداً من التعليمات الممكن تنفيذها ضمن هذه المظللات، كما أنها قد تعمل بدقة رقمية غير تامة لتسريع الأداء. المظللات التي تعمل ضمن محركات الرسم للإنتاج عالي الجودة لا تملك هذه الشروط الواجب توافرها لأن رسم الكوادر غير محصور بزمن قصير كذلك في حالة الرسم الفوري والسريع نسبياً حسب سرعة كروت الشاشة بانواعها المختلفة ......






    ------------------------------------------------------------------------------------------------------------------------
    المرجعيات :
    موسوعة ويكيبيديا من تقديم المهندس وسام البهنسي وهمام البهنسي .....


  2. #2
    ان شاء الله بنصل لمرحلة عمل محركات

    المرحلة الأولي من لعبة السيارات باستخدام اليونتي
    http://www.maxforums.net/showthread.php?t=171553

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل