Semua artikel
Update Produk · 8 min read

Air yang berperilaku: sekilas pandang Numivo Water

Sekilas pandang Numivo Water untuk Unreal Engine, meliputi samudra, danau, bawah air, dan gua berkualitas sinema yang dinilai terhadap foto referensi, cahaya dan busa berbasis fisika, serta daya apung Drop-a-Mesh yang membuat objek apa pun mengapung atau tenggelam tanpa konfigurasi.

Illustration of a stylised sea with a floating crate and a sinking statue

Kami sedang membangun sistem air untuk Unreal Engine dengan dua janji: air yang tampak benar karena cahaya, warna, dan busa dihitung secara fisik, bukan disetel tangan per scene, dan air yang berperilaku: jatuhkan mesh apa pun ke permukaan dan ia mengapung, terguling, atau tenggelam dengan benar, tanpa konfigurasi. Sedang dalam pengembangan aktif. Tulisan ini menjelaskan apa yang dicakupnya, bagaimana kami mempertanggungjawabkan diri dengan foto referensi, mengapa daya apung adalah bagian sulit yang dilewati semua orang, dan di mana ia cocok di samping sisa toolkit.

Ombak badai meledak menghantam pantai berbatu Standar yang harus dilampaui. Perhatikan apa yang membuatnya nyata: busa yang lahir dari ombak yang pecah, kabut memakan tebing, statistik buih putih di sepanjang gelombang panjang; tak ada yang ditempatkan tangan, semuanya fisika. Itulah palang yang kami tetapkan.

Mengapa satu lagi sistem air?

Kebanyakan air game tampak hebat di tepat satu kondisi cahaya, yaitu yang di tangkapan layar toko. Geser matahari, ganti ke mendung, taruh kamera setengah di bawah garis air, dan ia berantakan.

Ada kegagalan kedua, lebih senyap, yang sama pentingnya: hampir setiap sistem air memperlakukan objek mengapung sebagai renungan belakangan. Anda dapat template perahu, satu halaman instruksi rigging ponton, dan asumsi tak terucap bahwa tak seorang pun akan pernah melempar peti acak ke laut. Pemain melempar peti ke laut terus-menerus.

Kami ingin dua hal yang saat ini tak berdampingan dalam satu paket: tampilan berkualitas sinema yang bertahan di segala pencahayaan, dan perilaku fisik yang tak butuh konfigurasi apa pun. Keduanya tak tercapai dengan mengutak-atik parameter sampai sebuah tangkapan layar tampak cantik, karena tangkapan layar adalah satu frame di bawah satu matahari, dan begitu salah satunya berubah, air yang disetel sesuai selera menunjukkan jahitannya. Jadi fondasi proyek ini bukan daftar fitur. Ia adalah uji penerimaan yang tak bisa dibantah manusia: sebuah foto.

Dinilai terhadap foto, bukan terhadap selera

Pengembangan digerbangi oleh foto referensi dengan kontrak kamera dan pencahayaan tetap, yaitu satuan cahaya fisik, tonemapper terkunci, dan metrik perbedaan perseptual yang memutuskan lulus atau gagal, bukan suasana hati art director hari itu.

Dua referensi bersifat kanonik, dan dipilih agar berlawanan:

  • Danau bening, kamera di garis air. Setengah udara, setengah air, batas bergelombang tanpa pita artefak; air kehijauan tipe pantai yang warnanya memdalam dengan jarak; kaustik di bebatuan yang cocok dengan permukaan di atasnya; batang tenggelam yang membelok dengan benar di antarmuka. Ini menguji refraksi, penyeberangan garis air, dan penyerapan warna bawah air sekaligus.
  • Pantai badai di bawah mendung penuh. Tanpa matahari, tanpa pita kilau: laut harus terbaca lewat pantulan langit yang lembut, hijau-abu terdesaturasi, statistik buih putih, dan kabut di atas tebing. Sebuah pelampung menunggangi gelombang dengan periode dan kemiringan yang meyakinkan; perilaku adalah bagian dari penerimaan, bukan hanya citra diam.

Referensi mendung sengaja jadi salah satu dari dua. Air yang tersinari matahari menyanjung setiap renderer di Bumi, karena kilau spekular menyembunyikan segudang dosa. Ambil matahari, dan air harus memikul frame hanya dengan kekasaran pantulan, warna, dan gerak. Itulah uji yang jujur, dan itulah yang dihindari diam-diam oleh kebanyakan sistem. Samudra yang hanya tampak bagus di bawah matahari tidak dirilis.

Sisi kamera dispesifikasikan seketat sisi air, karena perbandingan foto hanya adil ketika kamera tak bisa curang. Itu berarti intensitas cahaya fisik nyata (matahari tengah hari sekitar 100.000 lux, bukan slider kecerahan sembarang), eksposur tetap, dan konfigurasi tonemapping dan bloom tetap per referensi. Ubah tonemapper dan air apa pun bisa dibuat cocok dengan foto apa pun, itulah persis mengapa tonemapper dipaku lebih dulu.

Drop-a-Mesh: mengapung tanpa PR

Seret mesh apa pun ke badan air Numivo dan ia langsung berperilaku benar: sistem membangun proksi fisika secara otomatis, menghitung volume tergeser per frame dari tinggi ombak sebenarnya, dan menurunkan mengapung-atau-tenggelam dari densitas nyata.

Terumbu karang dilihat lewat air biru jernih Bawah air adalah sebuah tempat, bukan post-process. Warna terserap dengan kedalaman, cahaya menyaring turun dalam berkas, dan antarmuka di atas kepala harus diseberangi dengan bersih; referensi danau ada untuk menjaga ketiganya jujur sekaligus.

Sebatang kayu mengapung dan berguling ke sisi panjangnya. Sebuah peti terombang-ambing. Patung batu tenggelam. Tanpa rigging, tanpa penempatan ponton, tanpa skrip. Di balik kap:

  • bentuk tumbukan divoxelisasi otomatis, secara asinkron, dan di-cache per aset sehingga hanya terjadi sekali, untuk mengukur volume nyata objek;
  • daya apung dihitung secara fisik tiap frame dari volume tergeser terhadap densitas air, dan air tawar serta air asin benar-benar berbeda (air asin lebih padat, jadi peti yang sama menunggangi lebih tinggi di laut daripada di danau);
  • mengapung-atau-tenggelam datang dari densitas, massa dibagi volume proksi: tak ada kotak centang "haruskah ini mengapung?" sebagai default, karena default-nya adalah fisika;
  • stabilitas muncul dari bagaimana volume proksi terdistribusi: peti berat di atas terbalik, lambung berpemberat lunas menegakkan diri, papan berbaring datar;
  • objek mengapung berpasangan balik ke permukaan, yaitu riak, alur bangun, cincin busa di garis air, dan efek cipratan saat tumbukan.

Ada panel kecil di actor untuk override, yaitu paksa apung, paksa tenggelam, slider redaman, tombol alur bangun dan cipratan, tetapi override menyekala fisika alih-alih menggantinya. Paksa sebuah bongkah batu mengapung dan ia tetap terombang dengan periode benar dan meninggalkan alur bangun benar; ia hanya berperilaku seolah lebih ringan. Perbedaan itu penting: hasil paksaan yang mengabaikan solver tampak seperti prop yang dilem ke bidang, dan pemain menyadarinya seketika.

Tujuan desainnya blak-blakan, dan ini demo yang ingin kami bisa jalankan langsung: seseorang menyeret dua puluh prop acak ke laut, dan semuanya begitu saja berperilaku, tanpa membuka satu jendela pengaturan pun lebih dulu. Jika demo itu butuh tutorial, fitur ini gagal.

Apa yang dicakupnya

Air dekat pantai, samudra terbuka, bawah air, dan kolam gua semuanya kelas satu: ombak berbasis spektrum dengan gelombang panjang dan laut silang terpisah, busa dari ombak yang benar-benar pecah, kaustik yang menggerakkan berkas cahaya bawah air, dan stabilitas di bawah efek sinematik.

Spesifik yang penting jika Anda peduli air:

  • Ombak datang dari spektrum oseanografi (model statistik sama yang dipakai mendeskripsikan laut nyata), dengan penyebaran arah dan gelombang panjang yang bisa dikontrol independen. Keadaan laut menjadi keputusan cuaca, misalnya "badai menguat, gelombang panjang dari barat", alih-alih tiga puluh slider terputus yang Anda dorong sampai tampak badai.
  • Busa bukan mask yang dilukis. Ia berasal di tempat ombak benar-benar pecah, menua seiring waktu, dan bergaris di bawah angin. Busa yang dilukis adalah tanda paling umum air palsu, karena ia tak bergerak dengan fisika yang semestinya diwakilinya.
  • Bawah air adalah tempat nyata. Penyerapan warna benar menurut kedalaman (merah pergi lebih dulu, lalu hijau, menyisakan biru dalam yang dikenal semua orang dari rekaman menyelam), berkas cahaya diturunkan dari medan kaustik sama yang menerangi dasar, dan penyeberangan di garis air tanpa pita artefak keras klasik.
  • Kolam gua mendapat perlakuan sendiri, yaitu air diam atau nyaris tak bergerak, gangguan tetesan, pantulan dalam nyaris gelap, karena kolam interior yang tenang membongkar kegagalan berbeda dari samudra terbuka.
  • Sinematik adalah kriteria penerimaan, bukan renungan belakangan. Permukaan harus tetap stabil di bawah kedalaman bidang, motion blur, dan grain film, tanpa fireflies spekular yang baru muncul begitu grain diterapkan, tanpa kelap-kelip yang diubah kamera lambat jadi strobing.

Mengapa daya apung adalah bagian yang dilewati semua orang

Tampilan bisa dipalsukan dengan shader bagus, tetapi perilaku tidak: mengapung-dan-tenggelam yang meyakinkan butuh estimasi volume waktu nyata dan solver stabil, yang sungguh sulit, jadi kebanyakan sistem merilis prefab perahu dan berhenti.

Kebenaran teknik yang tak nyaman adalah bahwa shader air yang indah adalah masalah terpecahkan, sedangkan solver daya apung umum tidak. Memalsukan tampilan ombak adalah masalah tekstur-dan-normal; membuat mesh sembarang yang tak pernah dilihat sebelumnya duduk dengan benar di ombak itu adalah masalah fisika yang harus berjalan pada laju frame, bertahan pada langkah waktu cepat, dan tak meledak saat batu seribu segitiga bertemu gelombang panjang badai. Celah itulah yang membuat "air" di kebanyakan engine berarti "bidang cantik yang tak bisa Anda interaksikan", dan mengapa bagian interaktif, ketika ada, adalah perahu buatan tangan.

Menutup celah itu, yaitu membuat perilaku seotomatis dengan tampilan, adalah alasan proyek ini ada dan alasan ia butuh disiplin foto referensi plus solver sungguhan alih-alih akhir pekan kerja shader.

Kapan Anda bisa memakainya?

Sedang dalam pengembangan sebagai ekstensi Unreal Engine, dengan peluncuran bertahap: pratinjau mengapung kinematik mendarat sebelum solver fisika penuh, sehingga scene bisa diisi lebih awal. Kami tak mengumumkan tanggal; citra referensi yang menentukan kapan selesai.

Pentahapan disengaja. Pratinjau kinematik (objek mengikuti permukaan ombak tanpa simulasi gaya penuh) datang lebih dulu, sehingga artis bisa menjatuhkan mesh dan mengisi laut selagi solver berat masih dikeraskan, jadi Anda merasakan hasilnya jauh sebelum fisika final. Solver penuh, proksi otomatis, dan panel lengkap menyusul. Kemajuan dan tonggak muncul di roadmap publik, bukan di kejutan hari peluncuran.

Toolkit yang akan dirilis berdampingan dengannya (scatter, mesh blending, grid, pengukuran) gratis dicoba hari ini. Jika Anda ingin diberi tahu saat build air publik ada, Discord yang ditautkan dari situs adalah tempat itu diumumkan lebih dulu, dan tempat perbandingan lulus/gagal citra referensi diposting seiring terjadinya.

Mini-FAQ

Apakah ia akan memerlukan alat Numivo lain? Tidak, ia ekstensi dalam keluarga yang sama, dirancang berdiri sendiri. Namun ia berbagi prinsip sama: hasil di-bake ke data engine-native di mana pun mungkin secara fisik, sehingga Anda memiliki apa yang Anda buat.

Versi engine mana? Rilis Unreal Engine 5 saat ini. Spesifik mendarat di roadmap seiring ekstensi mendekati build publik, alih-alih dijanjikan sekarang dan direvisi kemudian.

Apa bedanya dengan air bawaan engine? Sistem air bawaan kuat di tampilan dan lemah di interaksi umum: daya apung biasanya komponen terpisah yang disetel tangan. Seluruh intinya di sini adalah bahwa tampilan dan perilaku datang dari satu sistem berbasis fisika, dengan gerbang foto referensi menjaga tampilan jujur lintas pencahayaan.

Mengapa mengumumkan sebelum rilis? Karena metode foto referensi itu sendiri adalah intinya. Kami lebih memilih menunjukkan palang secara publik dan diukur terhadapnya daripada mengungkap sesuatu yang jadi yang tak bisa ditelaah siapa pun. Tulisan ini adalah palang itu, tertulis; tagih kami dengannya.