تقنية الشارات – Decals وكيف تعزز تفاصيل لعبتك بها

unity

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

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

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

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

ما هي الشارات – Decals

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

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

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

صورة توضيحية من وثائق يونتي الرسمية

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

اولا جهز المشروع بتغيير نظام الرسومات فيه، لتصبح قادرا على استعمال محرر الشيدر.
من خلال قائمة 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 في الكاميرا.

بعد هذا تحتاج لاضافة خاصية اظهار الشاره – Decal Renderer Feature, ويمكنك ملاحظة قيمة أقصى مسافة – Max Draw Distance, والتي تعبر عن أقصى مسافة يمكن منها رؤية الشارة, والتي إن تجاوزتها لن تصبح قادرا على رؤيتها

كيف تستعملها

ولكي تضيف الشارات تحتاج بشكل اساسي لعنصرين, اولهم هو الخامة – Material التي تحمل النسيج – Texture الخاص بالشارة, وهذه الخامة ليست عادية, وإنما تم تجهيزها خصيصا لهذا الغرض.
والثاني هو الكائن المسؤول عن اسقاط هذه الشارة نفسها على السطح الذي تريده, أي يمكنك اعتبار هذا الكائن هو جهاز العرض الضوئي, والخامه هي المحتوى الذي يدخل لهذا الجهاز ليسقطها على السطح المقابل له.
ولحسن الحظ فإن محرك يونتي يوفر واحدة جاهزة للاستخدام, ويمكنك ايجادها من خلال قائمة Create >> Material, ومن ثم بعد انشائك لها تقوم بتغيير نوع الشيدر من خلال Shader Graphs / Decal, وانتبه من ان تختار المتواجدة في Legacy Shaders لأنها غير مدعومة هنا.

والان تبقي وضع الكائن الخاص بإسقاط هذه الشارات علي السطح الذي تريده, والذي يسمى هنا مسقط الشارة – Decal Projector, والذي يمكنك إيجاده من خلال إنشاء كائن جديد من قائمة Rendering >> URP Decal Projector.

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

مركبة مسقط الشارة

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

وفي بدايتها يمكنك ملاحظة هذه الحقول الثلاثة والتي تدعي بالعرض – Width, الارتفاع – Height, وعمق الإسقاط – Projection Depth, وربما لاحظت تشابه معانيها مع الأبعاد الثلاثة – الطول والعرض والارتفاع – ويمكنك اعتبارهم كذلك بالفعل.

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

وإن كنت قد شاهدت أي من المقالات التي نقوم فيها باستعمال محرر الشيدر – Shader Graph يمكنك التعرف على التكرار – Tiling, والإزاحة – Offset ومن اسمهم يمكنك معرفة وظيفتهم, ونفس الأمر مع الشفافية – Opacity.

أما بالنسبة لمسافة الرسم – Draw Distance فكما ذكرت بالاعلي تماما, لكن الفرق انها هنا خاصه لهذا المسقط فقط, وبداية التلاشي – Start Fade هنا ليست مسافة وإنما نسبة حيث انها تعبر عن البعد الذي عند الوصول إليه تبدأ الشارة بالتلاشي تدريجيا حتي يصبح البعد يساوي مسافة الرسم وحينها تختفي تماما.

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

تغيير كامل

ولكي ترى مالذي يمكن تحقيقه فقد استعملت هذه الحزمة Sci-Fi PBR Props والتي صنعت بواسطة NeutronCat  ويمكنك رؤية كيف تبدو في البداية على اليسار كم انها جديده و خرجت لتوها من الفرن, وهذا بالتأكيد ممتاز ان كان يناسب لعبتك.

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

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

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

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

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