# Java 3 dimensionale Kollisions Abfrage



## David Schwarzbeck (24. Mai 2016)

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 :?)


----------



## Schmetterhand (25. Mai 2016)

Zwei Fragen:

Hast du, um die Animationen abzuspielen, "das Rad neu erfinden müssen" (alles selbst implementieren), oder hast du auf bereits vorhandene Ressourcen zurückgreifen können?
Musstest du einen Importer für das ".blend"-Format (also für Vertex-Daten, Texturen und Animationen, welche in der Datei enthalten sind) schreiben, um deine Objekte zu laden, oder hast du von Blender in ein einfacheres Format exportiert (z.B. ".obj", wobei dann Animationen nicht mehr mitgespeichert werden könnten)


----------



## David Schwarzbeck (25. Mai 2016)

3dimensionale Vektorrechnung in Java? 
1. Habe für die Animationen das Candara Datei Format (Glaub, dass es so heißt bin grad am Handy) benutzt (auf jeden Fall skeletal animations). Den Loader dazu hab ich selber schreiben müssen.
2. Für die Objekte benutze ich aus Blender exportierte .obj Dateien. Sind bei Spieleentwicklung die einfachsten. 

Aber das tut erstmal nichts zur sache


----------

