cara menambah air dalam kesatuan


Jawapan 1:

Membuat air agak sukar jika anda mahu melakukannya dari awal. Saya akan menerangkan caranya, tetapi pertama kali saya cadangkan sama ada menggunakan prefab air yang terdapat dalam aset standard Unity, atau memuat turun aset dari kedai Aset. Baiklah, barang yang baik. Berhati-hatilah, akan ada banyak istilah teknikal.

Untuk membuat air, anda hanya memerlukan 4 perkara: mesh, shader, peta biasa, dan skrip.

(1) Mesh Mesh adalah air itu sendiri, tetapi tanpa shader dan skrip, itu tidak akan terlihat seperti air, pada dasarnya akan terlihat seperti lembaran. Ini agak mudah dibuat, pasti yang paling mudah dari keempat-empatnya. Anda boleh menggunakan program pemodelan sederhana untuk membuat jala menjadi bentuk pilihan anda.

(2) (3) Peta Shader dan Normal Shader adalah tempat kebanyakan sihir berlaku. Dalam shader anda harus menentukan beberapa sifat untuk menjadikan jala kelihatan seperti air.

Peta biasa memainkan peranan besar dalam shader, terutama air shader. Peta biasa untuk shader air menentukan bentuk gelombang.

Contoh peta normal air. Dengan hormat dari FilterForge.

Dalam banyak perkara untuk objek yang bukan air, anda boleh pergi dengan satu peta biasa. Air memerlukan dua. Dua peta biasa bergerak (melalui skrip) ke arah yang berbeza. (Terdapat tiga corak arah kanonik). Kedua peta juga mempunyai skala yang berbeza, dan dapat memiliki kelajuan yang sama atau berlainan. Skala gelombang menentukan skala bagi setiap gelombang dalam peta biasa. Skala gelombang dan kelajuan gelombang ditetapkan dalam shader.

Anda juga harus membuat air bertindak balas terhadap cahaya, yang anda rawat dalam shader. Air sebenar boleh memantulkan atau membiaskan cahaya, jadi untuk meniru itu, anda harus mengira indeks reflektif dan bias di mana cahaya memukul berbanding dengan permukaan normal. Ini kadang-kadang dipanggil keadaan Fresnel (diucapkan "frennel").

Contoh bagaimana cahaya memantulkan peta biasa (yang, demi posting ini, adalah pelaksanaan pemetaan bump). Pengadilan OGLDev.

Ia menjadi lebih rumit, jangan risau. Apabila cahaya melewati air dan dibiaskan, air yang lebih dalam akan berwarna. Oleh itu, anda mungkin mahu mempertimbangkannya untuk mendapatkan hasil terbaik.

Juga, bergantung pada tempat anda melihat, indeks pantulan dan pembiasan dapat berubah. Shader yang baik mungkin mempunyai fungsi untuk mengira transformasi matriks dunia ke ruang kamera untuk melihat sudut keadaan fresnel

(4) Skrip Skrip adalah kunci yang memulakan kereta. Ia menetapkan shader bergerak, secara kiasan, dan mengatur peta normal dalam gerakan secara harfiah. Dalam skrip, anda boleh mengubah beberapa nilai shader dengan cepat jika perlu.

Skrip juga mengendalikan banyak perkara kamera. Untuk satu perkara, ia harus menangani kes di mana kamera masuk ke dalam air. Tetapi yang lebih penting, ia dapat memanggil fungsi transformasi matriks untuk melihat sudut.

Contoh produk siap. Dengan hormatnya blog Unity.


Anda harus mengimport prefab air aset standard dan melihat kod shader dan kod C #.

PS Sekiranya anda ingin benar-benar teknikal, anda harus memasukkan daya apung.