Kolize ve 3D

HackForum

Kolize ve 3D#
Cauky, vim ze je tu spoustu schopnejch programatoru, tak bych se chtel na neco zeptat. Jedna se o system kolizi ve 3D. Jsem teprv zacatecnik tak na me moc nekricte ;).

Reknem ze mam nahrany teren a umistenou kameru, a chtel bych, aby kdyz se pohybuji s kamerou po tom terenu, tak aby kopirovala ten teren. Verte mi, ze jsem hodne hledal, ale prijde mi, ze je to asi tabu :(. Napriklad na [link] se pise ze mam ten objekt (kameru) necim obalit a kontrolovat kolizi toho objektu, ale to mi prijde strasne moc casove narocne (nevim, myslim si to), jelikoz by se muselo kontrolovat strasne moc objektu. toto same se tvrdi i v [link]
Kontrola pomoci vektoru [link] mi prijde o neco vyhodnejsi, ale porad mi prijde zbytecne kontrolovat kolizi se vsemi objekty (jelikoz nevim jak zjistit nejblizsi objket :(). Co se tyka koliza s jednou rovinou (plochou), neni tekze odvodit vztah jestli bod lezi v rovine nebo ne, ale jak to prave udelat v terenu, kdyz tam je strasne moc rovin?

Doufam ze tu neplacam kraviny a predem dekuji za odpoved :)
(odpovědět)
anonym | 89.24.110.*7.4.2008 22:43
re: Kolize ve 3D#
pokial mas iba teren v zmysle vyskovej mapy, tak by malo stacit kontrolovat, ci si sa nedostal prilis nizko v zvislej osi.

akonahle mas nieco zlozitejsie, obalit kameru gulickou je asi jedina moznost. nemusi to byt az tak vypoctovo narocne, pretoze si mozes cely svet rozdelit na male kusky a kontrolovat len polygony v tom kusku, kde je kamera.

moc do toho nevidim, takze sa rad necham poucit.
(odpovědět)
myself | 78.128.195.*7.4.2008 23:30
re: Kolize ve 3D#
Presne jak pise myself. Musis testovat kolizi jen s objekty, u kterych to ma smysl, tj. ktere jsou primo kolem tebe. Abys vedel, co je kolem tebe, tak si ty polygony po nacteni musis nejak zorganizovat.
- V pripade jednoducheho terenu (bez mistnosti, jeskyni, ...) staci scenu mrizkou rozdelit na segmenty ve tvaru ctverce. Pokud nektery segment bude obsahovat prilis mnoho polygonu, muzes si ho rozdelit na nekolik mensich segmentu. A podle tve pozice budes testovat jen polygony ve tvem segmentu. Pokud se pohybujes napriklad letadlem, muzes v kazdem segmentu mit taky informaci o nejvyse polozenem bodu, a pokud bude mimo drahu letadla, nemusis jednotlive polygony vubec testovat. Fantazii se meze nekladou.
- Pokud je teren slozitejsi (s jeskynemi), muzes si ho obdobne mrizkou rozdelit na segmenty ve tvaru krychle. A prilis slozite segmenty zase rozdelit do podkrychli. Tady uz se ale da predpokladat, ze vetsina segmentu bude prazdna, takze je nesmysl takove segmenty testovat, cili o nic vubec vest informace. Tady je pak otazka, jak takove informace o scene strukturovat. Nabizi se pouziti nejake formy stromove struktury (kazdy segment muze obsahovat odkazy na segment pred/za/nad/pod/..., po kterych se budes pohybovat).
- Samozrejme je moznost do stromu roztridit jednotlive polygony a segmenty vubec nepouzivat.
- Je pet rano, vic ted dokupy nedam :)

(odpovědět)
prc | 213.211.51.*8.4.2008 5:08
re: Kolize ve 3D#
Cauky, tak dekuji moc za rady.
Akorat bych se chtel jeste zeptat, jak to rozdelovani na mensi useky probiha? (hodne lamackej dotaz, ale nedokazu si to nejak predstavit :() Ten napad se stromovou struktorou je dobrej, ted mi tak dochazi, ze by se podle toho dalo ten teren vlastne rozdelit. Vidite jaky v tom mam zmatek :(.

Tedy mohl bych vas jeste kapinku zneuzit? Mohl bych vas pozadat, jestli by jste nebyli ochotni udelat nejaky jednoduchy ukazkovi program kde by to bylo ukazany? Popripade odkazat na nejakou literaturu? (Vim je ji dost, taky jsem ji hodne precet, ale vesmes pulka z knizky pojednava o winapi a o tom jak vytvorit okno a nic dulezityho se z nich neziska :()
(odpovědět)
Anonym8.4.2008 21:54
re: Kolize ve 3D#
idealne bude, ked si tu stromovu strukturu vygenerujes iba raz a potom vzdy nacitas. postupovat mozes rozne, pouzivaju sa hlavne tieto pristupy: vsetky segmenty maju rovnaku velkost alebo vsetky segmenty obsahuju rovnake mnozstvo vrcholov (netreba brat doslovne). jednoduchsie je zrejme to prve.

takze si spravis nejake tie loopy, kde budes prechadzat celym priestorom, najprv ho rozdelis na osminy (predstav si kvader rozrezany pozdlz rovin xy, yz, xz), kazdu osminu znova na osminy atd. a zo suboru, kde mas ulozene vrcholy si vyberies tie, ktore tam patria. a toto cele si ulozis, cize stromovu strukturu osmin a ake vrcholy kam patria.
(odpovědět)
myself | 78.128.195.*8.4.2008 22:26
re: Kolize ve 3D#
Ok, dekuji.
Az bude o vejkendu vic casu, tak se pokusim neco udelat a popripade dat sem odkaz, pokud budete mit zajem mi to zkritizovat (a budete mit co ;)).
(odpovědět)
Anonym9.4.2008 22:01
re: Kolize ve 3D#
Tak uz jsem na to prisel. Jen pro upresneni pro dalsi zajemce. To co tu je popsano jsou ve skutecnosti BSP stromy. Pokud se o nich chcete dozvedet vic, tak staci dat do googlu bsp tree a mate mnoho materialu k prostudovani. Jinak tady je jeden odkaz na cesky text o bsp stromech [link] .

Jiank jeste jednou dekuji za nakopnuti spravnym smerem :)
(odpovědět)
Anonym26.4.2008 12:04

Zpět
 
 
 

 
BBCode