رؤية المفترس: تأثير الرؤية الحرارية


أثناء البحث عن أفضل تطبيق للتظليل الحراري ، واجهت تظليل matcap تم نشره بواسطة bgolus في منتديات الوحدة - وهي نقطة انطلاق جيدة.

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


سوف نتحرك بالترتيب ، أولا وظيفة قمة الرأس:

1. عادي للكائن:

float3 v.normal; 

2. الوضع الطبيعي للقمة ، يبدأ من النقطة المرجعية للنموذج

 float3 vertexN = normalize(v.vertex); 

3. المنتج المتجه لهذه القيم:

 float3 viewCross = cross(vertexN, v.normal); 

4. النصف crossproduct.xy والتحيز لإنشاء نتيجة أكثر توازنا

 o.cap = viewCross.xy * 0.5 + 0.5; 

في وظيفة شظية

5. إنشاء قناع وضرب

 fixed4 m = tex2D(_Mask, i.uv); i.cap *= (1 - mg); 

6. إسقاط نسيج اللون على النتيجة. (أنا استخدم النمط البرتقالي البنفسجي ، ولكن يمكنك استخدام تدرج أكبر أو أي شيء آخر)


 fixed4 color = tex2D(_Matcap, i.cap); 

هذا كل شيء ، التظليل الحراري جاهز ؛ النقطة المهمة هي أنك تحتاج إلى منحها العلامة الخاصة بك بحيث يقوم البرنامج النصي البديل بتعيينها بشكل صحيح ، لذا تأكد من أن التسميات تحتوي على هذا:

  Tags{ "ThermalVision" = "ThermalColors"} 

هنا هو تظليل كامل: رابط Pastebin

استبدال شادر


بحيث يمكن للتظليل الحراري استبدال آخر ، تحتاج فقط إلى تطبيق نفس الملصق على التظليل الذي يجب استبداله:

 Tags{ "ThermalVision" = "ThermalColors"} 

وتأكد من أن جميع الخصائص الضرورية مفتوحة للتظليل القابل للاستبدال:

 _Mask("G = no thermal", 2D) = "black" {} _Matcap("Matcap", 2D) = "white" {} _Strength("Mask Strength", Range(0,2)) = 0.4 

لتبديل التظليل ، تحتاج إلى إضافة كاميرا ثانية والاتصال بها

 camera.SetReplacementShader(Shader, "NamedShader"); 
.


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


اضبطه على لون خالص وخلفية سوداء.


في "معاينة الكاميرا" ، يجب أن ترى كل شيء كما هو في الكاميرا العادية ، فقط بدون skybox ، مع خلفية سوداء.

حان الوقت لتغيير التظليل ،

أضف متغير Shader العام واسحب شادر التأثير الحراري عليه.

ثم أضف الكاميرا كمتغير جديد وفي Start call قم SetReplacementShader باستخدام التظليل العام والاسم الوارد في التسميات

  public Shader ThermalShader; Camera cam; void Start() { cam = GetComponent<Camera>(); cam.SetReplacementShader(ThermalShader, "ThermalVision"); } 


بعد البدء ، يجب أن ترى التأثير الحراري فقط على الشبكات ذات التظليل المستبدل.

تأثير الصورة



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

صورة تأثير شادر: رابط إلى Pastebin

أضف هذا البرنامج النصي البسيط إلى الكاميرا الحرارية واسحب التظليل باستخدام Image Effect

أضع نفس الصورة كما في التظليل الحراري ، لكن يمكنك استخدام صورة أخرى!

الرؤية الحرارية التبديل النصي



الآن مجرد تبديله خلال اللعبة.



لتبديل المتغير Boolean ، الذي يتضمن الكاميرا وأداء الاستبدال وكمية المعالجة اللاحقة ، استخدم المفتاح T. للتبديل مرة أخرى ، اضغط T. مرة أخرى.

في النهاية ، أضف القليل من المعالجة اللاحقة إلى الغرفة الحرارية. أضفت انحراف لوني وعمق الحقل.

في ما يلي النص البرمجي للتبديل الحراري: رابط إلى Pastebin Link

(عند استخدام PPS 2 ، قد تحتاج إلى الترقية إلى إصدار أحدث من مكدس Post Processing)

بالإضافة إلى ذلك


إذا كنت لا تريد التأثير للتألق من خلال الجدران ، فبالنسبة للكاميرا البديلة ، اضبط "Solid Color" على "Not Clear". إذا كنت تريد أن يتحول لون Skybox إلى اللون الأسود أيضًا ، فحينها في رمز التبديل ، قم بتخزين مادة skybox مؤقتًا واضبطها على أنها فارغة

 Private Material SkyboxMaterial; skyboxMaterial = RenderSettings.skybox; RenderSettings.skybox = null; 

ثم أعده عندما يتم إيقاف التأثير الحراري:

 RenderSettings.skybox = skyboxMaterial; 



أصبح الآن أقل شبهاً بميكانيكا اللعب وأشبه بتأثير مرئي بسيط.

بداية سريعة إذا كنت غير مهتم بالتفسيرات


1. قم بتنزيل تأثير التظليل الحراري

2. قم بتنزيل برنامج Toon shader الذي تم استبداله أو أضف إلى التظليل الخاص بك "ThermalVision" = "ThermalColors" والمتغيرات _Matcap ، _Mask ، _Strength .

3. قم بإنشاء كاميرا ثانية ، ابنة للكاميرا الرئيسية ، اضبطها على لون خالص ، خلفية سوداء

4. خذ التظليل الحراري مع Image Effect ، قم بإنشاء مادة وإضافة البرنامج النصي ThermalBlit إلى هذه الكاميرا الثانية عن طريق سحب هذه المواد.

5. إضافة البرنامج النصي ThermalController ، اسحب تظليل التأثير الحراري ، أضف مقدار المعالجة اللاحقة (اختياري)

6. اضغط T لتشغيل الرؤية. (ما يجب عرضه يجب أن يحتوي على تظليل بديل).

موارد


رمز التظليل الحراري: Pastebin Link

رمز Shader يحل محل Toon shader: رابط إلى Pastebin

صورة تأثير رمز شادر: رابط إلى Pastebin

C # Blit Script: Pastebin Link

C # سيناريو تبديل الرؤية الحرارية: رابط إلى Pastebin

صور Matcap:





معلومات إضافية حول تظليل استبدال:

هذا مقطع فيديو قديم عرفت منه أولاً: فيديو على تظليل بديل عن طريق جعل الأشياء تبدو جيدة في الوحدة

Source: https://habr.com/ru/post/ar482928/


All Articles