.[ ČeskéHry.cz ].
Voda (2D)
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 3. leden 2009, 20:13:52    Předmět: Voda (2D) Odpovědět s citátem

Pracuju momentalne na 2D hre a protoze se z vetsiny odehrava na vode (pohled shora), tak ji potrebuju trochu vysperkovat. Teda vlastne potrebuju, aby vypadala hodne dobre, ale to zlepsim postupne Smile

V klidu si vystacim se simulaci vodniho povrchu pomoci gridu (heightmapy), jako to popisujou treba tady:
http://freespace.virgin.net/hugo.elias/graphics/x_water.htm
Ja vychazim z clanku v GPG5, 4.2 (Dynamic Grass Simulation and Other Natural Effects), kerej je sice o simulaci travy a listu, ale vychazi ze simulace vody zpusobem podobnym tomu, co sem linkoval.
Jednotlivy bunky heightfieldu pak vyrenderuju pomoci ctvercovejch quadu. V jejich rozich pozmenim koordinaty textury podle refrakce a barvu (kterou se pak budou pixely textury nasobit) podle reflexe. Pak to hodlam vylepsit pocitanim pres pixel shadery misto quadu, tohle je jen pro vyzkouseni.

Nicmene problem mam s tim, jak to udelat s posouvanim a zoomem kamery. Ten grid musi mit konecnou velikost, ale ja predem nevim, jak velkou cast vody budu potrebovat vykreslit. Jak mam teda ten grid implementovat? Napadlo me namapovat ho na kouli, takze uzly na pravym okraji by byly spojeny s uzlama na levym okraji, takze bych ho moh nejak tilovat. Nebo by bylo lepsi ho nejakym zpusobem dogenerovat v miste, na ktery je ted videt, ale predtim videt nebylo?

Pokud jste nekdo resil vodu (i ve 3D), tak jste podobnej problem urcite potkali, tak jak jste ho vyresili?Smile

Podotykam, ze predanimovanej sprite mi nestaci, "potrebuju" interakci s vodou. Taky by to asi nefungovalo moc dobre se zoomem kamery, zatimco na ten grid se da dobre pouzit LOD.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 5. leden 2009, 10:32:46    Předmět: Odpovědět s citátem

Mohl bys těch gridů mít 9 (3x3) každý o velikosti screenu, Pak vždycky když dojedeš na kraj, přemístit ten co už neni vidět tak, aby ten co vidět je, byl uprostřed..snad je to pochopitelný, taková jednoduchá blbost, ale jak to napsat :).

Osoboně bych grid nepoužil, když je to ve 2D, nepotřebuješ vlny. Změnu těch texturových koordinátů proveď v pixel shaderu. Interakci udělej podle další textury, do který vykreslíš třeba nějaký kolečka a podobně a podle tý pak budeš posouvat koordinát pixelu víc nebo míň. Myslím, že stačí pixel shadery 2.0, takže to pojede všude. Tímhle způsobem máš pak vyřešený to tailování, protože na geometrii ti už nezáleží. Stačí jeden fullscreen quad.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 5. leden 2009, 15:03:54    Předmět: Odpovědět s citátem

]semo[ napsal:
Mohl bys těch gridů mít 9 (3x3) každý o velikosti screenu, Pak vždycky když dojedeš na kraj, přemístit ten co už neni vidět tak, aby ten co vidět je, byl uprostřed..snad je to pochopitelný, taková jednoduchá blbost, ale jak to napsat Smile.

Ja to chapu, ale nevidim v tom vyhodu oproti tomu, ze budu mit ten grid jeden (velkej jako nekolik obrazovek) a spojim jeho protilehle konce. Problem mam ale v tom, ze kdyz nekde projede lod, a pak rychle posunu kameru tak, ze tam ten grid zopakuje (tilovanim), tak tam bude videt vlna od te puvodni lodi, prestoze tam zadna lod nemusi vubec bejt...nicmene to mozna pujde ignorovat, protoze tohle budou jen mensi vlnky.

citace:
Osoboně bych grid nepoužil, když je to ve 2D, nepotřebuješ vlny. Změnu těch texturových koordinátů proveď v pixel shaderu. Interakci udělej podle další textury, do který vykreslíš třeba nějaký kolečka a podobně a podle tý pak budeš posouvat koordinát pixelu víc nebo míň. Myslím, že stačí pixel shadery 2.0, takže to pojede všude. Tímhle způsobem máš pak vyřešený to tailování, protože na geometrii ti už nezáleží. Stačí jeden fullscreen quad.

Vlny potrebuju, abych moh nejak spocitat reflekci a refrakci...nechapu, jak bych mel ten displace textury bez vln spocitat?
Kdyz interakci udelam specialni texturou, tak jak mam pak udelat sireni vln?
Nemel bys nejakou ukazku pouziti tohohle pristupu v praxi?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 5. leden 2009, 15:42:00    Předmět: Odpovědět s citátem

Ja bych to udelal taky tim jednim polygonem pres celou obrazovku a ne nejakym tilovanim. Vlny muzes udelat tak, ze kazda vlna = samostatny polygon. Bez pixel shaderu by to vypadalo treba takto (tady se ty vlny roztahuji do stran a zpruhlednuji:



S PS bys asi musel ty vlny nascitat/poskladat do vysledne textury, ktera bude vstupem pro tvuj PS. Da se to udelat opet tak, ze co vlna, to polygon, ale budes to renderovat ne na obrazovku, ale do textury, ktera bude vstupem tveho PS.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 6. leden 2009, 10:58:54    Předmět: Odpovědět s citátem

citace:
S PS bys asi musel ty vlny nascitat/poskladat do vysledne textury, ktera bude vstupem pro tvuj PS. Da se to udelat opet tak, ze co vlna, to polygon, ale budes to renderovat ne na obrazovku, ale do textury, ktera bude vstupem tveho PS.


jak píše Ladis, vlny a další efekty budou vpodstatě další geometrie, nebo dokonce particly a ty by se vyrendrovaly do textury, která pak poslouží jako vstup pro pixelshader vody. Dosáhneš tím beztak lepší přesnosti než u heightfieldu. Tady je vývojový videíčko z jedný naší hry, je to sice ve 3D, ale ty vlny tam jsou přidaný právě tím způsobem (další geometrie v heightmapě, která je vstupem pro shader vody).
http://dev.hammerware.org/public/WaveRave/OceanClub0.wmv
(má asi 13 MB)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ondras



Založen: 12. 09. 2007
Příspěvky: 66

PříspěvekZaslal: 6. leden 2009, 19:21:39    Předmět: Odpovědět s citátem

]Semo[ no fakt moc pekny, chvalim. Jaky metody jste pouzili? Ta interaktvini vypada, ze je mistama numericky nestabilni? Jak to tam dela takovy ty neprirozene vysoky a spicaty vlny.


Hardwire. Co je to 2D? Ja z toho popisu jsem moc nechytil jak to ma vypadat. Z jakyho uhlu je to zobrazeny, jestli to ma byt ISO? Nez neco navrhnes tak je tohle dulezity, protoze to pak nemusi byt vubec videt.

Jinak co jsme delali vodu my. Tak se to generovalo pomoci oceanografickyho spektra a pomoci inverzni Fourierovi transformace se z toho delalo vyskove pole. Jeste se tam zjsistovaly ostry vlny a jejich vrcholky a ty se prozatim jen oznacily. Ale bylo v planu aby tam byla pena. Problem byl s tim, ze ve velkejch vzdalenostech to vypadalo fakt blbe, ty normaly z toho to nedavaly a byl tam strasnej sum. Vypadalo to jak modry zrneni v televizi. Takze se do toho musela zapojit jeste jedna metoda, ta vlastne jen scitala sinusovky, ktery mely byt jako hodne dlouhy vlny a pak se mezi tema dvema metodama interpolovalo podle vzdalenosti. Jeste bylo v planu do toho nejak zapojit ty interaktivni vlny, ktery jsem mel hotovy zvlast ale uz se na to nedostalo. Byl termin a od ty doby je to nejaky stoply nebo co. To jen tak v kratkosti abych se pochlubil Smile. Jo 8800GT si to davala v klidku stejne jako XBOX 360.

Dost zalezi co chces delat. Zkusil bych se podivat i na nejke siditka co vubec s geometrii nepracujou. napriklad tohle je super, http://www.gametutorials.com/Articles/RealisticWater.pdf mrkni se i na demo. Natoze to bezi jen nad dvema texturama.

EDIT: aha tak jsem si tvuj prispevek precetl poradne. No mohl bys to jen cist z textury a nastavit UV souradnice tak, aby kdyz sahnes mimo texturu tak se ti nacetla pozice z druhy strany. to ti zajisti automaticky, ze se ti to bude opakovat. Chce to ale osetrit tu interaktivni vodu, tam by to slo mozna i tak, ze bys to pocital zvlast v druhe texture a na to misto, kde je zrovna kamera bys to priplacl. Tim bys oresil i to pretikani z jedny strany na druhou.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 7. leden 2009, 10:14:24    Předmět: Odpovědět s citátem

OT 4 Ondras:
Je to Projective Grid a spoustu různých oserů. Numerická nestabilita tam nemá místo, je to jen chyba toho trailu, co skůtr táhne, v místech, kde se spojujou segmenty vzniká cosi, co neni vidět okem v rovině, ale když z toho udělám ty vlny, tak je. Nicméně je to vyřešný v dalších verzích, tohle video bylo ale paradoxně nejhezčí a nejakčnější :).
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 8. leden 2009, 01:38:08    Předmět: Odpovědět s citátem

]semo[ napsal:
citace:
S PS bys asi musel ty vlny nascitat/poskladat do vysledne textury, ktera bude vstupem pro tvuj PS. Da se to udelat opet tak, ze co vlna, to polygon, ale budes to renderovat ne na obrazovku, ale do textury, ktera bude vstupem tveho PS.


jak píše Ladis, vlny a další efekty budou vpodstatě další geometrie, nebo dokonce particly a ty by se vyrendrovaly do textury, která pak poslouží jako vstup pro pixelshader vody. Dosáhneš tím beztak lepší přesnosti než u heightfieldu. Tady je vývojový videíčko z jedný naší hry, je to sice ve 3D, ale ty vlny tam jsou přidaný právě tím způsobem (další geometrie v heightmapě, která je vstupem pro shader vody).
http://dev.hammerware.org/public/WaveRave/OceanClub0.wmv
(má asi 13 MB)

Tyjo, pekna voda Smile
Chapu, ze geometrii vlny muzes prenest na texturu a tu potom pouzit v shaderu misto gridu jako heightmapu, ale jak pak delas vlneni, resp. jak tu geometri vlny menis? Jen ji posouvas a nejak roztahujes?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 8. leden 2009, 02:20:55    Předmět: Odpovědět s citátem

Ondras napsal:
Dost zalezi co chces delat. Zkusil bych se podivat i na nejke siditka co vubec s geometrii nepracujou. napriklad tohle je super, http://www.gametutorials.com/Articles/RealisticWater.pdf mrkni se i na demo. Natoze to bezi jen nad dvema texturama.

EDIT: aha tak jsem si tvuj prispevek precetl poradne. No mohl bys to jen cist z textury a nastavit UV souradnice tak, aby kdyz sahnes mimo texturu tak se ti nacetla pozice z druhy strany. to ti zajisti automaticky, ze se ti to bude opakovat. Chce to ale osetrit tu interaktivni vodu, tam by to slo mozna i tak, ze bys to pocital zvlast v druhe texture a na to misto, kde je zrovna kamera bys to priplacl. Tim bys oresil i to pretikani z jedny strany na druhou.

Delam takovou taktickou hru s bitevnima lodema na vode. Topdown kamera. Odehrava se to vetsinou na vode, takze ji potrebuju udelat co nejzajimavejsi.

No ale problem je, ze kdyz se to bude opakovat, tak pokud rychle posunu kameru tak, ze se to tam zopakuje, tak uvidim vlny vytvoreny lodi, ktera je ale jinde. Pokud tohle budou ale jen relativne maly zmeny, tak to asi problem nemusi uplne bejt.
Stejne to ale budu muset zkombinovat s tvorbou velkejch vln a na to se mi asi bude hodit, co jste tu popsali a nalinkovali, tak si to projdu Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 8. leden 2009, 10:00:32    Předmět: Odpovědět s citátem

No jak říkám, nemusíš tam mít žádný heightfield, ani projektivní mřížku. Stačí Fullscreen quad. Pak nemáš problém s opakováním. Metoda kreslení bude podobná jako sem posílal na videu, ale bez geometrických vln, který by stejně nebyly odzhora vidět. Vstupem pixelshaderu bude textura (třeba heightmapa) do který vykreslíš vlnky a efekty. V pixel shaderu s tím pak můžšeš dělat cokoliv. Převýst to na normalmapu, aplikovat cubemaping podle výšky v daným místě, ...

Při troše fantazie to můžeš do tý textury zapisovat přímo a updatovat ji každý frame, tím můžeš použít stejný efekty, jaký bys měl u heightfiledu počítaným na procesoru.

Edit:
citace:
jak tu geometri vlny menis? Jen ji posouvas a nejak roztahujes?

Jo, jen sem to posouval a roztahoval, moc sem to zmáknutý neměl. Teda co se týče brázdy za skůtrem. To ostatní je animovaná textura, kterou sem si vygeneroval jako celulární texturu (dá se udělat tilovatelná)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 9. leden 2009, 22:22:08    Předmět: Odpovědět s citátem

Tak díky moc za tipy, ještě se k vodě v budoucnu vrátím. Potřeboval sem hru (resp. prototyp) nějak odprezentovat ve škole, tak sem udělal jen tu vodu, jak sem jí popisoval já. Není to nic extra, ale aspoň to není statický Smile
http://data.hardwire.cz/nic/battleships_prototype.avi
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 9. leden 2009, 22:36:45    Předmět: Odpovědět s citátem

Hm, to mi připomíná fraxy Smile
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 9. leden 2009, 22:40:44    Předmět: Odpovědět s citátem

Quiark napsal:
Hm, to mi připomíná fraxy Smile

Vidíš a přece to bud úplně něco jinýho Smile
Ale teď to tu nebudu rozpitvávat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 11. leden 2009, 15:53:55    Předmět: Odpovědět s citátem

Je to hezký, ani nepotřebuješ rady, vždyť taková stačí, ne? :)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 11. leden 2009, 15:59:08    Předmět: Odpovědět s citátem

]semo[ napsal:
Je to hezký, ani nepotřebuješ rady, vždyť taková stačí, ne? Smile

http://games.tiscali.cz/clanek/screen_detail.asp?id=12648&img=bkg3.jpg
Takováhle stačí Smile
Uvidím jakej na to ještě bude prostor.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna