1
Kollisionserkennung von Jens Schedel, Christoph Forman und Philipp Baumgärtel 2
1. Einleitung Wozu wird Kollisionserkennung benötigt? 3
- für Computergraphik 4
- für Simulationen 5
- für Wegeplanung 6
2. Einfache Kollisionserkennung Kollision und Abstand zwischen konvexen Polygonen / Polyedern 7
Kollision zwischen Polygonen - Schnittberechnung: Objekt 1: m Seiten Objekt 2: n Seiten Aufwand = O(mn) - Funktion liefert nur TRUE oder FALSE 8
Kollision zwischen Polygonen Schnitt zweier Linien: - wenn sich die zugehörigen Geraden schneiden - und der Schnittpunkt innerhalb der Begrenzung der Linien liegt 9
Abstand zwischen konvexen Polygonen kurzer Exkurs: Voronoi Regionen Voronoi Regionen eines Polygons basieren immer abwechselnd auf einer Ecke und einer Seite. Die Begrenzungen stehen immer in den Ecken senkrecht auf den Seiten. 10
Abstand zwischen konvexen Polygonen Fall 1: Ecke Ecke Voronoi Regionen: Jede Ecke liegt in der Voronoi Region der anderen Ecke 11
Abstand zwischen konvexen Polygonen Fall 2: Ecke Seite Voronoi Regionen: - Lotfußpunkt in der V. Region der Ecke - Ecke in der V. Region der Seite 12
Abstand zwischen konvexen Polygonen Fall 3: Seite - Seite Voronoi Regionen: Es gibt ein Paar von Lotfußpunkten, die in der Voronoi Region der jeweils anderen Seite liegen 13
Abstand zwischen konvexen Polygonen statische Vorberechnung: - Bestimmung des Falles in O(mn) dynamische Berechnung: - bei kurzen Zeitschritten: lineare Bestimmung des Falles 14
3. Hüllkörper (Bounding Volumes) AABB Kreis OBB k-dop 22.06.05 Kollisionserkennung 1
3.1 Warum Hüllkörper? Hüllkörper vereinfachen komplexe geometrische Körper Kollisionserkennung wird einfacher und schneller Komplexere Kollisionserkennung nur, wenn sich die Hüllkörper überschneiden. 22.06.05 Kollisionserkennung 2
3.2 AABB (Axis Aligned Bounding Box) Beim AABB Algorithmus werden um den geometischen Körper achsenparalelle Quader gelegt. Diese Quader sind nach den Achsen des Koordinatensystems ausgerichtet. Effizienz Speicher Aufwand Komplexität Rotation Sehr schlecht Geringer Speicherbedarf Sehr einfache Erzeugung Geringe Komplexität Nicht möglich 22.06.05 Kollisionserkennung 3
3.2 AABB (Axis Aligned Bounding Box) Beispiel für Kollisionserkennung im zweidimensionalen Raum Keine Kollision Kollision Im dreidimensionalen Raum funktioniert die Kollisionserkennung genauso, nur mit einer Ache mehr. Kollisionserkennung
3.3 Kugel Um den geometrischen Körper wird eine Kugel aufgespannt. Der Radius ist gleich der Entfernung vom Mittelpunkt zu dessen entferntesten Punkts. Dadurch kann der Körper in der Kugel beliebig gewendet, gedreht und bewegt werden. Effizienz Speicher Aufwand Komplexität Rotation Sehr schlecht Geringer Speicherbedarf Schwierig zu erstellen Geringere Komplexität Ohne Neuberechnung möglich Kollisionserkennung
3.4 OBB (Oriented Bounding Box) Der OBB Algorithmus funktioniert ähnlich wie der AABB. Jedoch werden die Quader nicht am nach den Achsen des Koordinatensystems ausgerichtet, sondern an dem geometrischen Körper. Dadurch bekommt man eine höhere Hülleffizienz als bei AABB. Effizienz Speicher Aufwand Komplexität Rotation Gute Hülleffizienz Höherer Speicherbedarf Rechenintensive Erzeugung Aufwendige Kollisionserkennung unproblematisch Kollisionserkennung
3.4 OBB (Oriented Bounding Box) Beispiel für Kollisionserkennung im zweidimensionalen Raum: Keine Kollision Keine Kollision Kollision, da keine trennende Achse gefunden Kollisionserkennung
3.5 k-dop (K-Discrete Oriented Polytop) Der wesentliche Unterschied zum OBB Algorithmus liegt darin, dass es mehrere Beschränkungsflächen gibt. Somit hat ein k-dop eine wesentlich höhere Hülleffizienz. Effizienz Speicher Aufwand Kompexität Rotation Sehr gut Größerer Speicherbedarf Einfache Erzeugung Geringeste Komplexität Mit Neuberechnung Kollisionserkennung
3.5 k-dop (K-Discrete Oriented Polytop) Anwendung des separierenden Achsentheorems. Die Intervalle werden in K/2 Richtungen auf Überlappung getestet. Überlappen sich alle Intervalle, so liegt eine Kollision vor. Kollisionserkennung
3.6 Hierarchie-Baum Warum Hierarchie Bäume? + Man führt die Kollisionserkennung mit einer sehr groben Hüllkörper durch. Sollte eine Kollision erkannt werden, so verwendet man zur Erkennung genauere Hüllkörper. - Es müssen für eine Kollisionserkennung bei Verdacht auf Kollision mehrere Berechnungen durchgeführt werden. Kollisionserkennung
3.6 Hierarchie-Baum Methoden zur Erstellung von Hierarchie Bäumen Top-Down Man erzeugt einen Hüllkörper für den gesamten geometrischen Körper. Nun teilt man diesen Körper in zwei Teile und erzeugt wieder einen Hüllkörper Dieses Verfahren wiederholt man bis man nur noch einen Hüllkörper um ein Polygon hat. Bottom-Up Man erzeugt einen Hüllkörper um ein Polygon. Nun fügt man zwei Hüllkörper zu einem neuen Hüllkörper zusammen. Dieses Verfahren wiederholt man bis man nur noch einen Hüllkörper um den kompletten geometrischen Körper hat. Kollisionserkennung
4. Raumunterteilung 4.1 uniforme Raumunterteilung 4.2 Quadtree / Octree 4.3 Ausblick: BSP Baum 4.4 Sweep-and-Prune 1
4.1 uniforme Raumunterteilung - gleichmässiges Gitter wird über Szene gelegt - jedes Objekt wird mindestens einer Zelle zugeordnet 2
3
4.1 uniforme Raumunterteilung Vorteile: - einfaches Verfahren Nachteile: - bei bewegten Objekten muss das Gitter ständig aktualisiert werden - bei verschieden großen Objekten ist es schwer die Gitterweite zu bestimmen 4
4.2 Quadtree / Octree Quadtree: - Baumstruktur - Wurzel repräsentiert die komplette Szene - rekursive Zerlegung in jeweils vier Quadranten (Knoten), bis gewünschte Auflösung erreicht 5
6
Quadtree Vorteile: - weniger zu speichernde Daten - Zellengröße leichter wählbar Nachteile: - bei dynamischen Objekten, ist Struktur aufwändig zu Aktualisieren Für dreidimensionale Szenen werden Octrees verwendet. 7
Octree 8
4.3 Ausblick: BSP-Bäume (Binary Space Partitioning) - Raum wird durch Flächen von Polygonen geteilt - gleichmäßige Anzahl der Objekte in entstehenden Teilräumen - wenig durch Teilebene geschnittene Objekte - Objekte werden jeweils den Teilräumen zugeordnet - geschnittene Objekte werden an Teilungsebenen geteilt, und Teile jeweils einem Teilraum zugeordnet 9
4.3 Ausblick: BSP-Bäume 10
4.4 Sweep-and-Prune - Projektion des achsenorientierten Hüllkörpers (AABB) auf die Koordinationachsen ergibt ein Intervall - Intervallüberscheidungen bestimmen - nur wenn zwei AABBs sich überlappen, können sich die dazugehörigen Objekte überlappen - auch für dynamische Objekte geeignet: überstrichener Raum wird von AABB eingehüllt 11
4.4 Sweep-and-Prune 12
5. Quellen http://www.esi-group.com/sitehicas/bmwtoc.gif http://www.openoutcast.de/ooc/album_pic.php?pic_id=24 http://www.lafferty.ca/photos/things/saab_9-3/crash.jpg http://symbolcraft.com/graphics/bsp/bsptreedemo_german.html http://scidok.sulb.uni-saarland.de/volltexte/2004/179/ http://msl.cs.uiuc.edu/planning/web.html http://www.informatik.unihalle.de/~loch/lehre/ss2004/vo/vr_11.pdf http://www-info2.informatik.uniwuerzburg.de/mitarbeiter/holger/lehre/osss02/schmidt/vortrag.pdf http://www12.informatik.unierlangen.de/edu/robertino/vortrag/jimenez02.pdf http://www12.informatik.unierlangen.de/edu/robertino/vortrag/lin94.pdf 13
Download http://www.atlinux.de/uni/vortrag_robertino.pdf 14