Collision Detection.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Algorithmen und Datenstrukturen
Der R-Baum Richard Göbel.
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Kohonennetze für Information Retrieval mit User Feedback
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Eine dynamische Menge, die diese Operationen unterstützt,
Computer graphics & visualization Procedural Terrain Generation Hager Simon Proseminar Gamedesign.
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Kapitel 6: Klassifizierung von Sortiertechniken
Wasserfall-Ansätze zur Bildsegmentierung
Kollisionen erkennen Kollisions- und Schnittpunkttests auf Dreieckbasis Kollisions- und Schnittpunkttests auf Viereckbasis Einsatz von achsenausgerichteten.
Kombinatorische Topologie in der 3d Geomodellierung
Genetische Algorithmen
Genetische Algorithmen
Informierte Suche.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Der R-Baum Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Genetische Algorithmen
Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering.
R-tree, R*-tree und R+-tree
Verteilte Algorithmen
Wahrnehmung der räumlichen Tiefe von Objekten
Algorithmen zur Unterstützung von Immersive Gaming
Minimum Spanning Tree: MST
So animieren Sie Kreisdiagramme mit der Eingangs-Animation „Rad“
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Modellierung von Baumstrukturen mit einem einzigen Polygonnetz
BSP Binary Space Partitioning
Seminarvortrag über die Orientierbarkeit von Flächen
FHP - Fachbereich Bauingenieurwesen
Eignung von Grammatik-basiertem Layout für grafische Programmiersprachen Seminar Layout-Algorithmen für Graphen Institut für Informatik Christian-Albrechts.
How to make a PIXAR movie
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Badminton.
Effiziente Algorithmen
Tormann Lorenz Maierhofer Die Test-Umgebung Tor: 5x Roboter-Durchmesser Ball: Wird jeweils in Richtung einer zufälligen Position im Tor geschossen.
Temperaturmessung.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Wie fit zu bleiben.
… oder wie finde ich den Weg
Erstellen eines Impossibles:
PART V CONTACT PHYSICS Chapter Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof.
Integration oberflächenbestimmender Objekte ins DGM Seminar GIS IV SS
Alexander ZapletalObject Space 1 /15 Object Space von Alexander Zapletal.
15. Das elektrische Feld Ein Feld ist ein Raum, in dem jedem Punkt ein bestimmter Wert einer physikalischen Größe zugeordnet wird.
Artificial Intelligience
Geometric Representation
Algorithmen und Datenstrukturen 1 SS 2002
Datenaustausch und Interoperabilität
Using Reflexive Behaviors of the Medicinal Leech to Study Information Processing William B. Kristan Jr., Sawn R. Lockery und John E. Lewis.
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
INHALT Über Syngenta Was bedeutet Nachhaltigkeit? Ressourcenknappheit Biodiversität Klimawandel Ernährungssicherheit Fazit.
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
CL Tree MW 31.1 Business Intelligence Wintersemester 2015 / 2016 Stanislav Prokupetz.
Bubblesort. Inhaltsverzeichnis Allgemeines Aufbau Prinzip Beispiel.
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Auf der Insel Tortuga ist ein alter Schatz vergraben
 Präsentation transkript:

Collision Detection

Collision Detection Jedes Objekt im Spiel kann mit einem anderen kollidieren  viel zu tun 100 Objekte  100.000 Checks  Nur die Objekte checken, die „wahrscheinlich“ kollidieren 1. Coarse Collision Detection (Grobe Kollisionserkennung) 2. Fine Collision Detection (Feine Kollisionserkennung)

Coarse Collision Detection (Grobe Kollisionserkennung) Eine Liste mit notwendigen Checks erstellen So groß wie nötig, so klein wie möglich 2 Herangehensweisen: Bounding Volumes und Spatial Data Structures

Bounding Volume Ein Gebiet im Raum, der ein Objekt enthält der Einfachheit halber meistens Sphäre oder Box

Bounding Volume Hierarchies (BVH) Wenn sich die Bounding Volumes von zwei Objekten berühren oder überlappen, wird eine „Fine Collision Detection“ durchgeführt Vorteil: Drastische Erhöhung der Geschwindigkeit Nachteil: Es müssen immer noch alle Objekte gecheckt werden  Lösung: Bounding Volume Hierarches

Bounding Volume Hierarchies Eine Bounding Volume Hierarchy enthält alle Bounding Volumes ihrer Objekte in einer Baumstruktur Jedes Objekt hat seine eigene Bounding Volume ganz unten im Baum Die Bounding Volumes der einzelnen Objekte sind mit Parent Nodes iverbnuden, von welchen jeder seine eigene Bounding Volume besitzt

Bounding Volume Hierarchies Wenn die Bounding Volumes von zwei Knoten im Baum sich nicht berühren, dann können keine Objekte, die von diesen beiden Knoten abstammen, sich berühren Durch negatives Testen von zwei Bounding Volumes, die hoch in der Hierarchie stehen, können, ersparen wir uns das Checken all der Objekte, die von den beiden Knoten abstammen. Ein Algorithmus generiert eine Liste aller Objekte, die sich berühren könnten

Bottom-up Für einzelne Paare wird ein Parent Node erstellt, welcher die das Objektpaar in der Liste ersetzt. Das geht so weiter, bis die Liste nur noch aus einem Knoten besteht.

Top-down Die Objekte in der Liste werden immer wieder in zwei Gruppen aufgeteilt, bis jede Gruppe und Untergruppe nur noch zwei Objekte enthält.

Insertion Die einzig sinnvolle Methode, da sie die Hierarchie anpassen kann, ohne sie neu bauen zu müssen! Bei jedem Knoten wird das Child selektiert, das am besten zum zuzufügenden Objekt passt. Ein Ast kann durch einen Parent Node ersetzt werden, der zwei Objekte enthält.

Die 3 Methoden Jede der 3 Methoden hat viele Variationen. Die Bottom-up-Methode sucht nah aneinanderliegende Objekte, um sie zu gruppieren Die Top-down-Methode versucht Gruppen aufzuteilen Die Insertion-Methode muss das Child im Baum wählen, welches am Besten für ein Objekt geeignet ist Optimale Ergebnisse erfordern viel Fine-Tuning und Experimentieren

Sub-Object Hierarchies Manche Objekte haben seltsame, unregelmäßige Formen. Es ist schwierig, gut passende Bounding Volumes für diese Objekte zu schaffen. Deswegen ist es möglich, multiple Bounding Volumes für ein Objekt zu nutzen, die in einer Hierarchie arrangiert werden. Dadurch können wir weiterhin simple Checks für simple Bounding Volumes bei einem komplizierten Objekt durchführen.

Spatial Data Structures Eine Bounding Volume Hierarchie fasst Objekte zusammen, abhängig von ihrer relativen Position und Größe Wenn sich ein Objekt bewegt, verändert sich auch die Hierarchie. Eine Spatial Data Structure ist gebunden an die Welt, sie verändert ihre Struktur nicht. Das Konstruieren einer solchen Struktur ist somit wesentlich einfacher.

Spatial Data Structures Oftmals wird eine Kombination von beiden Techniken benutzt. Auch wenn keine Bounding Volume Hierarchies benutzt wird, werden trotzdem gerne Bounding Volumes um jedes Objekt benutzt.

Binary Space Partition Tree (BSP) Ein Binary Space Partition Tree verhält sich so ähnlich wie eine Bounding Volume Hierarchy. Anstatt Boundung Volumes benutzt jeder Knoten im BSP eine Fläche (Plane), welche alle Gebiete im Raum in zwei aufteilt. Jede Plane hat zwei Kindknoten, einer für jede Seite der Plane.

Binary Space Partition Tree Objekte auf der einen Seite werden zum einen Kindknoten hinzugefügt, Objekte auf der anderen zum anderen Kindknoten. Objekte, die die Fläche kreuzen, werden zu beiden Kindknoten hinzugefügt

Binary Space Partition Tree Die einzigen Kollsionen, die auftreten können, sind die zwischen Objekten am gleichen Zweig im Baum. Wenn dieser Zweig mehr als ein Objekt enthält, werden alle Paarkombinationen zum Fine Collision Detector gesendet

Oct-Trees & Quad-Trees Ähnlich wie Binary Space Partiotioning und Bounding Volume Hierarchies Quad-Trees werden für 2-dimensionale Umgebungen (oder 3-dimensionale, bei denen die meisten Objekte auf dem Boden agieren) benutzt, Oct-Trees für 3-dimensionale Umgebungen

Oct-Trees & Quad-Trees Ein Quad-Tree besteht aus mehreren Knoten, jeder mit 4 Descendents Ein Knoten teilt den Raum in 4 Areale auf, die sich an einem Punkt kreuzen Ansonsten ähnlich der BSP/BVH

Grids Ein Grid ist ein Array von Räumen, in denen sich verschiedene Objekte befinden können. Diesmal keine Baumdatenstruktur, die Position kann direkt bestimmt werden

Grids Wenn jede Zelle alle Objekte enthält, die die jeweilige Zelle streifen, kann die Liste der möglichen Kollisionen sehr einfach erstellt werden: 2 Objekte können nur dann kollidieren, wenn sie die gleiche Zelle im Grid streifen Es werden alle Zellen beachtet, welche mehr als 1 Objekt enthalten

Grids Für ein Objekt, das so groß wie eine Zelle ist, müssen maximal 4 von möglichen 8 Zellen gecheckt werden. Ein Objekt, das 4-mal so großt wie eine Zelle ist, müssen 16 von möglichen 24 Zellen gecheckt werden, usw. Für sehr große Objekte eine Unmenge an Aufwand! Lösung: Multi-Resolution Map

Multi-Resolution Maps Eine Multi-Resolution Map ist eine Gruppe aus Grids mit zunehmenden Zellgrößen Objekte werden nur zu einem der Grids hinzugefügt, je nachdem wie groß das Objekt ist Jedes Grid hat eine Zellgröße die 4-mal so groß ist als die des vorherigen Grids

Multi-Resolution Maps Der Algorithmus kreiert für jedes Grid eine mögliche Kollision zwischen jeden Objekten in der gleichen oder in benachbarten Zellen (maximal 3) Zusätzlich wird das Objekt mit allen Objekten in allen Zellen in den Grids mit den größeren Zellen gecheckt

Contact Generation

Berührungen nach Prioritäten Wenn wir Kontakte generieren können, die in dieser Liste höher sind, können wir die Kontakte weiter unten ignorieren Am wichtigsten sind Point-Face und Edge-Edge-Kontakte

Contact Data

Primitive Collision Algorithms Ein Algorithmus sucht nach Kontakten und generiert Structures mit Kontaktdaten Algorithmen können garkeinen, einen oder mehrere Kontakte zurückgeben, die z. B. als Array ausgegeben werden können

Kontaktbedingungen Sphäre-Sphäre: Die Entfernung ihrer Mittelpunkte ist kleiner als die Summe ihrer Radien Sphäre-Fläche: Die Entfernung vom Mittelpunkt der Sphäre zur Fläche ist kleiner als der Sphärenradius Box-Fläche: (kann mehr als ein Kontakt haben): Einer oder mehrere Vertices der Box liegen hinter der Fläche

Fazit Wir haben nur an der Oberfläche der Thematik gekratzt Die Physik-Engine eines professionellen Spiels ist wesentlich komplexer Collision Detection und Contact Generation nehmen viel Zeit in Anspruch Viel Optimierungsarbeit und Experimentieren notwendig, bis optimale Ergebnisse erzielt werden

Vielen Dank!