Tudnád magyarázni nekem, hogy víz fizikát hogyan csinálhatnék?
Víz collidert szeretnék az unityhez.
Azt akarom,hogy ha a víz hullámzik akkor a hullámok mozgassák a hajót élethűen.
Ez elégé rendszerigényes funkció nem?
A gta5 ben eléggé élethű.
Tudnátok írni erről nekem,hogy legyen rá egy kis rálátásom.
Szinguláris részecske szimuláció. (Hajrá)
Vagy felületmorfológia, a normálisból tudod hogy áll a hajó, a szomszédos csúcspontokból pedig átlagolni tudod a várható magasságot, és már elég jól is néz ki. Persze kell egy hullám amplitúdó-frekvencia szűrő, hogy a magas frekvenciájú hullámok ne rángassák a hajódat.
Olyan szavakat használ amiket soha nem halottam 22 év alatt.
Ennyire nem akarok matek ember lenni mert nem értek hozzá a matek tanulás sem megy még tanárral sem.Ha ehhez ilyen szintű matematika kell akkor inkább kihagyom.
Pedig ez középiskolai matek és fizika. :)
Megpróbálom egy kicsit elmagyarázni az elvet aztán majd jól kiigazítanak ha hülyeséget mondtam.
Az amplitúdó egy hullámgörbeként írható le, kb. mint egy sinus-görbe. A kolléga azért használta ezt a szót mert a hullámok sűrűsége/magassága jól ábrázolható a görbe "sűrítésével" vagy "ritkításával" azaz a görbe csúcsainak egymástól való távolságának csökkentésével vagy sűrítésével.
Az amplitúdó-frekvencia szűrő sem egy ördöngősség. Az amlitúdó frekvenciája pontosan azt jelenti amit az előbb írtam, azaz a az amplitúdó-görbe csúcspontjainak egymástól való távolságát. Minél kisebb ez a szám, annál nagyobb a frenkvencia és minél nagyobb a csúcstávolság, annál kisebb a frekvencia. Itt fordított arányosság van.
Egyszerűen megfogalmazva, minél nagyobb egy hullám amplitúdó-frekvenciája, annál magasabb a hullám (vagy annál gyorsabban jönnek egymás után a hullámok, ez attól függ, hogy a megvalósítás során milyen megközelítést használsz).
Ez a szűrő csak annyit csinál, hogy figyeli a hullámot és ha magas a frekvenciája, tehát túl sűrűn jön egymás után x db hullám akkor nem a szokásos módon hat a hajóra hanem egy általad meghatározott, más dolog történik. Pl. finoman csökkenti a hullámzást vagy pl. egyenesen figyelmen kívül hagyja ha olyan látvány.
Ez már abszolút tőled függ.
Sztem tégy egy próbát, rajzolj fel egy egyszerű sinusgörbét, aztán alág egy másikat ahol a görbe csúcstávolságai fele az elsőnek, aztán egy újabb görbét ahol a csúcstávolság kétszeres. Rögtön látni fogod mit jelent az előző magyarázat (ha érthetően fogalmazta).
Lemaradt:
Magas frekvencia esetén gyorsan jönnek egymás után a hullámok, alacsony esetén nyugis hullámzás van.
Értem a sinus görbét de ez olyan sok és túl bonyolult összetett.
Egyébként köszönöm a kimerítő magyarázatot.
Tudom,hogy hülye vagyok én mindig csak irigykedve nézek ratok meg azokra akik a természet tudomány kategóriába írkálják a képleteket.
Lehet,hogy túl sokat akarok.
Én erre nem vagyok képes.
Még mindog nem látom átt azt,hogy miként kéne nekifogni.
Az unityben van beépített víz de nincs hozzá fizika. :-(
1# vagyok
A #6-os hozzászóló szépen leírta.
Minden felület (így a víz, vagy egy fénykép) leírható egy adott periodikus függvény sorával. Ilyen a Fourier-sor is például, de az egyszerűség kedvéért vegyünk egy szinusz függvényt. Legyen a frekvencia együttható 0, így egy egyen-komponenst, azaz egy egyenest kapunk állítjuk be így a víz magasságát, a továbbiakban iteráljuk a frekvenciát egyesével és határozzuk meg az ezekhez a frekvenciaértékekhez egy amiltudót. Az így kapott n-számú sorral bármilyen n-re diszkretizált felület (szám sor) leírható.
Így működik a JPEG is, csak az diszkrét koszinusz transzformációval van megoldva.
Nézzük meg a hajó hosszát (a hossz itt a hajó azon oldala(i) ahonnan a hullámzást éri) vessük össze 1/f -el, ahol f a frekvencia. Határozzunk meg egy arányszámot ami meghatározza hogyan viselkedik a hajó erre a frekvenciára, azaz (empirikus módon vizsgálva) jó eredményt ad. nyilván egy magas frekvenciás hullán hiába csapkodja a tankerünk oldalát, de egy tutajt felkap egy kis frekvenciás szökőár. Ez az arányszám legyen [0-1] tartományon belül, a negatív hatást és az öngerjesztést egy mérnöki tollvonással nem vesszük figyelembe. Több komponenst esetén az arányszámok sora legyenek normalizálva, azaz összegük = 1, de persze ez lehet akár 0.9 is és a tehetetlenség is le van rendezve egy mérnöki tollvonással.
Adott 't' időpillanatban és 'p' fázisban számoljuk ki a hajó közepén lévő hullám meredekségét (szinusz első számú deriváltja) és képezzünk belőle egy normálvektort, és egy magasság értéket. Ismételjük meg ezt a sor minden tényezőére és szorozzuk meg a megfelelő arányszámmal. Adjuk át azt
A végeredmény egy hihetően mozgó hajó lesz, ami függ a hullámtól és attól honnan kapja azt (feltéve ha az arány sorunkat frissítjük a hajó hullámirányra vett effektív hosszától).
A hullámot kirajzolhatjuk egy vertex buffer streamelésével is, de változékonysága miatt bőven elfér egy vertex shaderben is, így megspóroljuk a memory overhead-et. A hajó dőlése, magassága pedig képkockánként determinisztikus.
Nyilván a helyzet egyszerű, hiszen a víz egy f(x,y) függvény, azaz 2D felület, a módszer alkalmazható térben is, pl. térerősség számítására.
De ha olyan válaszokat ír a kedves kérdező, hogy :
"a matek tanulás sem megy még tanárral sem.Ha ehhez ilyen szintű matematika kell akkor inkább kihagyom."
Akkor nem biztos, hogy valóban érdemes Unity-vel foglalkoznod, vagy legalábbis nem ezzel a részével.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!