In the lecture “Physically Based Simulation”, we implemented a simulation for sun, planets, and asteroids. The main goal was to use many different objects, which are all influencing each other. Therefore, we needed to optimize some calculations and implement an accurate real-time collision detection.
The application is written in C++ and uses the framework OSG for rendering. Each simulation can be loaded within a JSON-file, which makes it easy to test out different start states for a simulation. For some simulations, we used a python script for calculating a stable status for a lot of objects.
This project has been awarded the 3rd place out of all other student projects (about 20).
More information about the lecture and the other winning projects (Hall of Fame – 2017): https://graphics.ethz.ch/teaching/simulation17/home.php
- Setting up the application with CMake: C/C++, OpenSceneGraph, CGAL, Eigen, Boost
- Set up the underlying framework code.
- Implementation of visual effects: stardust, bump-map, shadow, shaders.
- Broad-Phase: Sweep and Prune implementation
- Narrow-Phase: Gilbert-Johnson-Keerthi Algorithm for detecting a collision, Expanding-Polytope Algorithm for calculating the collision details
- Extremely basic game-play to fly with the Star Fighter through an asteroid-field.