.[ ČeskéHry.cz ].
Kolizni systemy
Jdi na stránku 1, 2, 3  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
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 25. březen 2010, 14:06:49    Předmět: Kolizni systemy Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 25. březen 2010, 21:43:41    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 25. březen 2010, 22:27:06    Předmět: Odpovědět s citátem

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 Smile)
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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 11:01:50    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



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

PříspěvekZaslal: 26. březen 2010, 11:21:47    Předmět: Odpovědět s citátem

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 Wink.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 11:40:21    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
MePHyst0



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: SVK/CZK

PříspěvekZaslal: 26. březen 2010, 12:20:19    Předmět: Odpovědět s citátem

no mne pride ze staci aby som cuval a uz s tvojim pristupom neskolidujem so stenou co je za mnou Smile 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 Smile a mohli by sme pokracovat
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 12:56:37    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 26. březen 2010, 13:10:03    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 13:41:00    Předmět: Odpovědět s citátem

takze, zaukolovat grafika aby to rozhazel do objektu - pro kazdej spocitat minima a maxima a s tema potom aplikovat kolize ze?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 26. březen 2010, 13:46:19    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 16:21:39    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 26. březen 2010, 20:24:30    Předmět: Odpovědět s citátem

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 Smile, 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 Smile
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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 26. březen 2010, 22:47:49    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mnemonic



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

PříspěvekZaslal: 27. březen 2010, 09:13:37    Předmět: Odpovědět s citátem

"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
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, 3  Další
Strana 1 z 3

 
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