شلال ريمي الأنيق في محرك اللعبة: اصنع مجرى مائي

هذا هو الجزء الثاني (والأخير) من دليل الشلال Unity أو UE4 بعد استلهامه من لعبة RiME. أول من اكتشف الأدوات ، واختار بيئة التطوير وخلق تظليل للدوائر المائية. لماذا بدأت بهذا؟ كل شيء بسيط: يتم استخدام معظم الأساليب المطلوبة الآن عند إنشاء شلال. ولكن هناك بعض التلميحات. لن نسحب - دعنا نذهب تحت القط.



لنبدأ بما هو واضح - خذ لوحة وشبكة منتظمة. قد تتفاجأ: لماذا يوجد الكثير من المضلعات؟ كما هو الحال في Simon Falls ، أستخدم إزاحة الرأس لإزاحة رؤوس النموذج بأبعاد ثلاثية خلال التظليل. ولجعلها تبدو جميلة ، نحن بحاجة إلى قمم إضافية. للتحسين ، يمكنك إنشاء شبكات LOD (مستوى التفصيل) مع عدد أقل من المضلعات ، وإجبار الوحدة على التبديل إلى الطرز ذات الدقة المنخفضة.



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

كما هو الحال مع شبكة الدائرة المائية ، يجب أن يكون للأشعة فوق البنفسجية أقل عدد من اللحامات على النموذج عند استخدام مواد التبليط. يرتبط أحد جانبي غلاف UV بـ 0 في اتجاه U ، والآخر بـ 1. تذكر أن عرض غلاف UV يجب أن يتناسب مع قيمة عدد صحيح من مساحة U (على سبيل المثال ، التبليط 1 أو 2 أو 3). إذا قمنا بتجميع 1.2 مرة في اتجاه U ، فسوف يظهر التماس عند التقاطع. ونحن بحاجة إلى نسيج البلاط سلس.



هذه هي الطريقة التي تبدو بها الخريطة العادية متجانبة 3 مرات في الاتجاه U. لاحظ كيف أن الجانب الأيمن من الصورة ثلاثية الأبعاد يناسب تمامًا 1 في اتجاه U. يعني تعيين التجانب إلى 3 في اتجاه U أن الملمس يتكرر 3 مرات بين 0 و 1 في اتجاه U (الصورة أدناه توضح مساحة الأشعة فوق البنفسجية من 0 إلى 1).



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



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



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



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


ملاحظة: هذه مادة جديدة. قم بإنشاء مادة جديدة وتطبيق تظليل جديد عليها (انظر الجزء 1 ).

نستخدم مرة أخرى نفس الملمس مع العديد من خيارات سرعة / اتجاه Panner ، بالإضافة إلى تجانب الأشعة فوق البنفسجية (نقلب أحدها ، ونعطي قيمة سالبة لـ U). إضافتها إلى بعضها البعض للحصول على شعور أكثر عشوائية التأثير. ونحن نستخدم ناتجهم لإضافة العديد من الإعدادات الأخرى: التعتيم ، اختلاف اللون والتهجير في قمة الرأس.



أنا أيضا استخدام الخريطة العادية التمرير. واحد فقط ، لأنه يتحرك بسرعة كبيرة مع اثنين من Panner للتباين ، أنه في هذه الحالة لن يكون هناك فرق. اضربها بقيمة الأزرق المساوي 1 (يشار إلى 255 في gif - وهذا هو عندما يكون لكل قناة 256 خطوة ، من 0 إلى 255) ، وكذلك قيم الأحمر والأخضر تساوي 60 (أو القيمة 0.23 إذا كنت تستخدم المقياس من 0 إلى 1). ونتيجة لذلك ، أصبحت الخريطة العادية المشبعة أكثر هدوءًا وتوازنًا. لإرجاع مزيد من القواعد الطبيعية المكثفة ، احتفظ بقيمتي R و G متماثلتين وزادهما. حتى تحصل على مزيد من التخصيص داخل التظليل نفسه.



أنشأنا شبكة ، والأشعة فوق البنفسجية وغيرها من المكونات التي ستكون هناك حاجة لشلال للعمل. دعنا نحلل بعض الأشياء في GIF:



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

يمكنني استخدام Lerp (الاستيفاء الخطي) بلونين وملمس أبيض وأسود للتمرير الذي صنعته في البداية كإشارة (ألفا). يخدم هذا الملمس بشكل أساسي كقناع لاختيار ما إذا كان يجب إظهار اللون الأزرق أو الأبيض. و Add متصل بعقدة ألوان قمة اللون (عقدة بألوان قمة الرأس).



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



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



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

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



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



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

هذا هو الشلال دون النزوح قمة الرأس:



وهنا مع النزوح قمة الرأس:



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

فكيف نعرف في أي اتجاه ستتحرك القمم؟ ما هو صعودا وهبوطا؟

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



العقدة العادية لـ Vertex تقوم بإخراج قيم RGB التي تستند إلى الاتجاه الطبيعي لرؤوس الشبكة. في التظليل ومع القيم الطبيعية عمومًا ، يتم استخدام قيم RGB للتعبير عن كائن إحداثيات 3D XYZ في مساحة ثنائية الأبعاد. بحيث يمكن تحريك Panner بالأبيض والأسود في التظليل على طول سطح كائن ثلاثي الأبعاد ، يمكننا استخدام القيم العادية لقمة RGB. أضفت قمة اللون إلى قمم لجعل أسفل الشبكة أكثر محدبة. وأيضًا بعض العقد للتحكم في قيمة الإزاحة (هذا أمر طبيعي إذا كانت قيمك أقل من 0 أو أعلى من 1).



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



يعتمد إخراج RGB (XYZ) للعقدة العادية لـ vertex على القيم الطبيعية للشبكة ، مما يعطينا هذه النتيجة.

هنا هو الهيكل الكامل للعقد. هذا يظهر أين وكيف يربط كل شيء.



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

بعض الروابط المفيدة حول الموضوع:

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

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


All Articles