Eine Präsentation für das Proseminar

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Rekursive Grafiken Reklursive Grafiken.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Werkrealschule Informationen für Schülerinnen und Schüler.
Hier ist ein Bild. Wie finden Sie das Bild? Ist das Bild
Kapselung , toString , equals , Java API
Listen [mia, vincent, jules, yolanda] [mia, robber(honey_bunny), X, 2, mia] [] [mia, [vincent, jules], [butch, girlfriend(butch)]] [[], dead(zed), [2,
Kollisionen erkennen Kollisions- und Schnittpunkttests auf Dreieckbasis Kollisions- und Schnittpunkttests auf Viereckbasis Einsatz von achsenausgerichteten.
Ultris V10 Bewegen, Drehen und Kollisionserkennung.
Die Struktur der Materie im Überblick
Java: Grundlagen der Sprache
Einführung in die OOP in Java
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
1/11 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Grundlagen 3D-Engines Projektgruppe KIMAS Grundlagen 3D-Engines Alexander Weimer.
Anleitung für Lehrkräfte Fortbildung für Systembetreuer von Karlheinz Pfahler (2006)
wissenschaftliche Begleitforschung zu „Jedem Kind seine Stimme“
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Funktionsgleichung ablesen
Funktionsgraphen zeichnen
Berufsinformationswoche am KFG
© 2003 Pohlig - Taulien Tanz der Turtles (Java) 1 Tanz der Turtles.
Lesestrategien Vor dem Lesen 1 Erwartungen an den Text formulieren
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Eignungstest für eine Manager-Position
Kapitel 1 – Erste Schritte
-Auf der Suche nach dem Zettel Mein Abenteuer geht weiter. Ich im Haus bin Die Straße runter Die Straße runter.
Business Methoden für ein privates Projekt
Wärmedämmung, Einführung
Desperate Housewives Quelle: Emnid-Omnibusbefragung Dez 04, 384 Frauen im Alter von
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Angriffspunkt der Kraft (Wirkung)
581 ● 712 = ??.
7421 : 5 = ??.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Supermann Deutsch 1 Kapitel 5.
So eine Möglichkeit kenne ich nicht.
Wer …? Wie… ? Wo … ? Was … ? Wann …?.
Individuelle Förderung in der OGS im Primarbereich
Variablenkonzept Klassisch, in Java Basistyp
Einige Animationen werden automatisch gestartet
Ein PC-Game selber machen
Grundlagen - Computermodell
EPROG Tutorium #6 Philipp Effenberger
Präsentiert….
Erstmal herzlichen Glückwunsch, dass ihr es in diesem Jahr geschafft habt, Räume zu finden, die auch barrierefrei sind. Naja, im Publikum entdecke ich.
TDD mit MSTest Stefan Lieser
27 May Projektseminar Computergrafische Systeme Wintersemester 2007/2008 Luna Lander Stefan Reichel, Kevin Schlieper, Gerald Töpper betreut durch.
LFE Medieninformatik  Bertram, Schulz Projekt Gruppe C.
Parallelisierung für Multiprozessor-Maschinen
Unity 4.x Cookbook Softwaretechnologie II (Teil 2) - Maximilian Berndt.
Benutzerdefinierte Datentypen (1)
DSD I Trainingsstunde 4 LESEVERSTEHEN Teil 4.
Vom graphischen Differenzieren
Lernplan für den Die Coulombkraft und das Potenzial in der Umgebung
Diskrete Mathematik I Vorlesung 2 Arrays.
Leben mit Vision.
Berufsinformationswoche am KFG Anleitung für das Anmeldesystem.
Ich brauche_____ ihn euch Ich besuche ___________ Es uns
SHA-1 Collision Search Graz. Wo wurde das Projekt durchgeführt? An der Universität Graz Wann wurde das Projekt gestartet? Am Wann wurde das.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Implementieren von Klassen
 Präsentation transkript:

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

Ü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 Überblick 2 04.11.07 Florian Liegsalz

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 Collision Detection – Was ist das und wofür brauche ich es? 3 04.11.07 Florian Liegsalz

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 Collision Detection – Was ist das und wofür brauche ich es? 4 04.11.07 Florian Liegsalz

Ü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 Überblick 5 04.11.07 Florian Liegsalz

Was muss ich bei der Kollisionserkennung beachten? – Teil 1 Ein einfaches Modell Eigentlich ist Kollisionserkennung ganz einfach, oder: [c#] Kollisionsobjekt[] colObs = new Kollisionsobjekt[n]; 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? Was muss ich bei der Kollisionserkennung beachten? – Teil 1 6 04.11.07 Florian Liegsalz

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 <= 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? Was muss ich bei der Kollisionserkennung beachten? – Teil 2 7 04.11.07 Florian Liegsalz

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 Was muss ich bei der Kollisionserkennung beachten? – Zusammenfassung 8 04.11.07 Florian Liegsalz

Ü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 Überblick 9 04.11.07 Florian Liegsalz

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 Welche Methoden der Kollisionserkennung gibt es? – Teil 1 10 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – Teil 2 Die 3 Modelle Bei AABB wird das kleinste mögliche Rechteck um das Objekt anhand der Koordinatenachsen für Kollisionserkennung gelegt. Die OBB Methode arbeitet eigentlich AABB, nur benutzt man hier die Achsen des Objekts. Bei k-DOPs vergleicht man nicht nur ein Rechteck, sondern überprüft verschiedene Beschränkungsflächen. Welche Methoden der Kollisionserkennung gibt es? – Teil 2 11 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – Teil 3 Methodenvergleich Rotation Komplexität Aufwand Speicher Effizenz k-DOP OBB AABB Sehr Gut Gute Hülleffizienz Sehr Schlecht Größter Speicherbedarf Höherer Speicherbedarf Geringer Speicherbedarf Einfachste Erzeugung Rechenintensive Erzeugung Sehr einfache Erzeugung Geringste Komplexität Aufwendige Kollisionserkennung Geringe Komplexität Mit Neuberechnung unproblematisch Nicht möglich Welche Methoden der Kollisionserkennung gibt es? – Teil 3 12 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – Teil 4 Kollisionsverfeinerung Hat man nun eine Kollision zwischen 2 Objekten festgestellt, so verfeinert man den Rahmen, den man gezogen hat, bis zu einer frei gewählten Tiefe: Das ganze stellt im Endeffekt eine Baumstruktur dar: Dies ist ein Quadtree, da wir im 2D-Raum sind. Im 3-dimensionalen hätten wir einen Octree. Welche Methoden der Kollisionserkennung gibt es? – Teil 4 13 04.11.07 Florian Liegsalz

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“ Welche Methoden der Kollisionserkennung gibt es? – Teil 5 14 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – 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. Welche Methoden der Kollisionserkennung gibt es? – Speicherung 15 04.11.07 Florian Liegsalz

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. Wir legen quasi ein Raster über die gesamte Fläche und speichern dabei welches Objekt in welchen Rasterplätzen liegt. Der große Nachteil an dieser Speicherart ist, dass sobald die gespeicherten Objekte in Bewegung sind, man auch jeweils das gesamte Raster aktualisieren muss. Welche Methoden der Kollisionserkennung gibt es? – die uniforme Raumunterteilung 16 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – Quad- / Octree Der Quadtree funktioniert in diesem Fall ähnlich wie bei der Speicherung der Bounding Box. Der Unterschied ist, dass hier der Baum für den gesamten Raum aufgeteilt wird. Die Baumstruktur baut sich rekursiv auf und zwar so weit bis jedes Objekt ein Blatt im Baum darstellt. Problematisch ist diese Struktur nur bei sehr beweglichen Strukturen, da der Baum relativ schwierig zu aktualisieren ist. Welche Methoden der Kollisionserkennung gibt es? – Quad- / Octree 17 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – 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.informatik.uni-osnabrueck.de/~vcprakt/ifc/part1/html/bspapplet.html Welche Methoden der Kollisionserkennung gibt es? – BSP - Baum 18 04.11.07 Florian Liegsalz

Welche Methoden der Kollisionserkennung gibt es? – 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). Welche Methoden der Kollisionserkennung gibt es? – Sweep and Prune 19 04.11.07 Florian Liegsalz

Ü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 Überblick 20 04.11.07 Florian Liegsalz

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. Ausblick 21 04.11.07 Florian Liegsalz

Ende Ende 22 04.11.07 Florian Liegsalz