Kollisionserkennung - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

Kollisionserkennung

Description:

Kollisionserkennung Eine Pr sentation f r das Proseminar Game Design von Florian Liegsalz am 04.12.07 – PowerPoint PPT presentation

Number of Views:66
Avg rating:3.0/5.0
Slides: 23
Provided by: Floria160
Category:

less

Transcript and Presenter's Notes

Title: Kollisionserkennung


1
Kollisionserkennung
  • Eine Präsentation für das Proseminar
  • Game Design
  • von
  • Florian Liegsalz
  • am 04.12.07

2
Überblick
  1. Kollisionserkennung Was ist das und wofür
    brauche ich es?
  2. Was muss ich bei der Kollisionserkennung
    beachten?
  3. Welche Methoden der Kollisionserkennung gibt es?
  4. Ausblick

04.11.07 Florian Liegsalz
Überblick
2
3
Collision Detection Was ist das und wofür
brauche ich es?
Grundlagen
  • Bei der Kollisionserkennung geht es darum
    herauszufinden, wann und wo 2 oder mehr Objekt
    sich berühren oder überschneiden.
  • Kollisionserkennung wird in vielen Bereichen
    benötigt. Dazu zählen
  • Entwicklung von beweglichen Maschinen
  • Autocrashtests
  • Robotik
  • Realitätssimulationen
  • Computerspiele

04.11.07 Florian Liegsalz
3
4
Collision Detection Was ist das und wofür
brauche ich es?
3 Phasen
  • Kollisionserkennung findet in 3 Phasen statt
  • 1.Phase Ausschließung von Objekten, die nicht
    kollidieren können
  • 2.Phase Überprüfung der möglichen Kollisionen
    der Restobjekte
  • 3.Phase Ausführung genauer Schnitttests mit
    spezifischen Methoden

04.11.07 Florian Liegsalz
4
5
Überblick
  1. Kollisionserkennung Was ist das und wofür
    brauche ich es?
  2. Was muss ich bei der Kollisionserkennung
    beachten?
  3. Welche Methoden der Kollisionserkennung gibt es?
  4. Ausblick

04.11.07 Florian Liegsalz
Überblick
5
6
Was muss ich bei der Kollisionserkennung
beachten? Teil 1
Ein einfaches Modell
Eigentlich ist Kollisionserkennung ganz einfach,
oder
c Kollisionsobjekt colObs new
Kollisionsobjektn foreach (Kollisionsobjekt o
in colObs) o.move() foreach
(Kollisionsobjekt p in colObs) if (o!p)
o.checkForCollision(p) /c
  • Welche Probleme treten auf?
  • Offensichtlich Laufzeit O(n²)
  • Wie implementiere ich eigentlich
    checkForCollision? Also wie finde ich heraus,
    ob 2 Objekte kollidieren?Und was mache ich dann
    mit Ihnen?

04.11.07 Florian Liegsalz
6
7
Was muss ich bei der Kollisionserkennung
beachten? Teil 2
Noch mehr Einfaches
Geht man wie in meinem Beispiel von Kugeln aus,
ist das ganze relativ einfach
c public override FloatPoint
checkForColBall(ColOb ob) float dX
pos.X - ob.pos.X float dY pos.Y
- ob.pos.Y float l
(float)Math.Sqrt(dX dX dY dY)
if (l lt this.radius ob.radius)
dir.X 0 dir.Y 0 ob.dir.X
0 ob.dir.Y 0 return pos
return null /c
  • Welche Probleme treten auf?
  • Was passiert, wenn unser Objekt zu schnell ist?
  • Was tun, wenn unser Objekt nicht rund ist?

04.11.07 Florian Liegsalz
7
8
Was muss ich bei der Kollisionserkennung
beachten? Zusammenfassung
Zwischenergebnisse
  • Eine Laufzeit von O(n²) ist definitiv
    unerwünscht.
  • bessere Speichermöglichkeit finden und
    Ausschlussverfahren entwickeln
  • Wenn Elemente zu schnell sind, können sie sich
    überspringen.
  • Wir bilden aus unseren Objekten ein
    Vergleichsobjekt. Aber wie?
  • Unrunde Elemente führen zu Lücken, wenn man über
    den Mittelpunkt und den Radius abfragt.
  • Wir suchen uns genauere Abfragemethoden

04.11.07 Florian Liegsalz
8
9
Überblick
  • Kollisionserkennung Was ist das und wofür
    brauche ich es?
  • Was muss ich bei der Kollisionserkennung
    beachten?
  • Welche Methoden der Kollisionserkennung gibt es?
  • Ausblick

04.11.07 Florian Liegsalz
Überblick
9
10
Welche Methoden der Kollisionserkennung gibt es?
Teil 1
Das Prinzip der Bounding Boxes
  • Wie wir gesehen haben, sind runde Bounding
    Boxes nicht sehr praktikabel, da der Orbit um
    ein Objekt sehr schnell zu groß wird.
  • Daher werden normalerweise Rechtecke als
    Bounding Box verwendet.
  • Davon gibt es im wesentlichen 3 Arten
  • AABB axis aligned bounding boxes
  • OBB oriented bounding boxes
  • k-DOP k-Discrete Oriented Polytop

04.11.07 Florian Liegsalz
10
11
Welche Methoden der Kollisionserkennung gibt es?
Teil 2
Die 3 Modelle
04.11.07 Florian Liegsalz
11
12
Welche Methoden der Kollisionserkennung gibt es?
Teil 3
  • Methodenvergleich

04.11.07 Florian Liegsalz
12
13
Welche Methoden der Kollisionserkennung gibt es?
Teil 4
Kollisionsverfeinerung
Dies ist ein Quadtree, da wir im 2D-Raum sind.
Im 3-dimensionalen hätten wir einen Octree.
04.11.07 Florian Liegsalz
13
14
Welche Methoden der Kollisionserkennung gibt es?
Teil 5
Kollisionsausschluss
  • Ein weiterer wichtiger Bestandteil der
    Kollisionserkunnungsabteilung ist die Minimierung
    der nötigen Vergleiche .
  • Dafür gibt es wiederum verschiedene Verfahren.
  • Bessere Speichermöglichkeiten finden als ein
    Array.
  • Ausschlusskriterien festlegen, z.B.
  • Objekte klassifizieren in statisch und dynamisch
  • Regeln festlegen, wie Projektile kollidieren
    nicht

04.11.07 Florian Liegsalz
14
15
Welche Methoden der Kollisionserkennung gibt es?
Speicherung
Speicherung
  • Für die Speicherung gibt es wiederum verschiedene
    Vor-gehensweißen.
  • Da wären z.B.
  • die uniforme Raumunterteilung
  • Quad- / Octree
  • BSP Baum (Binary Space Partitioning)
  • Sweep and Prune
  • Man muss aber unterscheiden! Verschieden
    klassifizierte Objekte können mit verschiedenen
    Methoden gespeichert werden. Objekte selber
    können wiederum andere Methoden zur Speicherung
    und Unterteilung benutzen.

04.11.07 Florian Liegsalz
15
16
Welche Methoden der Kollisionserkennung gibt es?
die uniforme Raumunterteilung
Die uniforme Raumunterteilung
Hier wird wieder mit einem Array oder Ähnlichem
gearbeitet, nur dass diesmal nicht nur die
Objekte im Array gespeichert werden, sondern die
gesamte Fläche.
Der große Nachteil an dieser Speicherart ist,
dass sobald die gespeicherten Objekte in Bewegung
sind, man auch jeweils das gesamte Raster
aktualisieren muss.
04.11.07 Florian Liegsalz
16
17
Welche Methoden der Kollisionserkennung gibt es?
Quad- / Octree
Quad- / Octree
Der Quadtree funktioniert in diesem Fall ähnlich
wie bei der Speicherung der Bounding Box.
Problematisch ist diese Struktur nur bei sehr
beweglichen Strukturen, da der Baum relativ
schwierig zu aktualisieren ist.
04.11.07 Florian Liegsalz
17
18
Welche Methoden der Kollisionserkennung gibt es?
BSP - Baum
BSP Baum
BSP-Bäume sind in der 3D-Graphik ein häufig
benutztes Mittel. Hierbei werden Polygone mit
Ebenen geschnitten und dadurch wird ein Binärbaum
erzeugt. Ich habe ein Applet gefunden, mit dem
ich erklären möchte, wie die Erstellung eines
BSP-Baumes funktioniert. http//www-lehre.inform
atik.uni-osnabrueck.de/vcprakt/ifc/part1/html/bsp
applet.html
04.11.07 Florian Liegsalz
18
19
Welche Methoden der Kollisionserkennung gibt es?
Sweep and Prune
Sweep and Prune
Bei diesem Verfahren wird jedes Element in n
sortierten Listen gespeichert, wobei n die Anzahl
der Dimensionen ist. Wir speichern in jeder
Liste das jeweilige Objekt anhand der
dazugehörigen Koordinate auf der Achse. Da wir
durch die im Objekt gespeicherten Daten die
Breite des Objekts wissen, können wir dadurch
dann die Kollision abprüfen. Das Gute an diesen
Listen ist, dass wir eigentlich nur immer ein
Element in den Listen aktualisieren müssen.
Dadurch haben wir mittels Insert-Sort eine
ungefähre Laufzeit von O(n).
04.11.07 Florian Liegsalz
19
20
Überblick
  1. Kollisionserkennung Was ist das und wofür
    brauche ich es?
  2. Was muss ich bei der Kollisionserkennung
    beachten?
  3. Welche Methoden der Kollisionserkennung gibt es?
  4. Ausblick

04.11.07 Florian Liegsalz
Überblick
20
21
Ausblick
Ausblick
Es gibt noch viele andere Verfahren. Eines der
wichtigsten davon ist z.B. I-Collide. Dieses ist
eine Kombination von AABB und Sweep and Prune und
arbeitet daher sehr effizient. Diese Verfahren
sind natürlich nicht fix implementiert, sondern
nur eine ungefähre Vorgehensweiße, d.h. jeder
muss das selber programmieren. Daraus ergeben
sich teilweise schnellere und bessere
Algorithmen. Ebenso werden die vorhandenen
Algorithmen auch weiterentwickelt. Aus I-Collide
wurde z.B. V-Collide.
04.11.07 Florian Liegsalz
21
22
Ende
Ende
04.11.07 Florian Liegsalz
22
Write a Comment
User Comments (0)
About PowerShow.com