Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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.

Ähnliche Präsentationen


Präsentation zum Thema: "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."—  Präsentation transkript:

1 Collision Detection

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

3 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

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

5 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

6 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

7 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

8 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.

9 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.

10 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.

11 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

12 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.

13 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.

14 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.

15 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.

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 Contact Generation

26 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

27 Contact Data

28 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

29 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

30 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

31 Vielen Dank!


Herunterladen ppt "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."

Ähnliche Präsentationen


Google-Anzeigen