Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Perlin noise, oblaci i exponencijalna funkcija

[es] :: 3D programiranje :: Perlin noise, oblaci i exponencijalna funkcija

[ Pregleda: 3211 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nothingman

Član broj: 31375
Poruke: 308
*.teol.net.



+112 Profil

icon Perlin noise, oblaci i exponencijalna funkcija 15.04.2005. u 23:59 - pre 218 meseci
Na web stranici:
http://freespace.virgin.net/hugo.elias/models/m_clouds.htm
sam naleteo na interesantan nachin za generisanje oblaka u realnom vremenu.
Medjutim ima jedna stvar koja me kopka i koja mi nije jasna.
Nakon sto generisemo prvu teksturu oblaka pomocu neke "fake Perlin noise" funkcije ona ne izgleda bas realno zato sto nema "praznog prostora" i vise izgleda kao neka plazma. Autor gore prilozenog teksta zbog toga koristi exponencijalnu funkciju da bi dobio realniju teksturu (da biste znali na sta mislim pogledajte slike dveju tekstura na tom sajtu).

Citat:

There is a fairly simple function you can use to transform the plasma into something that looks a lot like clouds. The exponential function is the mother of all functions. You will find uses for it everywhere.


Code:

function CloudExpCurve(v)
      c = v - CloudCover
      if c < 0 then c=0
 
      CloudDensity = 255 - ((CloudSharpness ^ c) * 255) 

      return CloudDensity
  end function

CloudCover je konstanta koju biramo u rasponu od 0-255 u zavisnosti koliko zelimo "praznog prostora".
CloudSharpness je konstanta od 0.0 do 1.0.

Ok, ovo je vrlo jednostavna funkcija i sve je to lepo, ali ono sto meni nije jasno je zbog cega kada primenimo ovu funkciju na tu plazma teksturu dobijemo "oblake"?
Znachi potpuno je jasno da ce u zavisnosti kako smo izabrali CloudCover biti vise ili manje praznog prostora ali kako je on znao da ce exponencijalnom funkcijom grupisati preostalu materiju u formu oblaka, a da necemo dobiti recimo neke nedefinisane oblike, rabacane tacke, ostre ivice, linije i slicno?

Hvala unapred!
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.in-addr.btopenworld.com.



Profil

icon Re: Perlin noise, oblaci i exponencijalna funkcija 17.04.2005. u 12:28 - pre 218 meseci
Ako sam te dobro razumeo, nije ti jasno zasto je primenio exponencijalnu funkciju?
Zato da bi pixele koji su prilicno tamni jos vise zatamnio, a pixele koji su svetliji jos vise osvetlio. Ovaj efekat je slican Levels-u u Photoshopu.

Code:

function CloudExpCurve(v)
      c = v - CloudCover
// ako je vrednost pixela manja od CloudCover... skroz ga zatamni. 
// ovde je mogao i da stavi return 0
      if c < 0 then c=0  

// ako se neki broj izmedju 0 i 1 stepenuje na neki veliki koeficijent on postaje jos manji,
// tako da proizvod (CloudSharpness ^ c) * 255 tezi ka 0 ako c raste. 
// 255 - broj_koji tezi_0 je prilicno beo pixel.
      CloudDensity = 255 - ((CloudSharpness ^ c) * 255) 

      return CloudDensity
  end function



yooyo
 
Odgovor na temu

Nothingman

Član broj: 31375
Poruke: 308
*.mobtel.co.yu.



+112 Profil

icon Re: Perlin noise, oblaci i exponencijalna funkcija 17.04.2005. u 13:20 - pre 218 meseci
Nisi me shvatio, tj. mozda ja nisam bio najjasniji.
Razumeo sam ja efekat te funkcije CloudExpCurve() na pojedinacan pixel, ali ono sto me zanima je kako je on znao da ce primenom te funkcije na neku texturu (tj. svaki njen pixel) generisanu pomocu fake Perlin noise funkcije dobiti teksturu koja je pogodna za predstavljanje oblaka. Da li postoji neka caka u svemu tome ili je on prosto posmatrajuci tu Perlin noise teksturu odokativno procenio da ce primenom exp funkcije zatamniti odredjene delove teksture tako da ostane nesto slicno oblacima.

Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: Perlin noise, oblaci i exponencijalna funkcija 25.04.2005. u 18:56 - pre 218 meseci
Jeste, Covek sedeo/gledao/video i shvatio da ako potamni gde je slabo preci ce u nema a ako pojaca tamo gde je jace preci ce u ima ....

Lupish prag za gore/dole i eto ti prilicno lepih oblaka sa procentom pokrivenosti ...
 
Odgovor na temu

[es] :: 3D programiranje :: Perlin noise, oblaci i exponencijalna funkcija

[ Pregleda: 3211 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.