PSE Game Physics - Summer 12: Difference between revisions

From Sccswiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Lecture
{{Lecture
| term = SS 11
| term = SS 12
| lecturer = [[Univ.-Prof. Dr. Hans-Joachim Bungartz]], <br>[[Martin Schreiber]],<br>[[Kristof Unterweger]]
| lecturer = [[Univ.-Prof. Dr. Hans-Joachim Bungartz]], <br>[[Martin Schreiber]],<br>[[Kristof Unterweger]]
| timeplace = t.b.a. <!--Friday, 1 pm, 02.07.023-->
| timeplace = Every Monday at 4 pm, 02.07.023, first meeting: 16.04.2012
| credits = 6 SWS (6P) / 10 Credits
| credits = 6 SWS (6P) / 10 Credits
| audience = Studenten der Informatik (Bachelor)
| audience = Studenten der Informatik (Bachelor)
| exam = -
| exam = -
| tutorials = -
| tutorials = -
| tumonline = https://campus.tum.de/tumonline/lv.detail?clvnr=950041743
}}
}}


Course is held in German, the slides are in English.
Course is held in German, the slides are in English.


= Timeline =
= Timetable =
* '''preliminary session: t.b.a.<!-- 10.02.2011, 10:00, room: 02.07.023 -->'''
 
= Contents =
A simple game physics engine is developed in this lab.
Starting with simple time steps for moving rigid body objects you will successively extend your developments by collision detection, rotations, friction, etc. to obtain a game physics engine.
 
Topics covered in this lab:
* Introduction to game engines (Visualization, physics, scripting, ...)
* Game-Physics (Force, momentum, torque, ...)
* Game-Math (Numerical approximations, accuracy, time-steps, ...)
* Modelling of springs, Ropes
* Collision detection
* Resolving of interpenetrations
* Friction
* ...
 
= Prerequisites =
* Preliminary knowledge in C++ is advantageous, but it's no prerequisite. However, you should have experiences in object-oriented programming - e.g. Java programming.
* No prior knowledge about visualization is necessary: A framework for visualization, interactivity and the interface for the physics is given. Thus you'll only have to implement the physics part.
* Also no prior knowledge about physics is necessary. We'll give a short introduction to physics.
 


= Timetable =
The class takes place every Monday at 4 pm in room 02.07.023.
<!--
The class takes place every Friday at 1 pm in room 02.07.023.
This timetable is only preliminary!
This timetable is only preliminary!
<font color="red">NEXT SESSION WILL TAKE PLACE ON THURSDAY, JUNE 9, at 16:00! </font>


{|class=wikitable
{|class=wikitable
Line 44: Line 21:
! '''Number''' !! '''Topic''' !! '''Worksheet''' !! '''Presentation Slides''' !! '''Date'''
! '''Number''' !! '''Topic''' !! '''Worksheet''' !! '''Presentation Slides''' !! '''Date'''
|-
|-
| 1 || Warmup: Explicit Euler, Physics I, Falling Sphere || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet1.pdf Worksheet 1]  || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/1_introduction.pdf Presentation]  || 6.5.
| 1 || Warmup: Explicit Euler, Physics I, Falling Sphere || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet1.pdf Worksheet 1]  || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/1_introduction.pdf Presentation]  || 16.4.
|-
| 2 || Convergence, Stability, Analytical solutions, Collisions I, Resolving interpenetrations ||[http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet2.pdf Worksheet 2]||[http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/2_collisions_and_interpenetrations.pdf Presentation] (slides updated, 2012-04-30) || 23.4.
|-
| 3 || Springs/Ropes, Linear momentum, Quaternions || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet3.pdf Worksheet 3] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/3_springs_ropes_and_linear_momentum_and_quaternions_updated_2012_05_02.pdf Presentation] (slides updated, 2012-05-02) || 30.4.
|-
|-
| 2 || Convergence, Stability, Analytical solutions, Collisions I, Resolving interpenetrations ||[http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet2.pdf Worksheet 2]||[http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/2_collisions_and_interpenetrations_updated.pdf Presentation] (Update: collision points)|| 13.5.
| 4 || Collisions: Sphere-box, plane-box || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet4.pdf Worksheet 4] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/4_collision_sphere_box_plane_box.pdf Presentation] || 7.5.
|-
|-
| 3 || Springs/Ropes, Linear momentum, Quaternions || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet3.pdf Worksheet 3] (updated, 26. May) || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/3_springs_ropes_and_linear_momentum_and_quaternions.pdf Presentation] || 20.5.
| 5 || Collisions: Box-box, separating axes || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet5.pdf Worksheet 5] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/5_collision_box_box.pdf Presentation] || 14.5.
|-
|-
| 4 || Collisions: Sphere-box, plane-box || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet4.pdf Worksheet 4] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/4_collision_sphere_box_plane_box.pdf Presentation] || 27.5.
| 6 || Angular momentum, micro-collisions, damping || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet6.pdf Worksheet 6] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/6_angular_momentum_and_microcollisions_and_damping.pdf Presentation] || 21.5.
|-
| 7 || Friction || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/worksheet7.pdf Worksheet 7] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/7_friction_updated_2012_07_16.pdf Presentation] (slides updated, 2012-07-16) || 4.6.
|-
| - || - || ||  || 11.6.
|-
| - || Question session / Project proposal || || || 18.6.
|-
| 8 || Project || || || 25.6.
|-
| 9 || Project || || || 2.7.
|-
| - || - || || || 9.7.
|-
| 10 || Project Presentation || || || 16.7.
|}
 
* '''preliminary session: 07.02.2012, 13:00, room: 02.07.023'''
 
= Workinggroups =
 
 
{|class=wikitable
|-
|-
| 5 || Collisions: Box-box, separating axes || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet5.pdf Worksheet 5] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/5_collision_box_box.pdf Presentation] (updated, 21. Juni: Intersection points, 11. Aug.: Vertex-Face Collision Point) || 27.5.
! '''Nr''' !! '''Members (Final Project)''' !! '''Project title'''
|-
|-
| 6 || Angular momentum, micro-collisions, damping || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet6.pdf Worksheet 6] || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/6_angular_momentum_and_microcollisions_and_damping.pdf Presentation] (updated, 21. Juni: `t`) || 9.6., 16:00
| 1 || Jonathan Aldag (Complex geometries, polygons), Thomas Hörmann (Stacking, microcollisions, damping) || Advanced geometry & physics
|-
|-
| 7 || Friction || [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/worksheet7.pdf Worksheet 7]|| [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/7_friction.pdf Presentation] (updated, 14. Juli: planar velocity) || 17.6.
| 2 || Maximilian Jakasovic (OpenGL), Johannes Mikulasch (Blender export incl. textures & physics properties) || Modeling and visualization
|-
|-
| - || - || ||  || 24.6.
| 3 || Markus Blöchl (Constraints), Nathan Chachkul (Ragdoll-Modellierung), Alexander Schade (t.b.a.) || Advanced constraints / ragdoll physics
|-
|-
| - || Question session / Project proposal || || || 1.7.
| 4 || Ilja Bacherikov (oct-trees), Volker Jacht (BSPs) || Bounding volume hierarchies for highly massive big-bada-bumm collision detection
|-
|-
| 8 || Project || || || 8.7.
| 5 || Matthias Fischer (t.b.a.), Markus Reiter (t.b.a.), Andreas Wagner (t.b.a.) || Build arcade racing-game
|-
|-
| 9 || Project || || || 15.7.
| 6 || Michael Opitz (Network code), Andreas Ruhland (gravity gun, client extrapolation), Kevin Sawischa (game engine, player movements) || Gamedevelopment
|-
|-
| - || - || || || 22.7.
| 7 || Quirin Fischer (Parallelization) || Parallelization
|-
|-
| 10 || Project Presentation || || || 29.7.
| 8 || Christian Schmidt (Billiard game) || Billiard game with a simple AI
|}
|}
-->
 
 
= Possible final projects =
 
This topics are only suggestions. You are free to come up with another topic.
 
* Stacking problems (using damping) [not available anymore]
* Setup a game involving a Wii balance board.
* Handling polygonal datasets (convex + concave polygons) [not available anymore]
* Improved OpenGL visualization (e. g. particle-physics + visualization)  [not available anymore]
* Parallelization (OpenMP / TBB).
* Bounding volume hierarchies for highly massive big-bada-bumm collision detection  [not available anymore]
* Scenario importer from Blender (including parameters, basic rigid-objects, etc.) to set-up whole scene  [not available anymore]
* Build arcade racing-game  [not available anymore]
 
The final project has to be presented at the TUM demo-day (at the end of this semester).
 
 
= Contents =
A simple game physics engine is developed in this lab.
Starting with simple time steps for moving rigid body objects you will successively extend your developments by collision detection, rotations, friction, etc. to obtain a game physics engine.
 
Topics covered in this lab:
* Introduction to game engines (Visualization, physics, scripting, ...)
* Game-Physics (Force, momentum, torque, ...)
* Game-Math (Numerical approximations, accuracy, time-steps, ...)
* Modeling of springs, Ropes
* Collision detection
* Resolving of inter-penetrations
* Friction
* ...
 
= Prerequisites =
* Preliminary knowledge in C++ is advantageous, but it's no prerequisite. However, you should have experiences in object-oriented programming - e.g. Java programming.
* No prior knowledge about visualization is necessary: A framework for visualization, interactivity and the interface for the physics is given. Thus you'll only have to implement the physics part.
* Also no prior knowledge about physics is necessary. We'll give a short introduction to physics.
 


= <font color="red">Frequently Asked Questions (FAQs)</font> =
= <font color="red">Frequently Asked Questions (FAQs)</font> =
Line 78: Line 117:


= Material =
= Material =
t.b.a.
<!--
The engine skeleton is available for download:
The engine skeleton is available for download:
* [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/sbndengine_lab_2011_05_08.tar.bz2 SBNDEngine_2011_05_08]
* [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/sbndengine_2012_04_16.tar.bz2 SBNDEngine_2012_04_16]
* [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/sbndengine_lab_2011_05_06.tar.bz2 SBNDEngine_2011_05_06]


When compiling SBNDEngine, don't forget to install freeglut3-dev
When compiling SBNDEngine, don't forget to install freeglut3-dev
-->


* Explicit Euler in OpenCalc spreadsheet: [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss11/explicit_euler_free_fall.ods Spreadsheet: explicit Euler]
 
* Explicit Euler in OpenCalc spreadsheet: [http://www5.in.tum.de/lehre/praktika/gamephysicsengine/ss12/explicit_euler_free_fall.ods Spreadsheet: explicit Euler]




Line 156: Line 192:


= Registration =
= Registration =
<!--
tum online: [https://campus.tum.de/tumonline/lv.detail?clvnr=950041743]
tum online: [https://campus.tum.de/tumonline/lv.detail?clvnr=950011019]
-->

Latest revision as of 15:20, 16 July 2012

Term
SS 12
Lecturer
Univ.-Prof. Dr. Hans-Joachim Bungartz,
Martin Schreiber,
Kristof Unterweger
Time and Place
Every Monday at 4 pm, 02.07.023, first meeting: 16.04.2012
Audience
Studenten der Informatik (Bachelor)
Tutorials
-
Exam
-
Semesterwochenstunden / ECTS Credits
6 SWS (6P) / 10 Credits
TUMonline
https://campus.tum.de/tumonline/lv.detail?clvnr=950041743



Course is held in German, the slides are in English.

Timetable

The class takes place every Monday at 4 pm in room 02.07.023. This timetable is only preliminary!

Number Topic Worksheet Presentation Slides Date
1 Warmup: Explicit Euler, Physics I, Falling Sphere Worksheet 1 Presentation 16.4.
2 Convergence, Stability, Analytical solutions, Collisions I, Resolving interpenetrations Worksheet 2 Presentation (slides updated, 2012-04-30) 23.4.
3 Springs/Ropes, Linear momentum, Quaternions Worksheet 3 Presentation (slides updated, 2012-05-02) 30.4.
4 Collisions: Sphere-box, plane-box Worksheet 4 Presentation 7.5.
5 Collisions: Box-box, separating axes Worksheet 5 Presentation 14.5.
6 Angular momentum, micro-collisions, damping Worksheet 6 Presentation 21.5.
7 Friction Worksheet 7 Presentation (slides updated, 2012-07-16) 4.6.
- - 11.6.
- Question session / Project proposal 18.6.
8 Project 25.6.
9 Project 2.7.
- - 9.7.
10 Project Presentation 16.7.
  • preliminary session: 07.02.2012, 13:00, room: 02.07.023

Workinggroups

Nr Members (Final Project) Project title
1 Jonathan Aldag (Complex geometries, polygons), Thomas Hörmann (Stacking, microcollisions, damping) Advanced geometry & physics
2 Maximilian Jakasovic (OpenGL), Johannes Mikulasch (Blender export incl. textures & physics properties) Modeling and visualization
3 Markus Blöchl (Constraints), Nathan Chachkul (Ragdoll-Modellierung), Alexander Schade (t.b.a.) Advanced constraints / ragdoll physics
4 Ilja Bacherikov (oct-trees), Volker Jacht (BSPs) Bounding volume hierarchies for highly massive big-bada-bumm collision detection
5 Matthias Fischer (t.b.a.), Markus Reiter (t.b.a.), Andreas Wagner (t.b.a.) Build arcade racing-game
6 Michael Opitz (Network code), Andreas Ruhland (gravity gun, client extrapolation), Kevin Sawischa (game engine, player movements) Gamedevelopment
7 Quirin Fischer (Parallelization) Parallelization
8 Christian Schmidt (Billiard game) Billiard game with a simple AI


Possible final projects

This topics are only suggestions. You are free to come up with another topic.

  • Stacking problems (using damping) [not available anymore]
  • Setup a game involving a Wii balance board.
  • Handling polygonal datasets (convex + concave polygons) [not available anymore]
  • Improved OpenGL visualization (e. g. particle-physics + visualization) [not available anymore]
  • Parallelization (OpenMP / TBB).
  • Bounding volume hierarchies for highly massive big-bada-bumm collision detection [not available anymore]
  • Scenario importer from Blender (including parameters, basic rigid-objects, etc.) to set-up whole scene [not available anymore]
  • Build arcade racing-game [not available anymore]

The final project has to be presented at the TUM demo-day (at the end of this semester).


Contents

A simple game physics engine is developed in this lab. Starting with simple time steps for moving rigid body objects you will successively extend your developments by collision detection, rotations, friction, etc. to obtain a game physics engine.

Topics covered in this lab:

  • Introduction to game engines (Visualization, physics, scripting, ...)
  • Game-Physics (Force, momentum, torque, ...)
  • Game-Math (Numerical approximations, accuracy, time-steps, ...)
  • Modeling of springs, Ropes
  • Collision detection
  • Resolving of inter-penetrations
  • Friction
  • ...

Prerequisites

  • Preliminary knowledge in C++ is advantageous, but it's no prerequisite. However, you should have experiences in object-oriented programming - e.g. Java programming.
  • No prior knowledge about visualization is necessary: A framework for visualization, interactivity and the interface for the physics is given. Thus you'll only have to implement the physics part.
  • Also no prior knowledge about physics is necessary. We'll give a short introduction to physics.


Frequently Asked Questions (FAQs)

If you have a question, first take a look at our FAQ Website: PSE Game Physics - Summer 12 - FAQs


Material

The engine skeleton is available for download:

When compiling SBNDEngine, don't forget to install freeglut3-dev



Recommended Literature

  • Game Physics Engine Development, Ian Millington
  • Real-Time Collision Detection, Christer Ericson
  • Game Physics, David E. Eberly


SBND Engine

The following keysettings are preset by our engine. The keys which are for debugging should be the most important for you to hunt bugs ;-)

  • Default mode:
Key Function
[a] Go left
[s] Go back
[w] Go forward
[d] Go right
[g/G] activate/deactivate gravity
[space] Switch between '1st person mode' and 'free mouse mode'
[1]-[0], [F1]-[F12] Switch to other scene and reset
[r] Total reset
[e] Reset objects only
  • Debug mode:

You can use this mode to get some information about objects. An output is created for object which is currently under the mouse cursor.

Key Function
[backspace] Activate/Deactivate Debug mode
[mouse wheel up],[+] Go one timestep forward + record current state
[mouse wheel down],[-] Go one timestep back (restore recorded state)


Preview

  • Hanging Bridge simulated with ropes:

screenshot_bridge.png

  • Falling objects (Cubes, Spheres):

screenshot_falling_objects.png

  • Many balls:

screenshot_balls.png

Registration

tum online: [1]