Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 25. březen 2010, 14:06:49 Předmět: Kolizni systemy |
|
|
Zdarec,
momentalne v svem pidiEnginu pouzivam sphere-triangle kolize. Je to sice krasny ze mi to muze pekne chodit po terenu ale je to ukrutne pomaly. Jak se toto resi v novych hrach? Mam implementovany frustum culling ktery vynechava objekty vcetne pocitani jejich kolizi ale aji tak kdyz je vykreslena cela scena tak to jede okolo 30fps. Kazdopadne co je nejrychlejsi a ma to dobry vysledky? (nemyslim tu variantu, ze kdyz prijdu ke stene tak aby se mi nezacala trepat jak kostlivec.)
Dik Jatro |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 25. březen 2010, 21:43:41 Předmět: |
|
|
1) Ehm, mám takový dojem, že frustrum culling řeší něco úplně jiného (zda se na danou věc dívá pozorovatel, tj. hráč)
2) Mně přijde jako dobrá věc na zrychlení tzv. object space, kdy se nejdříve řeší, zda se protínají bounding boxes a pouze v případě kladného výsledku se propočítají detailnější kolize (tj. asi v naprosté většině triangle-triangle) _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 25. březen 2010, 22:27:06 Předmět: |
|
|
Na teren pouzivam odlisny kolizini system. Pokud máš pravidelnou síť (např. z výškové mapy), tak určím pozici, v jakém čtverci (trianglu) stojím, vezmu jeho vrcholy a provedu interpolaci podle mojí pozice. Tím dostanu "nadmořskou výšku" akt. pozice a podle toho upravím pohyb.
Na kolize mezi objekty mám OBB (rychlejší jsou AABB, ale zase moc dobře neaproximují některé objekty) a na frustrum culling používám koule. Sice trošku pokoulává přesnost (občas kreslím i co nevidím, ale test je hodně rychl)
Ideální je mít hierarchii... nejdřív testovat koule (rychlý test, vyřadí objekty které jsou daleko) -> AABB / OBB test na jemnější kolize... těch boxů zase může být více. Jeden velký kolem celého tělesa, pak zjemňovat např. pro ruce, nohy, hlavu separátní. Ideální je to hodit do stromu (což jsem zatím neimplementovat, takže přesně nevím jak konkrétně to udělat )
Přijde mi, že řešit kolize na úrovni trianglů je hodně o tom, co děláš. Např. pro automobilový simulátor to vidím jako zbytečnost (podle mě stačí boxy okolo auta). Naopak pokud děláš nějaký WYSWIG editor scény, tak potřebuješ přesnost na úrovni trianglů pro tzv. picking, abys věděl na čem je momentálně myš... záleží na co to potřebuješ. Tetsovat na triangly je např. u modelů s vysokým počtem polygonů vražda. Vem si, že budeš mít nějaké AI... a pak by muselo stejné testy provádět i AI a to bude už pro 20 objektů podle mě konečná. |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 11:01:50 Předmět: |
|
|
If.then: jo frutum slouzi k tomu cemu rikas, ja to pouzivam aji pro kolize - kdyz objekt neni videt tak pro nej logicky nepocitam kolizi, blbe si to pochopil.
perry: no, na 80% to bude hra v baracich a na rovnych plochach, ten teren jsem sem hodil jenom jako priklad. Tudiz AABB/OBB mi nejsou moc platne protoze grafik ten level musi rozhazet do milionu objektu. Jinak to frustum mam taky pres koule a je to snad rychlejsi nez pres boxy. Spis bych chtel vedet jak se to implementuje na tech novejch hrach kdy aji ten level ma docela dost trianglu a kolize s nim jsou ciste. |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 26. březen 2010, 11:21:47 Předmět: |
|
|
Co znamená čisté - kontroloval jsi to nějak dúkladně? Dokážu si představit, že na kolize používaj verze modelů pro nižší LOD. Jinak pobavilo mě, že "logicky" není potřeba testovat kolize pro objekty, které nejsou vidět . _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 11:40:21 Předmět: |
|
|
Ladis: tak mi rekni je nejakej duvod tu kolizi pocitat kdyz ten objekt je od tebe daleko a tim s nim nemuzes kolidovat? A cistyma kolizema myslim to ze mi nebude poskakovat kamera kdyz pujdu okolo sten. |
|
Návrat nahoru |
|
 |
MePHyst0
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: SVK/CZK
|
Zaslal: 26. březen 2010, 12:20:19 Předmět: |
|
|
no mne pride ze staci aby som cuval a uz s tvojim pristupom neskolidujem so stenou co je za mnou tak isto si zober ze nejaky objekt vyleti z pohladu a mal by narazit do steny a odrazit sa spat do viditelnej sceny. s tvojim pristupom bude tiez problem kedze ten objekt sa neodrazi a nevrati do sceny a mohli by sme pokracovat |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 12:56:37 Předmět: |
|
|
MePHyst0: tak vem si to tak, mas nejakou mistnost a ta ma rozdeleny steny na objekty, okolo kazdyho objektu(steny) je velka koule, jak zacnu couvat tak se mi podari vlezt do frusta te koule a objekt se vykresli. Schvalne jsem si to zkousel. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 26. březen 2010, 13:10:03 Předmět: |
|
|
citace: |
no, na 80% to bude hra v baracich a na rovnych plochach, ten teren jsem sem hodil jenom jako priklad. Tudiz AABB/OBB mi nejsou moc platne protoze grafik ten level musi rozhazet do milionu objektu
|
No právě na to jsou AABB / OBB ideální. Hranatý barák aproximují téměř přesně. |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 13:41:00 Předmět: |
|
|
takze, zaukolovat grafika aby to rozhazel do objektu - pro kazdej spocitat minima a maxima a s tema potom aplikovat kolize ze? |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 26. březen 2010, 13:46:19 Předmět: |
|
|
No bud to rozhazet do objektu, nebo si tam ty boxy nahazet rucne. Ja to mam delany tak, ze na jeden objekt muze byt x boxu. Takze klidně 1 model města a v nem rucne nacvakany boxy pro každou budovu... |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 16:21:39 Předmět: |
|
|
perry: ja asi takovou moznost mit nebudu protoze ty levely jsou delany v gmaxu a na vlastni level editor se jeste necitim. Jeste bych chtel vedet, predpokladam ze potrebuju pocitat k tomu minimu,maximu aji normalu ne? abych byl schopnej po tech AABB klouzat a ne se do nich zasekavat. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 26. březen 2010, 20:24:30 Předmět: |
|
|
Pokud ti stačí skluz, tak spočteš min / max, normálu a hloubku penetrace (která se dá vzít tak, že vypočteš směrový vektor.. jeho délka = hloubka, jeho normalizace = normála směru).
Pokud by ti stačili AABB boxy a grafikovi se to nechce dělit , tak můžeš nechat 1 model a rozdělit ho na sub-meshe (1 budova = 1 submesh) a vypočítat automaticky AABB boxy pro submeshe.
A nebo použít totálně primitivní kolizní model. Pokud víš, že město bude pouze v rovině a hráč nemůže rotovat (nebo může, ale spokojíš se s drobnými nepřestnostmi), tak můžeš zkusit použít pravidelnou (nebo nepravidelnou) mřížku kterou to město "podložíš" a pokud na buňce je dům, tak tam hodíš třeba 0, pokud ne tak 1... a během pohybu testuješ jestli nelezeš do buňky s 0 (lze tam mít víc čísel.. třeba 2 by znamenalo že je vyplněná jenom horní 1/4 apod.). Takovýhle kolizní model je dost stupidní a a problém je když např. rotuješ, tak to nijak netestuje rohy.. pouze pozice. Měl jsem to nasazený v bludišti a fungovalo to tak na 80% spolehlivě. Blblo to jenom občas v rozích, ale pokud to hráč nehledal, tak to vidět nebylo
Vyplnění mřížky lze aplikovat pro celý model samo.. pojedeš při inicializaci bod po bodu a když bude jeho výška vyšší, než jakoby terén, tak ho zapíšeš do mřížky na pozici, kterou jsi vypočítal ze souřadnice vrcholu.
Záleží na tom, co očekáváš aby to dělalo ve výsledku. |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 26. březen 2010, 22:47:49 Předmět: |
|
|
no, grafik si v tom maxu hraje strasne rad takze nakej nove rozdelenej level mu nedela problem. Jinak po tech kolizich chci aspon ten zaklad - nejaky plynuly klouzani, abych s tim byl schopnej vyjit schody a aplikovat na to gravitaci. |
|
Návrat nahoru |
|
 |
Mnemonic

Založen: 28. 07. 2007 Příspěvky: 93
|
Zaslal: 27. březen 2010, 09:13:37 Předmět: |
|
|
"Rozhazeni do objektu" zase nemusi byt dvakrat idealni z hlediska renderovani. Nevim, jakej pouzivas format pro geometrii sveta, ale je problem, aby grafik kolem normalnich modelu nahazel "neviditelny" boxy (koule, low-poly meshe...), ktery pouzijes pro kolize, ale nebudes je vykreslovat? |
|
Návrat nahoru |
|
 |
|