.[ ČeskéHry.cz ].
Strategie - oživení mapy
Jdi na stránku Předchozí  1, 2, 3, 4  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
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 15. září 2008, 21:36:08    Předmět: Odpovědět s citátem

Tak pokusím se nějak rozchodit tvojí třetí radu:
"Nebo by možná stálo za vyzkoušení zkusit posunovat nějak rozumně texturovací koordináty těch 4 vertexů (třeba jednoduše posunovat texturovací koordináty tam a zpátky)"

Poté dám zprávu a třeba i nějaké video jak jsem dopadl Laughing


Dále bych měl dotaz, celý terén strategické mapy, by se mohl skládat z několika více malých na sebe navazujících terénů, a to asi hlavně proto, že veškeré indexy mám typu int16, kvůli rychlosti vykreslení. Také ani integer nemá neomezené hranice, a pokud "trojúhelníčky" trochu zmenším, každé zvětšení terénu vícenásobně zvětší počet indexů. Je to tak dělané také obecně, něbo terrén řeší jinak??

ps: myslím si že by se lépe i detekovalo co vykreslit a co ne..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 16. září 2008, 06:50:00    Předmět: Odpovědět s citátem

No je otázka, jestli použití menšího intu na indexování přinese nějaký užitek...já bych řekl, že spíše ne - paměťově jsou nároky na indexy zanedbatelné a výkonově by to mohlo naopak i uškodit, protože každý index nebude ležet na čtyřnásobku bytu (je tohle ještě vůbec aktuální?). Proto bych se nebál použít normální int32.

Co se týče rozdělení terénu na menší, to bych udělal určitě. Jak jsi to měl vymyšlené doteď? Vykreslovat celý terén bez ohledu na to, kam kouká kamera? Jestli ano, tak takhle bych na to raději nešel. Rozdělil bych terén na menší a pak testoval pro každý malý kousek terénu, jestli je vidět, a pokud ano, tak ho vykreslit.
Realizované to můžeš mít např. tak, že budeš mít sice jeden velký vertex buffer a jeden index buffer, ale ten index buffer bude uspořádaný tak, že v něm budou za sebou trojúhelníky jedné té malé části terénu.
Takže popis terénu pak může vypadat tak, že to bude dvojrozměrné pole struktur, kde struktura si pamatuje startovní index a počet trojúhelníků k vykreslení.

Kdyby Tě pak zajímalo trošku sofistikovanější testování viditelnosti na takovéto 2D mřížce, tak hledej heslo "quad tree".
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 16. září 2008, 14:39:10    Předmět: Odpovědět s citátem

Int16 je hovadina a presne ako pise Augi, vykonu IMHO a AFAIK uskodi. Kde si na to prisiel? (Okrem toho, Int16 ti dava aj tak 64k moznosti a to ti nestaci na tvoju aplikaciu???)

Okrem toho, ak si myslel Int na suradnice vrcholov terenu, tak preco nepouzit... hmm... mmmh... FLOAT??? Shocked

Co sa tyka rozdelenia terenu, tak sa na to uzivaju tzv. akceleracne struktury, ktore su vacsinou typu strom (ale moze byt aj nieco jednoduchsie typu uniformna mriezka).

Laicky, princip funkcnosti je taky, ze sa model rozdeli na mensie kusy (kde jeden kus obsahuje vzdy *niekolko* trojuholnikov (niekolko su stovky az tisice)), okolo kazdeho kusu sa natiahne "obalka" (tj analyticky jednoducho popisatelny utvar typu Axis-Aligned Box alebo Sphere) a renderuje sa tak, ze sa vykreslia vsetky kusy, ktorych obalka sa *aspon ciastocne* nachadza v pohlade kamery.

Zisk je obrovsky a sice, ze tie kusy modelu, ktore nie su vidno uplne vobec sa nevykreslia vobec, tie ktore su vidno sa vykreslia a strata je len tych par na rozhrani, z ktorych je vidno len kusok (vykreslia sa aj tak cele).

Takato struktura sa prepocita pre staticke objekty typu teren offline (ak jej vypocet trva dlho) alebo prave jeden krat pri nacitani modelu. Prikladmi su kD-tree/quadtree/octree/Bounding Volume Hierarchy alebo aj uniform grid a mnohe dalsie.

To len pre uplnost, mozno sa to bude hodit niektorym uplnym zaciatocnikom.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 16. září 2008, 16:58:50    Předmět: Odpovědět s citátem

Tak to nějak schrnu..

1) Float pouzit nemohu, VB.NET ho nezma, takze mam nyni int16 jen na vypocet vrcholu terenu coz je dostacujici, nevim proc jsem to pouzival i na indexy v poli Embarassed

2) Do ted jsem to mel udelane tak ze jsem experimentoval pouze na jedne male kostce terenu, asi hlavne pro rychlost. Nyni se tedy pokousim prepracovat stavaciji reseni na libovolne veliky terren + vykreslovani pouze toho kde je kamera..

Porzatím jsem pro tu malou část terénu vytvořil mesh, a pote pomoci effektu vykresloval. Testoval jsem ovšem větší terén a narazil na problém, že se mi mesh nechce vytvořit, typuji tedy že jeho velikost je nějak omezena..?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 16. září 2008, 17:05:14    Předmět: Odpovědět s citátem

Ok, nejdem sa vysmievat, leby by to bolo nepekne. Nie je ale mozne, aby VB.NET nepodporoval typy s pohyblivou desatinnou ciarkou (floating point, velmi volne prelozene ako desatinne cisla!). Mozno sa nevola presne float, ale single, real, double, real48 alebo podobne. OMFG Laughing

No a ohladom DirectX ti neporadim...
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 16. září 2008, 17:05:32    Předmět: Odpovědět s citátem

pcmaster napsal:
Int16 je hovadina a presne ako pise Augi, vykonu IMHO a AFAIK uskodi

Potvrzuju empiricky, v BrutSkvorkach jsem pouzival 16bit shorty (C++) (v polich a strukturach pouzitych dale v std listech apod.), a prechodem na obycejne 32bit inty se to zrychlilo skoro 2x

Juraj: pouzij treba Single
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 16. září 2008, 17:45:36    Předmět: Odpovědět s citátem

Juraj napsal:
Tak to nějak schrnu..

1) Float pouzit nemohu, VB.NET ho nezma


whe??? - System.Float je typ ktery musi VB.NET znat (je to soucasti .NET platformy) - pokud ne tak zkus As Single
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 16. září 2008, 19:21:35    Předmět: Odpovědět s citátem

Juraj napsal:
Porzatím jsem pro tu malou část terénu vytvořil mesh, a pote pomoci effektu vykresloval. Testoval jsem ovšem větší terén a narazil na problém, že se mi mesh nechce vytvořit, typuji tedy že jeho velikost je nějak omezena..?
No teoreticky je omezena rozsahem některých datových typů, ale v praxi jsem na toto omezení nikdy nenarazil. Co přesně to vrací za error code?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 16. září 2008, 19:42:56    Předmět: Odpovědět s citátem

Ad float ve VB.Net - Single (32bit), Double (64bit), a rekl bych, ze byly uz ve VB 3.0 Wink
Jinak samozrejme jde pouzit plne jmeno typu, tj. System.Single a System.Double
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 16. září 2008, 20:11:24    Předmět: Odpovědět s citátem

Jste se do mě nejak pustily wheee...

- No každopadně asi system.float nepodporuje, nejsem až taková lama. Pokud nevěříš, pošlu screen..


- Rád bych nahradil int16 za třeba u mě Single, což mě také napadlo, ale pokud to provedu, padá mi to na chybu ať použiju single nebo double vždy to padne když vytvářím IndexBuffer. (Single je 32)


To Augi
- kod kde mi to pada na chybu:
kód:

' Me.vrcCount = 66049

Me.mesh = New Mesh(Me.vrcCount * 3, Me.vrcCount, MeshFlags.WriteOnly, Me.VrEl, frmMain.dev)

error:
"D3DERR_INVALIDCALL"
nevim zda vam ten error k nečemu bude, asi bych musel zapnout debug directX ale to ja nemohu mam VS Expres..


Jeslti mam někde chybu tak mě nelinčujte, mam už toho dnes nějak dost Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 17. září 2008, 17:02:27    Předmět: Odpovědět s citátem

Problém bude v tom počtu vertexů - nad 64k potřebuješ 32-bit indexy, což zajistíš pomocí MeshFlags.Use32Bit. Jinak první parametr je počet faců a druhý počet vertexů...nemělo by to být spíš tak, že vertexů bude 3x víc než faců?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 18. září 2008, 09:30:46    Předmět: Odpovědět s citátem

No tak hadam poradie parametrov si uz dokaze skontrolovat aj on sam. Hadam ma otvorenu dokumentaciu popri tom ako kodi.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 18. září 2008, 22:53:40    Předmět: Odpovědět s citátem

Hadam po tvojej neocenitelnej rade uz fakt ma Very Happy
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 19. září 2008, 08:20:46    Předmět: Odpovědět s citátem

Lidé používající Visual Studio ani dokumentaci moc otvírat nemusí (pokud mají základní přehled o technologii), protože IntelliSense Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 19. září 2008, 09:30:47    Předmět: Odpovědět s citátem

pcmaster napsal:
Hadam po tvojej neocenitelnej rade uz fakt ma Very Happy
Dva razy som ten svoj predosly prispevok prepisal aby nevyznel prilis tvrdo, ale asi som to nemal robit, takze:

Netusim, ci ma poradie parametrov spravne alebo nie, ale ak nie, tak na to ma predsa dokumentaciu. S takymi vecami sa predsa nelezie na forum ! Kazdemu sa moze stat, ze prehodi nechtiac poradie, ked to edituje a tweakuje hore-dole. Ale v konecnom dosledku si to musi checknut oproti dokumentacii. Ci uz cez Intellisense, alebo ako otvorene druhe okno, to je fuk. Ale rozhodne pri kodeni treba mat dokumentaciu po ruke.

Takze pcmaster, moja rada bola neocenitelna, pretoze mu pripomenula, ze utierat zadky tu nikomu nebudeme ! To len na pripomenutie.

Samozrejme, povodny problem (66049 > 65535, aka 16bit vs 32bit) bol o inom. O tom forum je, ze na to upozorni.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
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 Předchozí  1, 2, 3, 4  Další
Strana 3 z 4

 
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