Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Unter folgendem Link solltest du auf jeden Fall fündig werden.
AABBs sind Kollisionsboxen, die die Dimensionen eines Objektes (Polyongs) als Box beschreiben und dazu noch im Gegensatz zu normalen OBBs immer auf der Achse dieses Objektes liegen.
Vorteil ist der geringe Rechnenaufwand bei dieser Art der Kollisionsabfrage, Nachteil ist jedoch die hohe Ungenauigkeit.
Deshalb sollte man AABBs eigentlich eher zur Präselektion bei ner Kollision verwenden.D.h., das du erstmal prüft ob die AABB eines Objektes mit der eines anderen kollidiert, und dann z.b. mittels Ray-Triangle-Intersektion den genauen Kollisionspunkt berechnest.So hast du eine recht schnelle UND dazu noch genaue Kollisionsabfrage.
P.S. : Thema verschoben, da dies nix mit OpenGL zu tun hat, sondern API-unabhängig ist.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
uups dahab ich wohl nich nachgedacht ... naja
das ray-triangle intersection is aber ziemlich langsam oder ?
aber wenn ich das nur da benutze, wo sich die boxen von AABB schneiden müssts relativ schnell bleiben...
kennst du dazu tutorials oder sonstige hilfen ?
cya !
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
NiGhTmArE hat geschrieben:
das ray-triangle intersection is aber ziemlich langsam oder ? aber wenn ich das nur da benutze, wo sich die boxen von AABB schneiden müssts relativ schnell bleiben...
Hab doch oben erwähnt das diese Methode die schnellste und gleichzeitig genauste ist
NiGhTmArE hat geschrieben:
kennst du dazu tutorials oder sonstige hilfen ?
Der google-Link spuckt ja zum Thema AABBs auf jeden Fall genug aus, und falls nicht, gibts immernoch in unserer Tutorialsektion (Misc) ein Tutzu dem Thema.
Zum Thema Ray-Triangle-Intersektion verweise ich dich auf ein Quellcodebeispiel von http://www.sulaco.co.za , das so ausführlich kommentiert wurde, das man da wirklich kein Tutorial mehr braucht.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
hab das thema nochma aufgefasst....
hab das mit dem ray-tri testen soweit verstande....
aber was bringt mir so ein ray im zusammenhang poly-poly (oder poly-quad) ?
cya!
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Sa Okt 26, 2002 17:14 Beiträge: 188 Wohnort: Hannover/Lüneburg
Ray ergibt sich aus alter Position und neuer Position deines Objektes. Wenn jetzt dieser ray mit einem Polygon schneidet, hat eine Kollision auf dem Weg von alter zur neuen Position stattgefunden.
_________________ Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
NiGhTmArE hat geschrieben:
aber was bringt mir so ein ray im zusammenhang poly-poly (oder poly-quad) ?
Ich habs zwar so noch nicht gemacht (normalerweise reicht ja ne Kollisionsabfrage zwischen Spieler und Umgebung, da ist Ray-Triangle sehr gut für geeignet), aber wenn die AABBs zweier Polygone miteinander kolllidieren kann man durch den Kollisionspunkt einen Strahl schiessen, und wenn dieser dann mit dem Polygon kollidiert hast du eine 100%ig korrekte Bestäigung einer Kollision inklusive der genauen Position an der diese Kollision stattgefunden hat.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
[quote="Son of Satan"]
Ich habs zwar so noch nicht gemacht (normalerweise reicht ja ne Kollisionsabfrage zwischen Spieler und Umgebung, da ist Ray-Triangle sehr gut für geeignet), ...quote]
Spieler und Umgebung ... hört sich ziemich nach dem an, was ich brauche wenn du mit Umgebung auch Hiehgtmaps meinst dann erklär bitte, wie man mit nem rey ( hier denk ich für den spieler ) und den polys ( die umgebung ) eine kollision testen kann....
cya und thx !
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Spieler-Heightmapkollision geht mit Ray-Triangle-Intersektion sehr einfach :
Der Spieler lässt sich mittels 3 Linien (Rays) repräsentieren, die den Bewegungsachsen des Spielers entsprechen.Also eine von -X nach +X, von -Y nach +Y und von -Z nach +Z, wobei ich mit - und + jeweils die Richtung relativ zur Spielerposition meine.Die Länge der Linien sollte man dabei mindestens den Ausmaßen des Spielers anpassen und bei höherer Laufgeschwindigkeit auch verlängern.
Diese drei Linien musst du dann ja nur noch mittels Ray-Triangle-Intersektion gegen die Dreiecke deines Terrains testen, und wenn irgendeine Linie kollidiert, besteht irgendwo Kollision.
Noch einfacher gehts, wenn du nur die Höhe brauchst, also z.B. keine Objekte auf deiner HM stehen, denn dann reichts wenn du den Spieler über eine Linie auf der Y-Achse repräsentierst und gegen die HM testest.Bei der Ray-Triangle-Intersektion bekommst du ja dann bei ner Kollision die genaue Position derer und kannst so den Spieler ohne gorße Umwege auf der Y-Achse korrekt positionieren.
Wenn dein Terrain aus recht vielen Dreicken besteht ist das natürlich sehr rechenaufwendig, weshalb du zuerst mal mittels AABBs feststellen solltest ob ein Dreieck überhaupt mit dem Spieler kollidieren kann.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
k ( hab ma wieder nich nachgedacht )
da sind wir wieder am anfang und gleichzeitig am ende
ich versuch mich ma duchzukramen....
aber da fällt mir ja noch was ein : *freu*
da ich sowieso vorhatte erst zu testen, was der spieler sieh, was nicht ( um rechenleistung zu sparen ) könnte man das doch zusammen benutzen oder ?
was wäre da gut ( gut bei mir = gut halt und nicht zu schwer )...
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.