Kami mensimulasikan sungai realistis di Houdini dan Unreal Engine 4



Ketika transisi dari DX9 ke DX10 baru saja dimulai, banyak game mulai muncul dengan air yang dimodelkan dengan efek yang tepat. Maka perbedaannya sangat mencolok, terutama jika Anda membandingkan game generasi sebelumnya dengan Crysis yang sama. Oleh karena itu, ketika saya menemukan panduan tentang cara membuat simulasi sungai sederhana namun realistis melalui plugin Houdini untuk UE4, saya bahkan tidak memikirkannya dan segera menerjemahkannya.

Prolog


  • Unduh aset Unreal dan Houdini. Video instalasi ada di sini .
  • Sebagian besar proyek saya mengikuti tutorial dari Ben Shriver dan Andreas Glad .
  • Jangan takut dengan simpul dan skrip. Ini tidak sesulit kelihatannya.
  • Untuk air, saya menggunakan peta normal dari konten Unreal Starter.

Pendahuluan


Nama saya Simon. Saya mulai pemrograman pada QBasic dan Pascal ketika saya masih muda (di sini adalah contoh ), saya segera menyadari bahwa pengkodean itu sulit, dan beralih ke seni 3D. Pada saat yang sama, saya selalu mempertahankan minat pada sisi teknis membuat game - ternyata saya menjadi artis VFX. Profesi ini menggabungkan seni dan teknologi dengan baik.

Saya bekerja sebagai artis 3D di Sacred 2 dan X: Rebirth , dan artis VFX di RiME , The Invisible Hours . Sekarang saya sedang bekerja di WiLD .



Saya juga memiliki beberapa proyek pribadi yang berkaitan dengan pengembangan game: blog Game Art Trick , German Game Dev Podcast dan saluran YouTube dengan tutorial Unreal dan Houdini .

Memperkenalkan Houdini


Saya berteman dengan Houdini saat mengerjakan The Invisible Hours. Lalu saya membuat simulator cairan kecil yang bisa dijeda, digunakan dan diputar mundur secara real time. Hasilnya seperti ini:


Sumber: Simulasi Fluida dari The Invisible Hours

Saya tidak tahu bagaimana cara menambahkan pemodelan cairan ke Unreal. Untungnya, teknologi luar biasa bernama Vertex-Count-Agnostic Morph Target-Based Fluid Animation diimplementasikan di Houdini, dan jadi saya bisa menambahkan simulasi cairan saya ke dalam game. Teknologi ini awalnya dikembangkan oleh Norman Shaar .


Sumber: Target Vertex-Count-Agnostic Morph di UE4 Norman Shaar

Jika Anda ingin tahu lebih banyak tentang penerapannya, lihat bagian Cool Stuff with Textures saya:


Efek sungai: awal proyek


Saya ingin belajar bagaimana membuat sungai yang dihasilkan secara prosedural untuk Tantangan Sungai VFX Realtime , tetapi tidak tahu harus mulai dari mana. Secara kebetulan, saya menemukan tutorial hebat dari Ben Shriver , di mana ia berbicara tentang sungai di Horizon Zero Dawn. Saya ketagihan dan saya memutuskan untuk mencobanya!


Ngomong-ngomong, ada tutorial keren lainnya tentang sungai Houdini dari Andreas Glad :


Video-video ini sangat membantu saya pada awalnya dan menjadi fondasi.

Cara yang sangat sulit untuk membangun lanskap


Relief itu sangat kompleks. Saya akan mengilustrasikan proses pembuatan sehingga semua orang mengerti:


Sumber: Membuat Medan di Houdini

Hanya bercanda Itu terlalu mudah.

Efek sungai


Langkah pertama 100% disalin dari tutorial Ben, dan itu keren. Pertama Anda membuat spline dan membiarkannya "jatuh" di tanah. Ini dilakukan dengan membaca ketinggian relief pada titik spline, dan kemudian memindahkan titik ke ketinggian ini:



Lalu Anda membiarkan titik spline "meluncur" ke bawah lereng untuk mengintegrasikan sungai dengan lebih baik ke medan:



Faktanya, mereka tidak melakukan secara fisik. Sebagai gantinya, normal dasar permukaan dan normal titik digunakan untuk menghitung sumbu lokal untuk setiap titik (yang bergerak dari spline menuruni lereng). Kemudian Anda memindahkan titik sedikit di sepanjang sumbu yang dihitung (proses ini sangat baik ditunjukkan dalam video Ben).

Langkah selanjutnya adalah memastikan bahwa sungai tidak mengalir ke hulu karena lanskap (karena ada bukit kecil di mana sungai mengalir).



Skrip Python kecil memastikan bahwa titik spline dalam ruang 3D tidak pernah lebih tinggi dari yang sebelumnya:



Trik lain untuk menambah kealamian adalah menghindari lereng yang terus menerus. Alih-alih, biarkan sungai mengalir secara bertahap (untuk visualisasi yang lebih baik, saya menunjukkan geometri sungai di sini, tetapi dalam kenyataannya kami masih bekerja dengan hanya satu spline).



Akhirnya, kita sampai pada langkah di mana saya memperkenalkan ide-ide saya sendiri: menambahkan warna ke spline untuk menandai di mana kemiringan (hijau), di mana ia dimulai (pirus) dan di mana itu berakhir (merah). Ini akan membantu saya nantinya mencampur berbagai tekstur air dan menempatkan sistem partikel.



Mari kita beralih ke membuat geometri sungai lebih cepat, karena semua ini dijelaskan dengan sempurna dalam video Ben. Poin yang paling penting adalah bahwa hanya tepi luar sungai yang selaras dengan relief (seperti yang kita lakukan dengan spline di tempat pertama):



Deformasi medan sesuai aliran


Sekali lagi, ini adalah alur kerja 100% Ben, dimulai dengan memindahkan relief di bawah geometri sungai sehingga mereka tidak berpotongan dengan cara apa pun:



Kemudian, untuk setiap titik di medan, Anda menggambar sinar ke atas. Jika mereka jatuh ke dalam geometri sungai, maka titik-titik ini akan naik ke tempat dampak:



Setiap titik yang tidak mengenai di mana pun akan menerima ketinggian aslinya.



Gif ini menunjukkan apa yang terjadi ketika spline berubah:



Kemudian wilayah ketinggian lanskap diubah menjadi poligon dan dicampur kembali. Sekarang siap digunakan di Unreal:



Sekarang mari kita bicara tentang konversi UV, material, flow map, dan banyak lagi.

Geometri sungai


Geometri sungai, yang Anda lihat sebelumnya, hanya digunakan untuk memotong area. Sungai yang sebenarnya sedikit lebih tipis, memiliki UV dan terbelah (perhatikan bahwa warna kemiringan saya masih ada di sana):



Generasi UV


Karena panjang spline selalu bervariasi, UV harus beradaptasi dengan ini. Untungnya, ini sangat mudah di Houdini. Pertama Anda membuat UV di 0-1-UV-Space, dan kemudian mengukur panjang spline. Nilai ini dapat digunakan untuk skala UV. Di sini Anda melihat bagaimana saya mengubah spline, dan di bagian bawah - bagaimana UV secara otomatis beradaptasi. Percayalah, jika Anda pernah mencoba ini, Anda tidak akan pernah ingin membuat UV secara manual lagi.



Saluran


Detail lain: Saya ingin membuat saluran lebih gelap dan basah. Untuk melakukan ini, saya membuat beberapa sinar dari setiap poligon lanskap, dan jika saya masuk ke sungai, saya memberi warna pada semua titik poligon ini. Topeng yang dibuat adalah sebagai berikut:



Dan di sini adalah contoh menggunakan topeng di bahan untuk menetapkan nilai yang berbeda dari ketidakjelasan dan kekasaran:



Bagan arus


Membuat peta aliran sungai dengan Houdini sangat mudah. Anda hanya mengatakan kepada simpul khusus "ini adalah geometri sungai saya, dan ini adalah spline yang menunjukkan arah sungai" dan boom, geometri tiba-tiba mendapatkan warna dari puncak yang mewakili aliran sungai:



Anda dapat menambahkan simpul lain yang membuat peta aliran merespons hambatan. Sekarang air akan mengalir di sekitar mereka:



Dan hal yang paling keren: Anda bisa membuat kue flow map di Unreal! Tidak perlu beralih antara Unreal dan Houdini. Cukup atur tombol Render di Houdini sebagai parameter. Di sini Anda melihat bagaimana saya mengubah rintangan, dan kemudian saya memvisualisasikan peta aliran baru (perhatikan bahwa memanggang memakan waktu lebih lama daripada pada GIF):



Masker busa


Untuk membuat busa di atas air di sekitar rintangan, saya menggunakan apa yang disebut simpul isoOffset. Pada dasarnya, ia menyimpan jarak ke objek dalam warna bagian atas sungai. Lalu saya menambahkan beberapa kebisingan dan topeng sudah siap:



Untuk membuat masker busa kurang statis, saya menggunakan template cloud Photoshop sederhana yang saya bergerak di sepanjang sungai dan kurangi dari topeng asli:



Dan karena kita berbicara tentang busa: kaskade juga memiliki tekstur busa sederhana, yang ditampilkan hanya di sisi sungai. Struktur busa lebih cepat dari air sungai:



Sistem partikel


Saya mencatat di mana bagian atas dan bawah kaskade saya, sehingga saya dapat menyaring elemen-elemen ini (garis digunakan untuk membuat geometri sungai), membuat titik di tengahnya dan menyalin kotak boneka ke dalamnya. Kemudian kami menggantinya dengan sistem partikel di Unreal:



Untuk partikel di sekitar rintangan, saya menggunakan simpul yang disebut Intersection Analysis untuk mendapatkan persimpangan rintangan dan sungai. Tepi persimpangan ini memiliki titik. Ke nomor acak mereka, saya kembali menyalin kotak-dummy (yang kemudian ditukar dengan sistem partikel di Unreal):



Ini seperti apa ketika saya mengganti kotak-dummy di Unreal:



Mengekspor proyek ke Unreal


Apa yang disebut mesin Houdini adalah plug-in untuk Unity, Unreal, 3ds Max, Maya dan Cinema 4D dan menjalankan jaringan node yang Anda buat di Houdini langsung dalam program ini. Saya perlu membuat dataran dan sungai muncul untuk menyimpan file Houdini sebagai aset digital. Itu dapat diimpor dan digunakan seperti sumber daya lainnya di Unreal:



Sekarang saya dapat mengubah parameter (yang saya atur di Houdini) atau mengubah spline sehingga sungai mengalir dengan cara yang berbeda:



Materi masih dibuat dan ditugaskan di Unreal, tetapi Anda dapat menetapkannya terlebih dahulu (di bawah ini adalah tutorial saya tentang ini).



Haruskah kita sama-sama mempelajari alur kerja Houdini?


Houdini harus banyak belajar. Selain itu, ini adalah alat pengembangan baru, sehingga ketidakakuratan akan terjadi dalam dokumentasi.

Tapi ini adalah situasi umum bagi pengembang game. Kami terus bekerja dengan teknologi canggih yang perlu dijinakkan terlebih dahulu. Yang terpenting: Anda tidak sendirian. Perselisihan Prosedural Berpikir penuh dengan orang keren yang akan membantu dan mengajar. Di obrolan ini, Anda bahkan dapat menemukan pengembang SideFX!

Referensi


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


All Articles