Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 15. září 2008, 21:36:08 Předmět: |
|
|
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
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 |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 16. září 2008, 06:50:00 Předmět: |
|
|
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 |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 16. září 2008, 14:39:10 Předmět: |
|
|
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???
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 |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 16. září 2008, 16:58:50 Předmět: |
|
|
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
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 |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 16. září 2008, 17:05:14 Předmět: |
|
|
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
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 |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 16. září 2008, 17:05:32 Předmět: |
|
|
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 |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 16. září 2008, 17:45:36 Předmět: |
|
|
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 |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 16. září 2008, 19:21:35 Předmět: |
|
|
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 |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 16. září 2008, 19:42:56 Předmět: |
|
|
Ad float ve VB.Net - Single (32bit), Double (64bit), a rekl bych, ze byly uz ve VB 3.0
Jinak samozrejme jde pouzit plne jmeno typu, tj. System.Single a System.Double _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 16. září 2008, 20:11:24 Předmět: |
|
|
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 |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 17. září 2008, 17:02:27 Předmět: |
|
|
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 |
|
|
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 18. září 2008, 09:30:46 Předmět: |
|
|
No tak hadam poradie parametrov si uz dokaze skontrolovat aj on sam. Hadam ma otvorenu dokumentaciu popri tom ako kodi. |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 18. září 2008, 22:53:40 Předmět: |
|
|
Hadam po tvojej neocenitelnej rade uz fakt ma _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 19. září 2008, 08:20:46 Předmět: |
|
|
Lidé používající Visual Studio ani dokumentaci moc otvírat nemusí (pokud mají základní přehled o technologii), protože IntelliSense |
|
Návrat nahoru |
|
|
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 19. září 2008, 09:30:47 Předmět: |
|
|
pcmaster napsal: |
Hadam po tvojej neocenitelnej rade uz fakt ma |
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 |
|
|
|