1- شيدر نيران كرتونيه 2d في محرك يونِتي

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, الى مُعرف النطاق. ويمكنك اضافة اي تاثير اخر تريده.
ثم تقوم بتفعيل المعالجة النهائية – Post Process في الكاميرا.

اضافة قطع بدون شفافية

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

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

وهذا التشويش يكون من نوع فورونوي – Voronoi, و يمكنك إضافته عن طريق عقدة Voronoi, ثم بتوصيله في مخرج حد قطع الشفافية – Alpha Clip Threshold, ولكن قد لا تجده متواجدا عندك.

 كي تظهره عليك الذهاب لنافذة إعدادات المحرر – Graph Settings, و تفعيل خيار قطع الشفافية – Alpha Clipping, وبعدها سيظهر في قائمة المخارج بالاضافة للشفافية – Alpha, وهو ما تحتاجه ايضا.

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

لكن مهلاً, إن تابعت اي مقالة سابقة فلا بد أنك لاحظت انه لاضافة اي شفافية لابد من تغيير نوع الشيدر اولا , وانت هنا محق تماما.

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

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

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

ملاحظة : افتراضيا الشكل الذي يعرض عليه الشيدر في نافذة العرض هو الكُره, ويمكن تغييره بالضغط عليه بالزر الأيمن للفأرة واختيار الشكل الذي تريده, وهنا قمت باختيار Sprite.

هكذا عرفت فكرة حد قطع الشفافية , و الان تقوم بتغيير بسيط وهو عكس الناتج من عقدة فورونوي – Voronoi, عن طريق عقدة واحد ناقص – One Minus واعادة توصيلها في نفس المخرج.

 ويمكنك عمل متغير من نوع رقم عشري – Float ليتحكم بكثافة التشويش, وتحديد قيمته الافتراضي -5 على سبيل المثال- ثم توصيله في المدخل الخاص به.

والان ربما تلاحظ ان شكله يناسب النيران اكثر, ان لم يكن الامر كذلك فلا تقلق, مع التقدم في صنعه يتضح شكله.

اضافة الحركة للنيران:

الان وقت تحيرك هذا التشويش عن طريق عقدة Tiling And Offset, وبعدها توصلها في مدخل اليوفي – UV في عقدة Voronoi, ومن خلال تغييرك قيمة الإزاحة – Offset, تلاحظ أن نسيج التشويش يتحرك تبعا لما غيرته من القيمة الأفقية – X, او الرأسية – Y.

و لجعله يحدث بشكل مستمر  تضيف عقدة الزمن – Time, والتي توفر قيمة تزداد بشكل مستمر منذ لحظة فتح المحرك.

ولكن ان قمت بتوصيلها مباشرة في مدخل الإزاحة – Offset تجد ان التشويش يتحرك قطريا مع عدم القدرة على التحكم في سرعته.

 يمكنك تركه هكذا إن كان ما تريد, ولكني اريد التحكم في اتجاهه وسرعته, لهذا أقوم بعمل متغير  من نوع متجه ثنائي – Vector 2 مع تعيين قيمته الافتراضية 0 للـ X و -1 للـ Y, وبعدها ضربه مع عقدة الزمن و توصيله في مدخل الازاحة – Offset.

تلاشى النيران بشكل تدريجي

والان وقت اضافة ما يجعلك تلاحظ كيف يمكن لهذا النسيج البسيط ان يكون نيرانا ملتهبة.

الآن بالعودة لمخرج الشفافية و حد قطع الشفافية ان قمت بتغيير قيمة مخرج الشفافية تلاحظ انه بزيادة القيمة حتى الـ 1 اصبح الشكل اكثر امتلائاً, بينما عند تقريبها من الـ 0 يصبح الشكل أكثر تلاشياً حتى يتلاشى تماما.

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

ولابد انك عرفت بالفعل ما هو من عنوان الفقرة, وهو نسيج لتدريج ما, فأنشأ متغير جديد من نوع نسيج ثنائي الأبعاد – Texture 2D, ليكون مسئولا عن أخذ هذا التدريج واضافته للشيدر.

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

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

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

لذا مازال امامنا بعض العمل لاضافته لتبدو النيران طبيعيه اكثر وغير ثابتة, وايضا لا تزال هناك ألوان لاضافتها لتبدو فعلا كالنيران. هذه الاشياء واكثر مازالت تحتاج للعمل عليها, وهذا بالضبط ما اعرضه في الجزء الثاني.

الجزء الثاني : 2- شيدر نيران كرتونيه 2d في محرك يونِتي

0 0 votes
Article Rating
Subscribe
نبّهني عن
guest

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