
عندما بدأ الانتقال من DX9 إلى DX10 للتو ، بدأت تظهر العديد من الألعاب ذات الماء البارد مع التأثيرات الصحيحة. ثم كان الفرق ملحوظًا جدًا ، خاصة إذا قارنت ألعاب الأجيال السابقة بنفس لعبة Crysis. لذلك ، عندما عثرت على دليل حول كيفية إجراء محاكاة نهر بسيطة ولكنها واقعية من خلال Houdini plugin لـ UE4 ، لم أفكر حتى في ذلك وترجمته بسرعة.
مقدمة
- قم بتنزيل أصول Unreal و Houdini. فيديو التثبيت هنا .
- تابعت معظم المشروع الدروس التعليمية لـ Ben Shriver و Andreas Glad .
- لا تخف من العقد والنصوص. انها ليست صعبة كما قد تبدو.
- بالنسبة للمياه ، استخدمت الخريطة العادية من محتوى Unreal Starter.
مقدمة
اسمي سيمون. بدأت البرمجة على QBasic و Pascal عندما كنت صغيرًا (هنا
أمثلة ) ، أدركت على الفور أن الترميز صعب ، وتحولت إلى فن ثلاثي الأبعاد. في الوقت نفسه ، احتفظت دائمًا بالاهتمام بالجانب التقني لإنشاء الألعاب - اتضح أنني أصبحت فنانًا في VFX. تجمع هذه المهنة بين الفن والتكنولوجيا بشكل جيد.
عملت كفنان ثلاثي الأبعاد في
Sacred 2 و
X: Rebirth ، وفنان VFX في
RiME ،
The Invisible Hours . أنا أعمل الآن على
WiLD .

لدي أيضًا العديد من المشاريع الشخصية المتعلقة بتطوير الألعاب: مدونة
Game Art Trick ،
وقناة Dev Game الألمانية وقنوات YouTube مع دروس
Unreal و
Houdini التعليمية.
إدخال هوديني
لقد كونت صداقات مع هوديني أثناء العمل في The Invisible Hours. ثم قمت بعمل محاكي صغير للسوائل يمكن إيقافه مؤقتًا ونشره وتشغيله إلى الوراء في الوقت الحقيقي. كانت النتيجة هكذا:
المصدر: محاكاة السوائل من الساعات غير المرئيةلم يكن لدي أي فكرة عن كيفية إضافة النمذجة السائلة إلى Unreal. لحسن الحظ ، تم تنفيذ تقنية مذهلة تسمى
Vertex-Count-Agnostic Morph Target-Based Fluid Animation في هوديني ، وبالتالي تمكنت من إضافة محاكاة السوائل إلى اللعبة. تم تطوير التكنولوجيا في الأصل من قبل
نورمان شعار .
المصدر: أهداف Vertex-Count-Agnostic Morph في UE4 Norman Shaarإذا كنت تريد معرفة المزيد عن التنفيذ ، فراجع هذا القسم من حديث Cool Stuff with Textures:
أثر النهر: بداية المشروع
أردت أن أتعلم كيفية إنشاء نهر تم إنشاؤه إجرائيًا لـ
Realtime VFX River Challenge ، ولكن لم يكن لدي أي فكرة من أين أبدأ. بالصدفة ، صادفت برنامجًا
تعليميًا رائعًا
من Ben Shriver ، حيث يتحدث عن الأنهار في Horizon Zero Dawn. كنت مدمن مخدرات وقررت أن أجربه!
بالمناسبة ، هناك برنامج تعليمي رائع آخر حول أنهار هوديني من
أندرياس جلاد :
ساعدتني مقاطع الفيديو هذه حقًا في البداية وأصبحت الأساس.
طريقة صعبة للغاية لبناء المناظر الطبيعية
الإغاثة كانت معقدة للغاية. سأوضح عملية الإنشاء حتى يفهم الجميع:
المصدر: إنشاء تضاريس في هودينيأنا أمزح فقط. إنه سهل للغاية.
تأثير النهر
يتم نسخ الخطوات الأولى بنسبة 100٪ من البرنامج التعليمي لـ Ben ، وهي رائعة. أولاً تقوم بإنشاء خيط وتركه "يسقط" على الأرض. يتم ذلك عن طريق قراءة ارتفاع النقش عند نقاط المفتاح ، ثم تحريك النقاط إلى هذا الارتفاع:

ثم تدع نقاط الانزلاق "تنزلق" إلى أسفل المنحدر لدمج النهر بشكل أفضل في التضاريس:

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

يضمن نص Python صغير أن نقطة الانحدار في الفضاء ثلاثي الأبعاد ليست أعلى من السابقة:

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

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

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

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

ثم ، لكل نقطة في التضاريس ، ترسم أشعة لأعلى. إذا سقطت في هندسة النهر ، فستنتقل هذه النقاط إلى مكان الاصطدام:

كل نقطة لم تصل إلى أي مكان ستحصل على ارتفاعها الأصلي.

يوضح هذا gif ما يحدث عندما يتغير المفتاح:

ثم يتم تحويل منطقة ارتفاع المناظر الطبيعية إلى مضلعات وإعادة خلطها. الآن أصبح جاهزًا للاستخدام في Unreal:

الآن دعونا نتحدث عن تحويل الأشعة فوق البنفسجية والمواد وخرائط التدفق والمزيد.
هندسة الأنهار
تم استخدام هندسة النهر ، التي رأيتها سابقًا ، فقط لقطع المنطقة. النهر الحقيقي أرق قليلاً ، وله الأشعة فوق البنفسجية وتم تقسيمه (لاحظ أن ألوان المنحدر لا تزال موجودة):

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

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

وإليك مثال على استخدام قناع في مادة لتعيين قيم مختلفة من الغموض والخشونة:

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

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

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

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

لجعل قناع الرغوة أقل ثباتًا ، أستخدم قالبًا سحابيًا بسيطًا من Photoshop أقوم بتحريكه على طول النهر وطرحه من القناع الأصلي:

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

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

بالنسبة للجسيمات حول العوائق ، أستخدم عقدة تسمى تحليل التقاطع للحصول على تقاطع العوائق والنهر. هذه حواف التقاطع لها نقاط. إلى رقمهم العشوائي ، أنسخ مرة أخرى صندوق الدمية (الذي يتم استبداله فيما بعد بنظام الجسيمات في Unreal):

هذا ما يبدو عليه عندما أستبدل الصناديق الوهمية في Unreal:

تصدير مشروع إلى Unreal
ما يسمى بمحرك Houdini هو مكون إضافي لـ Unity و Unreal و 3ds Max و Maya و Cinema 4D ويدير شبكة من العقد التي تقوم بإنشائها في Houdini مباشرة في هذه البرامج. أحتاج إلى جعل التضاريس والنهر يظهران لحفظ ملف هوديني كأصل رقمي. يمكن استيراده واستخدامه مثل أي مورد آخر في Unreal:

الآن يمكنني تغيير المعلمات (التي قمت بتعيينها في هوديني) أو تغيير الخط بحيث يتدفق النهر بطريقة مختلفة:

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