როგორ დაამატოთ წყალი ერთიანობაში


პასუხი 1:

წყლის დამზადება საკმაოდ რთულია, თუ ამის გაკეთება თავიდანვე გინდა. მე აგიხსნით როგორ, მაგრამ ჯერ ნება მომეცით შემოგთავაზოთ ან გამოიყენოთ წყლის პრეფაბები, რომლებიც მოდის Unity- ის სტანდარტულ აქტივებში, ან ჩამოტვირთეთ აქტივი Asset store- დან. კარგი, კარგი რამეა. გაფრთხილდით, ბევრი ტექნიკური ჟარგონი იქნება.

წყლის დასამზადებლად საჭიროა მხოლოდ 4 რამ: ბადე, ჩრდილი, ნორმალური რუქა და დამწერლობა.

(1) ბადე ბადე არის წყალი, მაგრამ დაჩრდილვისა და დამწერლობის გარეშე, ის არ ჰგავს წყალს, ის ძირითადად ფურცელს დაემსგავსება. ამის გაკეთება საკმაოდ მარტივია, ოთხიდან ნამდვილად უმარტივესი. შეგიძლიათ გამოიყენოთ მარტივი სამოდელო პროგრამა, რათა ქსელი იყოს თქვენთვის სასურველი ფორმა.

(2) (3) Shader და ნორმალური რუკა Shader არის ადგილი, სადაც მაგიის უმეტესობა ხდება. დაჩრდილვაში თქვენ უნდა განსაზღვროთ რამდენიმე თვისება, რომ ბადე გამოიყურებოდეს წყალში.

ნორმალური რუქები დიდ როლს ასრულებს ჩრდილში, განსაკუთრებით წყლის ჩრდილში. წყლის ჩრდილის ნორმალური რუქა განსაზღვრავს ტალღების ფორმას.

წყლის ნორმალური რუქის მაგალითი. FilterForge– ის თავაზიანობა.

ხშირ შემთხვევაში, ობიექტებისთვის, რომლებიც არ არიან წყალი, შეგიძლიათ თავი დააღწიოთ ერთ ნორმალურ რუკას. წყალს ორი სჭირდება. ორი ჩვეულებრივი რუკა მოძრაობს (სკრიპტის საშუალებით) სხვადასხვა მიმართულებით. (არსებობს სამი კანონიკური მიმართულების ნიმუში). ორ რუქას ასევე აქვს სხვადასხვა მასშტაბები და შეიძლება ჰქონდეს იგივე ან განსხვავებული სიჩქარე. ტალღის მასშტაბი განსაზღვრავს თითოეული ტალღის მასშტაბს ნორმალურ რუკაზე. ტალღის მასშტაბი და ტალღის სიჩქარე დაყენებულია ჩრდილში.

თქვენ ასევე უნდა მოახდინოთ წყლის რეაგირება სინათლეზე, რომელსაც თქვენ უვლით ჩრდილში. რეალურ წყალს შეუძლია ან ასახოს ან დაანგრიოს სინათლე, ამიტომ ამის იმიტირებისთვის თქვენ უნდა გამოთვალოთ ამრეკლავი და რეფრაქციული ინდექსები, თუ სად ხდება სინათლის დარტყმა ზედაპირის ნორმალთან შედარებით. მათ ზოგჯერ ფრენსელის პირობებს უწოდებენ (გამოითქმის "ფრენი").

მაგალითი იმისა, თუ როგორ ირეკლავს სინათლე ნორმალურ რუქაზე (რაც ამ პოსტის გამო, არის მუწუკის რუკის განხორციელება). OGLDev– ის თავაზიანობა.

უფრო რთულდება, არ ინერვიულო. როდესაც სინათლე წყალში გადის და ამით იშლება, უფრო ღრმად ჩნდება წყალი. შეიძლება დაგჭირდეთ ამის გათვალისწინება საუკეთესო შედეგის მისაღწევად.

ასევე, იმისდა მიხედვით, თუ საიდან ათვალიერებთ, შეიძლება შეიცვალოს ასახვისა და რეფრაქციის ინდექსები. კარგ ჩრდილს შეიძლება ჰქონდეს ფუნქციები სამყაროში კამერის სივრცეში მატრიცული გარდაქმნების გამოსათვლელად ფრესლის პირობების კუთხეების დასათვალიერებლად

(4) სკრიპტი სკრიპტი არის გასაღები, რომელიც ამუშავებს მანქანას. იგი აყენებს დაჩრდილვის მოძრაობას, ფიგურალურად, და ადგენს ნორმალურ რუკებს ფაქტიურად. სკრიპტში, საჭიროების შემთხვევაში, შეგიძლიათ შეცვალოთ დაჩრდილვის ზოგიერთი მნიშვნელობა.

სცენარი ამუშავებს კამერის უამრავ ნივთსაც. ერთი რამ, ის უნდა გაუმკლავდეს იმ შემთხვევას, როდესაც კამერა მიდის წყალში. რაც მთავარია, მას შეუძლია გამოიყენოს მატრიცის ტრანსფორმაციის ფუნქციები კუთხის ნახვისთვის.

მზა პროდუქტის მაგალითი. ერთობის ბლოგის თავაზიანობა.


თქვენ უნდა შემოიტანოთ სტანდარტული აქტივების წყლის პრეფაბები და გადახედოთ შადერის კოდს და C # კოდს.

PS თუ გსურთ მიიღოთ ნამდვილად ტექნიკური, უნდა შეიტანოთ ფლოტი.