Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 27, 2025 13:26

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Axis Aligned Bounding Boxes
BeitragVerfasst: Mo Aug 04, 2003 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
Hi erstma...
es geht um Axis Aligned Bounding Boxes zur Verwendug für die Kollisionsabfrage bei Heightmaps...

gibts dazu tutorials oder sowas ?
ich hab nämlich keinen Plan wie man das benutzt.. ( geschweige denn was das genau ist :D )


cya!

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 04, 2003 22:14 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 05, 2003 09:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
uups :D
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... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 05, 2003 09:35 
Offline
DGL Member
Benutzeravatar

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 :roll:

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 18:14 
Offline
DGL Member
Benutzeravatar

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... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 18:51 
Offline
DGL Member
Benutzeravatar

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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 18:54 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 18:57 
Offline
DGL Member
Benutzeravatar

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 :D
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... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 19:05 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 19:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
k ( hab ma wieder nich nachgedacht :D )
da sind wir wieder am anfang und gleichzeitig am ende :D

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 :D und nicht zu schwer )...

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]