استخدام النقوش في جودو

من موسوعة حسوب

ملاحظة: النقوش decals مدعومة فقط في أنظمة Clustered Forward وForward Mobile، وليس في النظام الخلفي المتوافق compatibility backend.

إذا كنت تستخدم النظام الخلفي المتوافق، فيُفضل استخدام Sprite3D كبديل لوضع النقوش على الأسطح التي تكون في الغالب مسطحة.

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

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

في هذه الصفحة، ستتعلم:

  • كيفية إعداد النقوش في محرر ثلاثي الأبعاد
  • كيفية إنشاء النقوش أثناء اللعب في مشهد ثلاثي الأبعاد (مثل آثار الرصاص).
  • كيفية موازنة إعدادات النقوش بين الأداء والجودة

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

حالات الاستخدام

الزينة الثابتة

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

نظرًا لأن النقوش يمكنها إضافة خصائص فيزيائية متعلقة بالتصيير Phyiscal-Based Rendering (اختصارًا PBR) الخاصة بها على السطوح التي تُظهر عليها، يمكن استخدامها أيضًا لإنشاء آثار الأقدام أو البقع الرطبة.

إضافة التراب فوق جسم هندسي باستخدام النقوش
إضافة التراب فوق جسم هندسي باستخدام النقوش

عناصر اللعب الديناميكية

يمكن للنقوش أن تمثل تأثيرات لعب مؤقتة أو دائمة مثل تأثيرات الرصاص والحروق الناتجة عن الانفجارات.

يمكن أن تصنع النقوش باستخدام عقدة AnimationPlayer أو نص ما بحيث تتلاشى مع مرور الوقت (ثم يتم إزالتها باستخدام queue_free()‎) لتحسين الأداء.

ظلال الكتلة

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

يمكن للعناصر الديناميكية بفضل ظلال الكُتلة أن تلقي ظل تقريبي. ليس فقط يساعد هذا في إدراك العمق في المشهد ولكن يمكن أيضًا أن يكون عنصرًا في اللعبة، خاصة في ألعاب التي تعتمد على المنصات platformers ثلاثية الأبعاد. يمكن تمديد طول ظل الكُتلة ليعلم اللاعب أين سيهبط إذا سقط عموديًا.

حتى مع الإضاءة الحية، يمكن لظلال الكتلة أن تكون مفيدة كشكل من أشكال الاغتراق البيئي في الحالات التي تكون فيها التغييرات العشوائية في الإضاءة الجوفية عبر الشاشة SSAO مكلفة جدًا أو غير مستقرة. على سبيل المثال، تُمثّل ظلال السيارات السفلية بشكل جيد باستخدام ظلال الكتلة.

مقارنة لظلال الكتلة تحت الكائن

دليل البداية السريعة

تشكيل النقوش من المحرر

  1. أنشئ عقدة نقش من المحرر ثلاثي الأبعاد.
  2. وسع القسم الخاص بالملامس Textures في المحرر وأضف ملمسًا ما من Textures > Albedo.
  3. حرّك عقدة النقش نحو عنصر ما ثم دوّره بحيث يكون النقش مرئي بوضوح (وبالاتجاه الصحيح). إذا بدا النقش معكوسًا، جرّب تدويره 180 درجة. يمكنك التحقق مرتين مما إذا كان في الاتجاه الصحيح عن طريق زيادة معاملات Parameters > التلاشي الطبيعي Normal Fade إلى 0.5. هذا سيمنع النقش من إسقاطها على الأسطح التي لا تواجهه.
  4. هيّئ النقش لمنعه من التأثير على العناصر الديناميكية إذا كان من المفترض أن يؤثر على العناصر الثابتة فقط (أو العكس). لفعل ذلك، غيّر خاصية قناع الحجب Cull Mask للنقش لاستبعاد طبقات معينة. بعد ذلك، عدل عُقَد MeshInstance3D للعناصر الديناميكية لتغيير طبقات الرؤية الخاصة بها. على سبيل المثال، يمكنك نقلها من الطبقة 1 إلى الطبقة 2، ثم تعطيل الطبقة 2 في خاصية قناع الحجب للنقش.

خواص عقدة النقش

  • المدى Extents: حجم النقش. يحدد المحور Y طول إسقاط النقش. حافظ على طول الإسقاط قصيرًا قدر الإمكان لتحسين فرص الحجب وبالتالي تحسين الأداء.

الملامس

  • اللون القاعدي Albedo: الخريطة اللونية (الدُفعية/اللون) المستخدمة للنقش. في معظم الحالات، هذا هو الملمس الذي يجب ضبطه أولاً. إذا كنت تستخدم خريطة طبيعية أو خريطة ORM، خريطة اللون القاعدي يجب أن يتم ضبطها لتوفير قناة ألفا. ستُستخدم قناة الألفا كقناع لتحديد مدى تأثير الخرائط الطبيعية/ORM على السطح الأساسي.
  • الاعتيادي Normal: الخريطة الطبيعية المستخدمة للنقش. يمكن استخدامها لزيادة التفاصيل المُدركة على النقش عن طريق تعديل كيفية تفاعل الضوء معها. يتم ضرب تأثير هذا الملمس بقناة ألفا للخريطة اللونية (وليس مزيج اللون Albedo Mix).
  • ربط الكائنات العلائقية ORM: خريطة الاختناق/الخشونة/المعدنية المستخدمة للنقش. هذا تنسيق مُحسَّن لتخزين خرائط المواد PBR. يتم تخزين خريطة الاختناق الجوي في القناة الحمراء، وخريطة الخشونة في القناة الخضراء، وخريطة المعدنية في القناة الزرقاء. تأثير هذا الملمس يُضرب بقناة ألفا للخريطة اللونية (وليس مزيج اللون Albedo Mix).
  • الإشعاع Emission: الملمس الخاص بالإشعاع لاستخدامه في النقش. على عكس قناة اللون، سيبدو هذا الملمس وكأنه يشع في الظلام.

معاملات

  • طاقة الاشعاع Emission Energy: سطوع ملمس الشعاع.
  • مزيج اللون القاعدي Albedo Mix: الأمر الذي يحدد ملمس النسق اللوني. وعلى عكس استخدام نسق اللون القاعدي الذي يحتوي على قناة ألفا أكثر شفافية، فإن تقليل هذا القيمة دون 1.0 لا يُخفف من تأثير النسق الطبيعي/ORM على السطح الأساسي. يُضبط هذا على 0.0 عند إنشاء نقوش طبيعية/ORM مثل آثار الأقدام أو البقع الرطبة.
  • التلاشي العادي Normal Fade: تتلاشى النقوش إذا أصبحت الزاوية بين مستطيل النقش (AABB) وسطح الهدف كبيرة جدًا. قيمة 0.0 تعرض النقش بغض النظر عن الزاوية، بينما قيمة 0.999 تقيد النقش على الأسطح التي تكون تقريباً عمودية. تعيين قيمة التلاشي العادي أكبر من 0.0  يترتب عليه تكلفة أداء صغيرة بسبب حسابات زوايا الطبيعة الإضافية.

التلاشي العمودي

  • التلاشي العلوي Upper Fade: المنحنى الذي يتلاشى عليه النقش كما يبتعد السطح عن مركز AABB (نحو زاوية الإسقاط للنقش). القيم الإيجابية فقط هي الصحيحة.
  • التلاشي السفلي Lower Fade:  المنحنى الذي يتلاشى عليه النقش كما يبتعد السطح عن مركز AABB (بعيداً عن زاوية الإسقاط للنقش). القيم الإيجابية فقط هي الصحيحة.

تلاشي المسافة

  • مفعل Enabled: يتحكم فيما إذا تلاشي المسافة (نوع من مستويات التفاصيل) تم تفعيله، حيث سيتلاشى النقش عبر البداية Begin + الطول Length، بعد ذلك سيتم استبعاده ولن يتم إرساله إلى مقلل الضوء على الإطلاق. استخدم هذا لتقليل عدد النقش النشطة في المشهد وبالتالي تحسين الأداء.
  • البداية Begin: المسافة من الكاميرا التي يبدأ النقش بالتلاشي عندها (بوحدات الثلاثية الأبعاد).
  • الطول Length: المسافة التي يتلاشى فيها النقش (بوحدات الثلاثية الأبعاد). النقش ببطء يصبح أكثر شفافية على مدى هذه المسافة ويصبح غير مرئي بشكل كامل في النهاية. القيم الأعلى تنتج تلاشي تحولي بشكل أسلس، الذي يكون مناسب أكثر عندما تتحرك الكاميرا بسرعة.

قناع الحجب

  • قناع الحجب Cull Mask: يحدد أي طبقات من VisualInstance3D سيسقط عليه هذا النقش. بشكل افتراضي، يؤثر النقش على جميع الطبقات. يُستخدم هذا لتحديد أنواع العناصر التي ستستقبل النقش والتي لن تستقبله. وهذا مفيد خاصةً للتأكد من أن العناصر الديناميكية لا تستقبل بالصدفة النقش المقصود للتضاريس تحتها.

تحسين الأداء والجودة

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

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

الطريقة التي يتم بها رسم النقشات لها أيضا تأثير على الأداء. Rendering > Textures > Decals > Filter من إعدادات المشروع المتقدم تسمح لك بالتحكم كيف بنى النقش يجب أن تتم تصفيتها. Nearest/Linear لا  تستخدم التفصيلات السلمية، ومع ذلك، ستبدو النقشات حبيبية عند النظر إليها من بعيد. Nearest/Linear Mipmaps ستبدو أكثر نعومة عند النظر من مسافات بعيدة، لكن النقشات ستبدو غير واضحة عندما يتم النظر إليها من زوايا مائلة. يمكن حل هذا باستخدام Nearest/Linear Mipmaps Anisotropic، الذي يوفر أعلى جودة ولكن يستغرق وقتاً أطول للعرض.

إذا كان مشروعك يحمل أسلوب فني بيكسل أرت، فكر في ضبط الفلترة لأحد القيم Nearest لكي يتم استخدام الفلترة الأقرب للجار. وإلا، استمر في استخدام القيمة Linear.

الحدود

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

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

عند استخدام محرك الرسم Forward+‎، يستخدم جودو نهج التجميع لعرض النقوش. يمكن إضافة العديد من النقوش حسب الحاجة (طالما يسمح الأداء بذلك). ومع ذلك، لا تزال هناك حد افتراضي لعدد العناصر المتجمعة التي يمكن أن تكون حاضرة في رؤية الكاميرا الحالية ويبلغ 512 عنصرًا مجتمعًا. العنصر المتجمع هو ضوء كروي، أو ضوء البقعة، أو نقش، أو جسم تصوير انعكاسي reflection probe. يمكن زيادة هذا الحد عن طريق ضبط  Rendering > Limits > Cluster Builder > Max Clustered Elements من إعدادات المشروع المتقدمة.

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

مصادر