مقدمة إلى الفضاء ثلاثي الأبعاد في جودو

من موسوعة حسوب
< Godot
مراجعة 13:28، 5 نوفمبر 2023 بواسطة Naser-dakhel (نقاش | مساهمات) (إضافة الصفحة)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

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

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

عقدة Node3D

إن عقدة Node2D هي العقدة الأساسية للفضاء ثنائي البعد وControl هي العقدة الأساس لكل شيء له علاقة بالواجهات الرسومية، وبذلك فإن محرك الفضاء ثلاثي البعد يستخدم العقدة Node3D لكل شيء ثلاثي البعد.

ملاحظة: انتبه أن العقد "المكانية Spatial" أصبحت تدعى "Node3D" بدايةً من جودو 4. أي مرجع لجودو ‎3.‎x للعقد "المكانية" أصبح يشير إلى "Node3D" في جودو 4.

tuto 3d1.png


لدى عقد Node3D تحول محلي local transform يتعلق بالعقدة الأب (طالما أن العقدة الأب هي أيضًا من النوع Node3D أو ترث منه). يمكن الوصول إلى هذا التحول بمثابة 3×4 عنصر من النوع Transform3D أو بمثابة 3 عناصر من النوع Vector3، بحيث يمثل العنصر المكان وتدوير أويلر (زوايا X وY وZ) والحجم.

inspector3DTransform.png

المحتوى ثلاثي البعد

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

النماذج المشكلة يدويًا (باستخدام برامج النمذجة ثلاثية البعد)

هناك خطان سير لاستيراد النماذج ثلاثية البعد في جودو؛ الأول والأكثر استخدامًا هو استيراد مشاهد ثلاثية البعد الذي يسمح باستيراد مشاهد كاملة (كما هي تمامًا في برامج النمذجة ثلاثية البعد) بما فيها التحريك والهياكل والأشكال المدموجة وما إلى ذلك.

أما خط السير الثاني فهو استيراد نماذج بسيطة بصيغة ملف ‎.OBJ كشبكة موارد resource mesh يمكن وضعها داخل عقدة MeshInstance3D للعرض.

الأشكال الهندسية المُنشأة

من الممكن إنشاء أشكال هندسية خاصة باستخدام مورد ArrayMesh مباشرة. أنشئ ببساطة مصفوفات باستخدام دالة ArrayMesh.add_surface_from_arrays()، ويوجد صنف SurfaceTool مساعد متوفر يقدم واجهة برمجة تطبيقات أكثر سهولة وتوابع مساعدة للفهرسة وإنشاء الأشكال العادية normals والمماسة tangents وغيرها.

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

الأشكال الهندسية المباشرة

إذا أردت إنشاء أشكال هندسية بسيطة يتم تحديثها دومًا، تقدم جودو عقدة خاصة هي ImmediateMesh التي تقدم وضع مباشر يشبه واجهة برمجة التطبيقات OpenGL 1.x لإنشاء النقط والخطوط والمثلثات إلخ.

الفضاء ثنائي الأبعاد في الفضاء ثلاثي الأبعاد

على الرغم من أن جودو تقدم محرك ثنائي بعد قوي إلا أن هناك العديد من الألعاب التي تستخدم الفضاء ثنائي الأبعاد في بيئة فضاء ثلاثية الأبعاد. عن طريق استخدام كاميرا ثابتة (إما متعامدة أو منظورية) لا تدور، يمكن استخدام العقد مثل  Sprite3D وAnimatedSprite3D لإنشاء ألعاب ثنائية البعد تستخدم خلفية ثلاثية البعد وتأثير خلفية متحركة Parallax وتأثيرات إضاءة/تظليل أكثر واقعية.

المساوئ هي زيادة التعقيد وضعف الأداء بالمقارنة مع الفضاء ثنائي البعد بالإضافة إلى عدم وجود نقطة مرجع عند التعامل مع البيكسلات.

البيئة

من الشائع أيضًا تعديل البيئة بالإضافة لتعديل المشهد، وتقدم جودو عقدة WorldEnvironment التي تسمح بتغيير لون الخلفية والنمط (كما في إنشاء skybox) وتطبيق عدد من تأثيرات ما بعد المعالجة المضمنة، ويمكن إعادة تعريف البيئات في الكاميرا.

إطار العرض ثلاثي البعد

يكمن تعديل المشاهد ثلاثية البعد في نافذة الفضاء ثلاثي البعد، وتستطيع اختيار هذه النافذة يدويًا ولكنها تُفعل تلقائيًا عند اختيار عقدة Node3D.

إطار عرض ثلاثي الأبعاد.png

 

التحكم بالانتقال في المشهد ثلاثي البعد مشابه لبرنامج بليندر blender (بهدف خلق بيئة وطريقة عمل متشابهة في البرامج الحرّة)، ولكن هناك خيارات لتعديل أزرار وسلوك الفأرة ليشابه الأدوات الأخرى في إعدادات المحرر:

ضبط التحكم بالمحرر.png

نظام الإحداثيات

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

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

الاتجاه الأعلى هو المحور Y، والمحاور الأفقية هي X/Z. تستخدم جودو إحداثيات اليد اليمنى؛ أي أن كل الكائنات التي تحتاج لمحاذاة (مثل الأضواء والكاميرا) تستخدم المحور Z باتجاه "الإشارة نحو". هذا الاصطلاح يعني:

  • X هي الجوانب
  • Y هي فوق/تحت
  • Z هي أمام/خلف

انظر للمخطط للمقارنة بين البرامج ثلاثية البعد الأخرى:

حقوق الصورة محفوظة فريا هولمر

أدوات المكان والتعديل

يتم تحريك الكائنات في الفضاء ثلاثي الأبعاد من خلال أدوات تعديل manipulator gizmos. يتم تمثيل كل محور بلون حيث تمثل الألوان الأحمر والأخضر الأزرق المحاور X وY وZ على الترتيب. ينطبق هذا الاصطلاح على الشبكة الإحداثية والأدوات الأخرى أيضًا (وأيضًا لغة المظلل shader language و ترتيب المكونات لـ Vector3 و اللون وما إلى ذلك).

tuto 3d5.png


بعض الاختصارات المفيدة:

  • للتثبيت إلى المكان أو التدوير، إضغط على Ctrl عند التحريك أو تغيير الحجم أو التدوير
  • اضغط على F لتركيز العرض على الكائن المحدد.

قائمة العرض

تتحكم قائمة "العرض View" بخيارات العرض في شريط الأدوات الخاص بالإطار المعروض.

قائمة تعديل العرض.png

يمكن إخفاء الأدوات في الرؤية ثلاثية البعد من المحرر خلال هذه القائمة:

تعطيل عرض الأدوات.png


يمكن إخفاء نوع أداة عن طريق تعطيلها في قائمة "الرؤية View":

تحديد نوع أدوات.png

البيئة الافتراضية

لدى البيئة ثلاثية الأبعاد سماء افتراضية عند إنشائها من مدير المشروع Project Manager

tuto 3d8.png


من الأفضل دومًا العمل بالبيئة الافتراضية نظرًا لفيزيائية عمل التصيير للحصول على ضوء غير مباشر ومعكوس إلى الكائنات الخاصة بك.

الكاميرات

لا يمكن إظهار شيء بدون وجود  Camera3D مضافة إلى المشهد مهما يكن عدد الكائنات الموضوعة في الفضاء ثلاثي البعد. تعمل الكاميرات في الإسقاطين المتعامد والمنظوري:

tuto 3d10.png


تترافق الكاميرات مع (أو تُظهر في) إطار معروض أب أو جد. تُظهر الكاميرات على إطار العرض viewport لأن جذر شجرة المشهد هي إطار معروض ولكن تحتاج الأطر الفرعية المعروضة (إن كانت هدف تصيير أو صورة داخل صورة) إلى كاميرات أولاد للإظهار إذا كانت مرغوبة.

2image.png


القواعد التالية إجبارية عند العمل مع كاميرات متعددة لكل إطار عرض:

  • تصبح الكاميرا الأولى التي تدخل على المشهد الأساسية في حال لا يوجد أي كاميرا في شجرة المشهد، ويتم تجاهل باقي الكاميرات التي تدخل المشهد (إلا إذا تم ضبطها إلى الحالي current).
  • تُستخدم الكاميرا التي تكون مضبوطة فيها خاصية الحالي يغض النظر عن أي كاميرا أخرى في المشهد. ستصبح هي الفعالة إذا تم ضبط الخاصية واستبدال الكاميرا السابقة.
  • ستحل الكاميرا الأولى في ترتيب الشجرة مكان الكاميرا التي تغادر المشهد.

الأضواء

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

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

مصادر