Ziel dieses Kapitels ist es eine exakte Mesh-basierte Kollisionserkennung zu implementieren und Ihre Engine zu finalisieren.
GJK Algorithmus
Wikipedia - Gilbert–Johnson–Keerthi distance algorithm
Video: Casey Muratori - Implementing GJK - 2006
Video: Casey Muratori - Papers I have loved - 2016
Aufgaben
10.1: Erzeugen Sie sich ein Projekt basierend auf Kapitel 9. Sie können ebenfalls alle Ihre eigenen Anpassungen der vorherigen Kapitel mit übernehmen. Sie entscheiden nun selbst welche Funktionen Ihre Engine haben soll. Im Ordner von Kapitel 10 auf Github finden Sie Szenen und Modelle die Ihnen bei der folgenden Aufgabe helfen können.
10.2: Implementieren Sie den GJK Algorithmus in der Collider Klasse um eine exakte Mesh-basierte Kollisionserkennung konvexer Modelle zu realisieren.
- Die TODO Anweisungen in der Collider Klasse können Ihnen helfen.
- Das Laden der .obj Datei gibt es an anderer Stelle schon. Auch das Caching der Ressourcen. Kopieren Sie was Sie brauchen.
- Ein guter Einstieg ist es damit zu beginnen den Radius aus der Punktmenge zu bestimmen. Dann sollte schonmal alles so weiter funktionieren wie bisher ohne dass Sie an diversen Stellen Anpassungen vornehmen müssen.
- Beim Entwickeln Ihrer Hilfsmethode zur Bestimmung des nächsten Vertex können Sie zu Anfang auch auf die Kugel zurückgreifen. Die Implementierung ist trivial und Sie sollten sehen ob es funktioniert.
10.3: Überlegen Sie sich wie Sie den GJK Algorithmus anschaulich erklären können.