كيفية انشاء درع Sci-Fi داخل محرك يونتي

unity

لطالما كانت العناصر الدفاعية عنصرا مهما في الألعاب, فكما يوجد الهجوم, يوجد الدفاع, وبضدها تعرف الاشياء.

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

وفي حال قررت يوما ان تطور لعبة بهذا الطابع, – واعني هنا الخيال العلمي – ففي اغلب الاحوال ستحتاج اضافة هذا العنصر المهم, والذي هو ما سنتطرق له الآن.

تجهيز المشروع

ستبدأ اولا بتجهيز المشروع بتغيير نظام الرسومات فيه, لتصبح قادرا على استعمال محرر الشيدر.

من قائمة Window ستقوم بفتح مدير الحزم- Package Manager, وستبحث عن Universal RP, ثم تقوم بتثبيته في مشروعك.

ستقوم بعدها بعمل URP Asset, وهو عبارة عن ملف للتحكم باعدادات نظام الرسومات الجديد, ويمكنك إيجاده من خلال قائمة Rendering في نافذة المشروع ثم اختيار URP Asset with Universal Renderer , ثم تأكد من تفعيل الـ Depth Texture والـ Opaque Texture والـ HDR فيه.

بعد هذا ستقوم بتطبيق المعالجة النهائية-Post Process, عن طريق الذهاب الى نافذة الـ Hierarchy, واضافة Global Volume من خلال قائمة Volume, ومن نافذة المشروع ستقوم بعمل Volume Profile.

بعد هذا ستقوم بإضافة تاثير الـ Bloom, والـ Vignette, الى الـ Volume Profile.

ويمكنك اضافة اي تاثير اخر تريده.
ثم ستقوم بتفعيل المعالجة النهائية – Post Process في الكاميرا.

بداية العمل

في هذا المثال يمكنك اختيار أي نوع شيدر يناسبك, وفي حالتي ساختار الـ Unlit لانني هنا لا اريد اي حسابات ضوء خارجية.
ومن خلال قائمة Shader Graph ثم URP يمكنك الاختيار منها ما يناسبك.
بعد ذلك ستقوم بفتح المحرر لتبدأ بالعمل على الشيدر.

في البدايه عليك ان تجعل نوع الشيدر شفاف, لأن الطريقة التي سيتم استخدامها سوف تتطلب أن تكون هناك أجزاء غير مرئية من الدرع.

ستحتاج الآن أن تضيف عقدة الفرنيل – Fresnel Effect, مع عمل متغير من نوع رقم عشري – Float ليكون خاص بقوة التأثير.
بعد ذلك ستقوم بتوصيلها في مخرج الشفافية – Alpha, ويمكنك بعدها ملاحظة أن كل الاجزاء في المنتصف شفافه, والحواف فقط هي الظاهرة.

تداخل المجسمات

 ولكن في حالة تداخل المجسم مع مجسم آخر لن يحدث شيء, وهذا بالطبع لانه لا يوجد في الشيدر شيء يتحكم في هذا الأمر, وهذا ما ستقوم بفعله الآن.

عليك اولا اضافة عقدة عمق المشهد – Scene Depth, وتاكد من جعل نوع الـ Sampling الي Eye.
ثم اضافة عقدة Screen Position, مع تغيير الـ Mode الى Raw.
الان من خلال توصيل عقدة التقسيم – Split بعقدة Screen Position, ستقوم بطرح عقدة عمق المشهد – Scene Depth من قيمة الشفافية – A في عقدة التقسيم – Split.
بعدها ستقوم بضرب الناتج بقيمة -1 من خلال عقدة One Minus, ثم توصيلها في عقدة Smooth Step, ومن ثم توصيل كل هذا بمخرج الشفافية.
ستلاحظ الآن وجود الاماكن الظاهره فقط في اماكن التقاطع او التداخل مع المجسمات الأخرى.

ولكننا نريد ايضا ان تكون هناك حواف ظاهره بتأثير الفرنيل – Fresnel, لذا ستقوم الآن بالعودة للمحرر, ومن ثم اضافة ناتج عقدة الفرنيل – Fresnel الي ناتج العقد المسئولة عن التقاطع.

لكن في هذه الحالة قد تتواجد بعض الأماكن التي تكون فيها قيمة الشفافية أكبر من 1, مما قد يسبب وهجا زائدا فيها, لذا ستقوم باضافة عقدة Clamp قبل توصيل الناتج بمخرج الشفافية.

مما سيجعل القيم كلها تتراوح بين قيمتي الـ 0 والـ 1, وحينها يمكنك توصيلها في مخرج الشفافية, والان يمكنك ملاحظة الفرق, وأن المشكلة قد حلت.

التحكم بقيم التداخل

لكن الآن لا يمكن التحكم إلا بقوة تأثير الفرنيل – Fresnel, ولكن ماذا في حالة رغبتك بالتعديل على قيم الجزء الخاص بالتداخل؟
لفعل هذا سترجع الآن لمحرر الشيدر, وتقوم باضافة متغيرين من نوع الرقم العشري.

 أحدهما للتحكم بالتدريج الذي يبدا من منطقة التداخل ” Intersection Diffusion “, مع جعل قيمته الافتراضية تساوي 0, وهو ما ستقوم باضافته إلى قيمة الشفافية لعقدة التقسيم – Split.
والاخر للتحكم بازاحة التأثير نفسة ” Intersection Displacement “, مع جعل قيمته الافتراضية تساوي 1, وهو ما ستقوم بقسمة ناتج الطرح عليه.

تلوين الدرع

ولكن الان مازال هذا الدرع بدون لون او حياة, لذا ستقوم الآن باضافتها له عن طريق عمل ثلاثة متغيرات ,
متغير من نوع نسيج ثنائي الأبعاد  Texture2D, ليكون هو النمط الذي سيظهر علي الدرع.

ومتغيران من نوع اللون Color, ليكونان المتحكمان بقيم الألوان في التدريج الذي ستقوم بعمله الآن,.

وتأكد من جعلهما من نوع HDR, ومن ثم إضافة عقدة الاستيفاء – Lerp, وتوصيل اللون الأساسي في مدخل A, ولون التقاطع في مدخل B, وتوصيل ناتج عقدة Smooth Step في مدخل T.

ومن ثم ضرب ناتج عقدة Lerp بعقدة Sample Texture 2D التي قمت بتوصيل متغير النمط الذي سيتم إضافته من خارج المحرر بمدخل الـ Texture, وحينها يمكنك الان توصيل كل هذا بمخرج اللون الأساسي – Base Color.

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

يمكنك بالطبع تركها إن كنت تراها مناسبة للعبتك, لكن في حالتي ارغب في تعديلها لأخفف المناطق السوداء, وسيكون هذا عن طريق العودة للمحرر واضافة عقدة Remap, وتوصيلها بعقدة Sample Texture 2D, وجعل قيمها كما في الصورة, ويمكنك تغيير القيمة 0.3 حسب ما تريد, والان يمكنك ان ترى أن المشكلة قد حلت.

تأثيرات الحركة

تبقي الان فقط إضافة ما يجعل النمط يتحرك علي المجسم الخاص بالدرع, وهذا سيكون باضافة متغيرين اولا من نوع المتجه الثنائي – Vector 2, أحدهما للتحكم بتكرار النمط مع جعل قيمته 1 و 1. والآخر للتحكم بسرعة تحرك النمط.

ثم اضافة عقدة التكرار والإزاحة – Tiling And Offset, وتوصيل متغير التكرار في مدخل التكرار – Tiling. وبعد ذلك توصيل ناتج ضرب عقدة الزمن بمتغير سرعه تحرك النمط, وفي النهاية توصيل عقدة التكرار والإزاحة, في مدخل الـ UV بعقدة Sample Texture 2D.

ملخص

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

1 1 vote
Article Rating
Subscribe
نبّهني عن
guest

0 تعليقات
Inline Feedbacks
View all comments