collision detection

31
Collision Detection

Upload: piper

Post on 17-Feb-2016

45 views

Category:

Documents


1 download

DESCRIPTION

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) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Collision Detection

Collision Detection

Page 2: 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“

kollidieren1. Coarse Collision Detection (Grobe

Kollisionserkennung)2. Fine Collision Detection (Feine

Kollisionserkennung)

Page 3: Collision Detection

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

Page 4: Collision Detection

Bounding Volume

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

Box

Page 5: Collision Detection

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

Page 6: Collision Detection

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

Page 7: Collision Detection

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

Page 8: Collision Detection

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.

Page 9: Collision Detection

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.

Page 10: Collision Detection

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.

Page 11: Collision Detection

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

Page 12: Collision Detection

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.

Page 13: Collision Detection

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.

Page 14: Collision Detection

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.

Page 15: Collision Detection

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.

Page 16: Collision Detection

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

Page 17: Collision Detection

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

Page 18: Collision Detection

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

Page 19: Collision Detection

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

Page 20: Collision Detection

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

Page 21: Collision Detection

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

Page 22: Collision Detection

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

Page 23: Collision Detection

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

Page 24: Collision Detection

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

Page 25: Collision Detection

Contact Generation

Page 26: Collision Detection

• 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

Page 27: Collision Detection

Contact Data

Page 28: Collision Detection

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

Page 29: Collision Detection

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

Page 30: Collision Detection

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

Page 31: Collision Detection

Vielen Dank!