kako dodati vodu u jedinstvu


Odgovor 1:

Priprema vode je prilično teška ako to želite učiniti ispočetka. Objasnit ću vam kako, ali najprije dopustite da predložim ili upotrebu prefabrikata za vodu koji dolaze u standardnoj imovini Unity-a ili preuzimanje materijala iz trgovine Asset. Dobro, dobre stvari. Upozorite, bit će puno tehničkog žargona.

Da biste napravili vodu, trebaju vam samo 4 stvari: mrežica, sjenčanje, normalna karta i skripta.

(1) Mreža Mreža je sama voda, ali bez sjenčanja i skripte neće u osnovi izgledati poput vode, već će izgledati poput lima. Ovo je prilično jednostavno napraviti, definitivno najlakše od četiri. Jednostavnim programom za modeliranje možete napraviti mrežu koja će biti oblika po vašem izboru.

(2) (3) Shader i normalna karta Shader je mjesto gdje se događa većina čarolije. U shaderu morate definirati nekoliko svojstava kako bi mreža izgledala poput vode.

Uobičajene mape igraju veliku ulogu u sjenilima, posebno u vodenim. Uobičajena karta za vodenu sjenu definira oblik valova.

Primjer karte normalne vode. Ljubaznošću FilterForge.

U mnogim slučajevima za objekte koji nisu voda možete pobjeći jednom normalnom mapom. Voda treba dva. Dvije normalne karte kreću se (putem skripte) u različitim smjerovima. (Postoje tri kanonska uzorka smjera). Dvije karte također imaju različite razmjere i mogu imati iste ili različite brzine. Ljestvica valova definira razmjere za svaki val na normalnoj karti. Ljestvica vala i brzina vala postavljaju se u zasjenjenju.

Također morate učiniti da voda reagira na svjetlost, o čemu se brinete u hladu. Prava voda može reflektirati ili lomiti svjetlost, pa da biste to oponašali, morat ćete izračunati indekse refleksije i loma za mjesto gdje svjetlost pogađa u odnosu na normalne površine. To se ponekad nazivaju Fresnelovim uvjetima (izgovara se "frennel").

Primjer kako se svjetlost odbija od normalne karte (koja je, zarad ovog posta, provedba mapiranja izbočina). Dvorana OGLDeva.

Komplicira se, ne brinite. Kad svjetlost prolazi kroz vodu i tako se lomi, voda dublje dolje postaje nijansiranija. Stoga biste to možda trebali uzeti u obzir za najbolje rezultate.

Također, ovisno o tome odakle gledate, indeksi refleksije i loma mogu se promijeniti. Dobar shader mogao bi imati funkcije za izračunavanje matričnih transformacija svijeta u prostor kamere za kutove gledanja fresnelovih uvjeta

(4) Skripta Skripta je ključ koji pokreće automobil. Slikovito pokreće sjenčanje, a doslovno pokreće normalne mape. U skripti po potrebi možete mijenjati neke vrijednosti sjenčanja u hodu.

Scenarij obrađuje i puno stvari s kamere. Kao prvo, trebao bi riješiti slučaj kada kamera ulazi u vodu. No što je još važnije, može pozvati funkcije transformacije matrice za kutove gledanja.

Primjer gotovog proizvoda. Uz dopuštenje bloga Unity.


Trebali biste uvesti standardne vodene montažne dijelove i pregledati kod sjenčanja i C # kod.

PS Ako želite biti stvarno tehnički, trebali biste uključiti uzgon.