Hallo Leute,
Ich arbeite nun schon seit geraumer Zeit an meinem Spiel (3 dimensional, first person, LWJGL, Opengl). Bisher klappt eigentlich alles super, nachdem ich nun endlich auch, neben allen möglichen Post Processing Effekten und Audios, Animationen aus Blender laden kann, hab ich eine Frage:
Mir fehlt noch eine Collision Detection mit allen möglichen Objekten, die in meinem Spiel so vor sich hinvegetieren. Mein Konzept wäre jetzt gewesen, alles in 2 Stufen zu gliedern.
1. Stufe: grobe Überprüfung.
Da ich ja weiß, wie groß mein größtes Objekt ist, lade ich von allen Objekt, in einem bestimmten Radius, eine Bounding Box (selbsterstellte Klasse mit der maximal und minimal Position des Objekts. Heißt min = niedrigste x, y, z Positionen und max = höchste x, y, z Positionen) und schaue ob sich die Bounding Box des Spielers und des Objekts überschneiden.
2. Stufe: exakte Überprüfung.
Sollte das der Fall sein, wäre meine Überlegung gewesen, dass man ein grobes Polygon um das Objekt erstellt und dann für jeden Punkt des Polygons, jeden Punkt des Polygons des Spielers (im allerbesten Fall Ellipse: heißt an sich ne Kugel mit radius als 3 dimensionaler Vektor (Radius auf x muss für Ellipse z.B kleiner sein als der auf z) überprüft.
Meine Idee wäre da geometrisch gewesen, dass ich eine Linie von dem zu überprüfenden Punkt des Spielers aus in eine beliebige Richtung male und schaue wie oft die Linie das Polygon scheidet. Schneidet die Linie das Polygon 0 mal oder gerade oft mal, so ist der Punkt außerhalb des Polygons. Bei einer ungeraden Anzahl ist der Punkt innerhalb und eine Collision passiert (wie ich auf so eine Collision reagiere, überleg ich mir wenn ich sie erkennen kann ).
Die erste Stufe hab ich schon.
Die zweite leider noch überhaupt nicht, da ich keine Ahnung habe wie diese geometrische Polygon überprüfung in Java mache. Das Problem dabei ist (sonst würde ich einfach ein Bild in Java malen), dass das ganze ja auch noch möglichst schnell gehen muss. Polygon Klasse hätte ich mir mit 3 Attributen vorgestellt: Jeweils ein Array mit den Positionen für die drei Achsen.
Wenn jemand eine bessere Idee hat, bin ich gerne bereit, meine Ideen sofort über Board zu werfen !
Habe ursprünglich versucht mich hier einzuarbeiten: http://www.peroxide.dk/papers/collision/collision.pdf aber da komm ich gar nicht rein (bleibe bei diesen komischen Planes hängen :?)
Ich arbeite nun schon seit geraumer Zeit an meinem Spiel (3 dimensional, first person, LWJGL, Opengl). Bisher klappt eigentlich alles super, nachdem ich nun endlich auch, neben allen möglichen Post Processing Effekten und Audios, Animationen aus Blender laden kann, hab ich eine Frage:
Mir fehlt noch eine Collision Detection mit allen möglichen Objekten, die in meinem Spiel so vor sich hinvegetieren. Mein Konzept wäre jetzt gewesen, alles in 2 Stufen zu gliedern.
1. Stufe: grobe Überprüfung.
Da ich ja weiß, wie groß mein größtes Objekt ist, lade ich von allen Objekt, in einem bestimmten Radius, eine Bounding Box (selbsterstellte Klasse mit der maximal und minimal Position des Objekts. Heißt min = niedrigste x, y, z Positionen und max = höchste x, y, z Positionen) und schaue ob sich die Bounding Box des Spielers und des Objekts überschneiden.
2. Stufe: exakte Überprüfung.
Sollte das der Fall sein, wäre meine Überlegung gewesen, dass man ein grobes Polygon um das Objekt erstellt und dann für jeden Punkt des Polygons, jeden Punkt des Polygons des Spielers (im allerbesten Fall Ellipse: heißt an sich ne Kugel mit radius als 3 dimensionaler Vektor (Radius auf x muss für Ellipse z.B kleiner sein als der auf z) überprüft.
Meine Idee wäre da geometrisch gewesen, dass ich eine Linie von dem zu überprüfenden Punkt des Spielers aus in eine beliebige Richtung male und schaue wie oft die Linie das Polygon scheidet. Schneidet die Linie das Polygon 0 mal oder gerade oft mal, so ist der Punkt außerhalb des Polygons. Bei einer ungeraden Anzahl ist der Punkt innerhalb und eine Collision passiert (wie ich auf so eine Collision reagiere, überleg ich mir wenn ich sie erkennen kann ).
Die erste Stufe hab ich schon.
Die zweite leider noch überhaupt nicht, da ich keine Ahnung habe wie diese geometrische Polygon überprüfung in Java mache. Das Problem dabei ist (sonst würde ich einfach ein Bild in Java malen), dass das ganze ja auch noch möglichst schnell gehen muss. Polygon Klasse hätte ich mir mit 3 Attributen vorgestellt: Jeweils ein Array mit den Positionen für die drei Achsen.
Wenn jemand eine bessere Idee hat, bin ich gerne bereit, meine Ideen sofort über Board zu werfen !
Habe ursprünglich versucht mich hier einzuarbeiten: http://www.peroxide.dk/papers/collision/collision.pdf aber da komm ich gar nicht rein (bleibe bei diesen komischen Planes hängen :?)