Hogyan lehet OpenGL-ben (VC++) egy 3d-s páján meghatározni, hogy ne menjen túl a falon, megütközzön vagy egy adott távolságig tudjon közelíteni hozzá (az utóbbi volna a legjobb)?
arpad_fejedelem@yahoo.com
email címre lehet választ írni, vagy persze ide is
Mivel a fal a 3d világod többi részéhez hasonlóan sík lapokból áll (háromszögekből), ezért a feladat nem más mint egy tetszőleges (térbeli) háromszögre és pontra megmondani a pontnak a háromszög síkjától való távolságát, valamint azt, hogy a pontból a síkra húzott merőleges a háromszögön belül van-e.
Tessék: [link]
A kamerának semmi köze ahhoz, hogy a falnak való ütközést detektáld (mehetsz akár "hátrafelé" is, amikor a falat nem látod, de nekimész).
Nem tudom egyébként, hogy mi az, ami nem megy ebben.
Bármikor, amikor a játékost mozgatod (akinek a fején van a kamera), akkor a játékos koordinátáiból és a kívánt elmozdulásból megvan az irányvektor, ami felé haladni akarsz. Az előbbi két adatból adódó egyenes metszéspontját kell keresni az összes szóba jöhető háromszöggel (már amiket mozdíthatatlannak kívánsz). Az összes "szóba jöhető" itt azt jelenti, hogy érdemes előszűrni a háromszögeket. Pl. azokat fölösleges nézni, amelyek háttal vannak (ld. normálvektoruk), meg azokat is, amik a kívánt mozgással ellentétes irányban vannak. Olyat is szoktak csinálni, hogy a tájképet felbontják objektumokra, azoknak van egy befoglaló téglalapjuk, vagy gömbjük, így a bennük lévő háromszögekre csak akkor kell számolni, ha a befoglalót metszi a mozgás vektora.
Na, mindegy. Hosszú ezt így elmagyarázni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!