Project Description

Für die Vorlesung „Physically Based Simulation“ implementierten wir in einer Gruppe aus 3 Master Studenten eine Simulation für die Himmelskörper Sonne, Planeten und Asteroiden. Wir wollten so viele Objekte wie möglich gleichzeitig simulieren, wobei wir gegenseitigen Wechselwirkungen sowie Kollisionserkennungen berechnen mussten. Diese galt es gezielt zu optimieren.

Die Applikation ist in C/C++ geschrieben und verwendet das Framework OSG für das Rendern und managen der Modelle. Via JSON-Dateien können die verschiedenen Simulationen geladen werden. Je nach gewünschtem Ziel sind andere Startgeschwindigkeiten, Gewichtverhältnisse und Positionen nötig. Für einige Simulationen haben wir diese Datei mit einem Python-Script generieren lassen, um eine stabile Konstellation mit vielen Objekten sicherzustellen.

Mit diesem Projekt wurden wir mit dem 3. Platz ausgezeichnet.

Weitere Informationen über den Kurs und Gewinner-Projekte (Hall of Fame – 2017): https://graphics.ethz.ch/teaching/simulation17/home.php

Meine Aufgaben

  • Aufsetzten der Applikation mit CMAKE: C/C++, OpenSceneGraph, CGAL, Eigen, Boost
  • Generieren des Basis-Codes für die Applikation
  • Visuelle Effekte: Partikel-Effekte, Bumpmap-Texturen, Shaders, Lichtquellen
  • Kollisionserkennung:
    • Broad-Phase: „Sweep and Prune“-Algorithmus
    • Narrow-Phase: „Gilbert-Johnson-Keerthi“-Algorithmus für die Kollisionserkennung, „Expanding-Polytope“-Algorithmus um weitere Informationen über die vorhandene Kollision zu berechnen
  • Einfaches Gameplay, um mit einem Star Fighter durch ein Asteroiden Feld zu fliegen.