This is the project repository of Group 20 of the ETH lecture: Physically-Based Simulation in Computer Graphics.
To build the project you need the .NET 6 SDK. Then you should be able to build it using dotnet build
or directly run it using dotnet run
.
If that doesn't work you can find pre-built binaries in the Final Release.
ESC
: Exit simulationA
/←
: Trigger left flipperD
/→
: Trigger right flipperSPACE
: Spin both flippersM
: Spawn balls in the top middleMouse Left
: (Re-)spawn ball 1 at mouse positionMouse Right
: (Re-)spawn ball 2 at mouse positionMouse Middle
: Spawn more balls at mouse position
This is a rigid body simulation, recreating a Pinball game based on the above video built with MonoGame. As MonoGame itself doesn't have any physics engine, all the interactions between rigid objects had to be implemented from nothing. We had the following goals in mind:
- Minimum Target:
- A simple setup with enclosing walls
- Only one ball
- No obstacles
- Non-controllable flippers that spin on its own
- Desired Target:
- User-controllable flippers
- Some simple rigid obstacles
- Multiple balls
- Bonus Target:
- Soft-body simulated ball
- More complex obstacles (bumpers, rotating obstacles)
- Simple scoring system
We sadly did not have enough time to try soft-body simulation on our balls.