انشاء اثار غبار كرتونيه بمحرر الشيدر

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 عن طريق
قائمة  Create >> Shader Graph >> URP >> Unlit Shader Graph.

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

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

إضافة التلاشي

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

ولكن إن كنت تريد اضافة تشويش معك مسبقا على هيئة نسيج فيمكنك ذلك وعبر قرائتك للمقاله السابقة التي ذكرتها فقد عرفت بالفعل كيف يمكنك فعل هذا.

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

وبعدها تلاحظ انه بتغيير قيمة مخرج الشفافية – Alpha في الشيدر فإن المنمذَج يتلاشى أيضا بمقدار التغيير, حيث يكون ظاهرا تماما عندما تكون قيمة الشفافية 1, وتام الاختفاء عندما تكون 0.

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

وما يجعلها أكثر مشابهة لما نريد التوصل اليه هو تغيير الشكل الذي يتم تطبيق هذا الشيدر عليه, والان يمكنك اغلاق محرر الشيدر لأنك ستبدأ الآن بعمل نظام الجزيئات – Particle System الخاص به, والذي تم الحديث عنه سابقا ايضا.

اضافة نظام الجزيئات

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

وتأكد من ترك التكرار – Looping مفعلا لكي لا يتوقف النظام عن العمل بعد الفترة المحددة فيه.

قمت بجعل مدة الحياة الابتدائية – Start Life Time بقيمة 1 بدلا من الـ 5 ثواني الافتراضية والتي تعتبر كثيره جدا.

وأما السرعة الابتدائية – Start Speed فقمت بإلغائها تماما وتعيينها لـ 0  لاني لا اريد لجزيئات الغبار ان تتحرك بعد تولدها, لكن يمكنك تجربة اعطائها قيمة صغيره مثل 2 وتري ان كانت تعجبك أكثر.

الحجم الابتدائي – Start Size جعلته عشوائيا بين قيمتين كبيرتين جدا, ولاننا الان نعمل مع الأسلوب الكرتوني فيمكننا تجاهل بعض الواقعية, رغم أن هذا قد يكون منطقيا أكثر عند رؤيتنا للنتيجة النهائية.

اما الدوران الابتدائي – Start Rotation  فقد ضبطته ليؤثر على الأبعاد الثلاثة للجزيء وبقيم عشوائية أيضا بين 0 و 360 لكي يتولد الجزيء بزاوية دوران مختلفه كل مره.

وبالنسبة لفضاء المحاكاة – Simulation Space فمن المهم جعلها World لكي لا تكون الجزيئات مرتبطة بموقع اللاعب نفسه.

والان ننتقل للوحة الباعث – Emission والتي تحتاج منها فقط إلغاء تولد الجزيئات طول الوقت عن طريق جعل قيمة المعدل بمرور الوقت – Rate over Time تساوي الـ 0.

ومن ثم تقوم بوضع قيمة ما للمعدل بالنسبة للمسافة – Rate over Distance, وهذا لكي تتولد الجزيئات فقط كلما تحرك الكائن الحامل للنظام, وجعلتها هنا صغيره لاني حركت الشخصية بسرعه كبيره, ويمكنك تغييرها بالزيادة او النقصان للتحكم بعدد الجزيئات التي تتولد لكل وحدة مسافة.

وبالنسبة للوحة الشكل – Shape فقد الغيتها لاني اريد للجزيئات أن تتولد دائما من نفس النقطة.

بعدها فعلت لوحة الحجم بمرور فترة الحياة – Size over Lifetime لكي اعطي الجزيئات القدرة على ان يزيد حجمها طول الوقت حتى تموت.

وهذا عن طريق اختياري لأحد المنحنيات الموجودة مسبقا مع التعديل قليلا على قيمة البداية له لكي يتولد كل جزيء بحجم صغير بدلا من تولده بحجم يساوي 0 أي بلا حجم.

والان حان وقت تغيير هذا الشكل الممل للجزيئات المنطلقة.

ستذهب اولا للوحة الاظهار – Renderer وتغير نوع الاظهار ليكون منمذَج – Mesh وبعدها تضع المجسم الذي تريده, وفي حالتي فقد قمت بعمل واحد خاص ويمكنك معرفة كيفية عمله من المقالة الخاصة به.

كيفية عمل منمذجات ملساء في برنامج بلندر

ولا تنس وضع الخامه الحامله للشيدر في الخانه الخاصه بها

بعد ذلك قمت بتغيير محاذاة الإظهار – RenderAlignment لتكون محلية – Local وهذا لكي تكون الجزيئات غير مقيده بمكان الكاميرا وبهذا تصبح لها زاوية الدوران الخاصة بها فقط.

لكن تبقى شيء مهم جدا, وهو انك قمت بعمل الجزء الخاص بالتلاشي في الشيدر, لكن كيف يتم التواصل بين الشيدر ونظام الجزيئات؟

التواصل بين الشيدر ونظام الجزيئات

لفعل هذا تحتاج للرجوع لمحرر الشيدر مجددا ومن ثم اضافة عقدة اليوفي – UV وتوصيلها بعقدة التقسيم – Split, ومن ثم توصيل B في مخرج الشفافية – Alpha.

تقوم بحفظ الشيدر والعودة مجددا لنظام الجزيئات وتحديدا لوحة الإظهار ومن ثم تفعيل بيانات النقاط الخاصه –  Custom Vertex Stream واضافة Custom1.x عن طريق إشارة الإضافة +.

ما حدث هنا هو انشائك لما يمكن تسميته برابط, ويربط تحديدا بين الشيدر ونظام الجزيئات عن طريق اليوفي, وما تراه مكتوبها هو TEXCOORD0.z ومعناه انه يستعمل قناة اليوفي الأولى ومنها يستعمل الـ z .
ولماذا ليس x أو y؟

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

الان وقد قمت بالتوصيل بنجاح, كيف يمكنك التحكم بهذه القيمة؟
عن طريق لوحة البيانات المخصصة – Custom Data ومن ثم تحديد الوضع – Mode ليكون متجه – Vector وجعله واحدا فقط لانك تريد التحكم بقيمة التلاشي فقط.

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

وبهذا أخيرا يمكنك اعتبار انك انتهيت من العمل وما تبقى هو مجرد وضع نظام الجزيئات هذا على شيء متحرك وهذا ما قمت به هنا.

يمكنك أن ترى بالفعل انه بوجود هذا التأثير فإن سرعة اللاعب تبدو أكثر فعالية مما لو كانت بدون المؤثرات الخاصة بهذا الغبار الكرتوني.

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

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

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