2D Car Physics tutorial
(last update 30.November 2007 18:53)
Simple, easy to understand, but very good looking simulation.
I really recommend this article if you want to do a 2D vehicle game.
2D CarDemo
(last update 12.December 2007 22:57)
Demo project of 2D car physics with source code (C++). Works pretty well.
2D Polygon Collision Detection
(last update 31.December 2007 10:15)
An article at the CodeProject.
Commented code included.
A Fast and Robust GJK Implementation for Collision Detection of Convex Objects
(last update 2.December 2007 14:56)
Haven't read this one.
A little example
(last update 27.November 2007 13:25)
You can find RK4 example in this article.
A Simple Time-Corrected Verlet Integration Method
(last update 3.December 2007 10:25)
"Position" Verlet integrator modified so it is more accurate when you use non-constant acceleration (and you usually do) and/or non-constant time-step.
Accumulated impulses
(last update 21.December 2007 10:37)
An iterative solver using impulses. Fast and gives very good (=good looking) results.
Described and implemented by Erin Catto in Box2D.
This implementation I uploaded here is a bit older, but it is much simpler then current Box2D version and easier to understand.
Be sure to read Catto's presentation included!
Advanced Character Physics
(last update 2.December 2007 15:9)
Very good article about soft body physics implemented in Hitman. This method is very easy (from my expiriences) to understand and implement and the result is good (it is probably not accurate as other methods, but it looks good).
Simulates objects as mass-points connected together.
Uses Verlet integrator.
Solves collisions using relaxation.
Advanced Character Physics
(last update 3.December 2007 10:23)
Good explanation of Verlet integration ("position" version).
AGEIA PhysX
(last update 25.November 2007 10:10)
One of the most popular engines you can use. It was used by many successful commercial games. Has really nice features like multi-thread support. It is also specially optimized for XBox360 and PS3 so you can port your games with ease.
It is free for non-commercial and commercial use.
Another physics resources
(last update 27.November 2007 13:8)
Just found this after I completed this project :/
Another SpringSim
(last update 26.November 2007 20:38)
Just another cloth simulator. Didn't study it yet.
APE
(last update 26.November 2007 20:57)
APE is a complete open source engine written in ActionScript.
It's a good example of how Verlet integrator can be used without many problems and accurancy lost - you usually don't need accurancy when creating games.
AS MotorPhysics
(last update 25.November 2007 22:48)
An action script engine based on Box2D. It is not released yet, but may be worth keeping an eye on it if you are ActionScript specialist as it seems it will be optimized for AS.
AS2 Flade
(last update 25.November 2007 23:6)
Dead project, continued by APE.
AS3 APE
(last update 25.November 2007 23:10)
APE is a follow-up of the Flade engine. It still uses Verlet integrator, so be prepared for well working springs and mass-spring objects (softbody).
It looks REALLY usable and If I programmed for Flash, I would definitely give it a try.
There are also C++ and Java ports.
AS3 Box2D Flash
(last update 25.November 2007 22:55)
Direct port of the Box2D engine to AS3.
Beosil
(last update 26.November 2007 21:33)
is a site of Bruno Heidelberger. There you can find interesting papers concerning soft-body simulations. However, they might not be very useful for practical use. But, maybe I just didn't get deep enough into their ideas.
Bullet forums
(last update 24.November 2007 23:25)
Forums related to the Bullet Physics engine, but it gathers a lot of expirienced guys together.
C(C99) Chipmunk
(last update 25.November 2007 0:50)
Really interesting and fast engine written in pure C.
Currently under development.
C# BEPU Physics
(last update 25.November 2007 0:37)
Free for private use, but you have to pay a license fee to be allowed to use it for your commercial projects.
Written for XNA.
C# FarseerPhysics
(last update 25.November 2007 0:37)
Dunno much about this one, but looks usable.
C# FastLSM
(last update 25.November 2007 23:23)
SoftBody physics simulator based on very special algorithm called FastLSM (obviously).
It is covered by multiple patents, so be careful with it's usage.
It's good to read the paper first before studying it.
C# JelloPhysics
(last update 25.November 2007 23:23)
My favourite soft body engine. Objects behave like a pack of jelly and bounce like crazy :)
Also there is a funny game created with it - JelloCar.
C# Physics2D.Net
(last update 25.November 2007 1:2)
Haven't played with this one a lot, but the code looks clean and well commented.
Also it shows another use of the sequential impulses used in Box2D.
C++ Box2D
(last update 25.November 2007 0:37)
This is my most favourite engine. It's very well written and advanced with many nice features.
It is currently under heavy development by Erin Catto.
(so my mirror version is probably out of date)
C++ BulletPhysics
(last update 25.November 2007 0:51)
Probably the most favourite physics engine at this time.
Currently under heavy development (so my mirror is probably outdated).
Used by many commercial and non-commercial projects.
Also be sure to visit it's forum as it is full of interesting information and people:)
C++ daVinci Code
(last update 25.November 2007 12:11)
Accurate physical simulator with different. Probably not so good for games, but interesting from the theoretical point of view.
Haven't played with it yet.
C++ IBDS
(last update 25.November 2007 11:35)
Implementation of impulse based dynamics described in Dr. Jan Bender's paper. Worth studying it from the theoretical point of view.
Also be sure to read his paper.
C++ JigLib
(last update 25.November 2007 23:0)
Just another study source:)
Uses sequential accumulated impulses described by Erin Catto (and used in his Box2D), so might be good to compare it to Box2D.
Still under development.
C++ OPCODE
(last update 6.December 2007 20:9)
...is another open source collision detection library.
It says it is better then SOLID and RAPID, but you have to make your opinion by yourself:)
C++ OpenDynamicsEngine
(last update 25.November 2007 0:57)
Another very popular engine, big rival to Bullet.
Used by many commercial and non-commercial projects.
C++ OpenTissue
(last update 21.December 2007 18:34)
An opensource library written in C++.
Dunno much about it.
C++ Pulsk
(last update 25.November 2007 11:48)
Project aimed at simulating physics as "correct" as possible. Treates resting bodies in a very good way and also supports non-convex bodies.
Usually you can live without these features in your games, but might be interesting to look at.
C++ SOLID
(last update 2.December 2007 11:49)
..is an open source collision detection library written in C++.
It operates in 3 dimensions.
Coveres both broad phase (SAP) and narrow phase.
C++ Tokamak
(last update 25.November 2007 0:37)
Recently released engine, still not known very well.
Has some nice features like support for many stacking objects or automatic object destruction-fragmentation, but doesn't seem very powerful to me at the first look.
C++ TrueAxis
(last update 25.November 2007 1:21)
I have no expiriences with this one.
It features swept collision test (for fast-moving objects), however it is the only remarkable feature in their list.
It is free for non-commerial use.
Collection of resources
(last update 30.November 2007 19:22)
This pack contains many valuable papers, demos and source codes for car physics programming.
They include some of resources I mentioned in this section, but I think they deserve special space.
Collision Detection of Convex Polyhedra Based on Duality Transformation
(last update 16.April 2008 10:46)
A little different and maybe not well known method for detecting collisions.
CollTest
(last update 10.April 2008 22:4)
As a project for school I made a comparison of few broadphase collision detection algorithms using J2ME at mobile phones platform. Algorithms tested were SweepAndPrune(taken from Box2D Java port), UniformGrid and ImplicitGrid.
ImplicitGrid was clear winner for me.
Documentation (coll_test.html) is in english, but perhaps the numbers in the result table will be clear enough.
Construction of higher order symplectic integrators
(last update 1.March 2008 9:31)
Haven't read yet.
David Baraff
(last update 2.December 2007 13:47)
If you are studying physics, you might understand his work :)
I currently don't much.
Density Contrast SPH Interfaces
(last update 17.February 2009 10:58)
Solves problems in simulating multiple fluids with varying densities by altering the SPH method.
Deriving constraint equation
(last update 15.April 2008 21:34)
There is discussion about how to derive an equation needed by a constraint solver. You come to this problem when you want to simulate joints.
Differential Equations Basics
(last update 5.December 2007 10:28)
One part from the Siggraph '97 course by Baraff and Witkins.
Shows how to derive Euler and midpoint(aka Runge-Kutta) integrations. However, you need to know more about calculus to be able to get it clearly.
Efficient Collision Detection between 2D Polygons
(last update 6.December 2007 20:21)
Coveres non-convex polygon detection, which might be useful for deformable bodies.
I haven't studied it much yet.
Efficient Collision Detection of Deformable Models
(last update 5.December 2007 0:11)
Haven't read, haven't tried.
Efficient SAP implementation
(last update 29.February 2008 20:53)
C++ implementation of an array-based Sweep and Prune written by Pierre Terdiman. He claims it is pretty fast (according to his tests) and I trust him :)
It is based on his paper (below).
Enhancing GJK
(last update 2.December 2007 14:16)
Haven't read this one yet.
Essential Math
(last update 11.December 2007 13:28)
Few math and physics slides/links.
Explicit Euler, RK2, and RK4 examples
(last update 4.December 2007 0:58)
And a little comparison to Verlet.
Exploring Spring Models
(last update 2.December 2007 15:12)
Good articles to get you started with springs.
Sample source code included.
Note that if you use position based dynamics (ie Verlet from Jakobsen), then you handle springs in a different way (by modifying their positions direclty without forces).
FAQ about math algorithms
(last update 12.December 2007 22:39)
Maybe you can dig something up from there...
Fast Collision Detection for Deformable Models using Representative-Triangles
(last update 15.April 2008 22:14)
Haven't read this one. Targeted to 3D soft body simulations.
Fast Collision Detection for Deformable Models using Representative-Triangles
(last update 29.May 2008 9:49)
A collision detection method usable in 3D simulations. Haven't tried yet.
FastLSM
(last update 26.November 2007 20:21)
...is an algorithm developed by Alec Rivers under lead of professor Doug James for fast soft body simulations.
It also supports realtime destruction of the bodies as you can see in their video.
They concentrated on speed so it may be really usable for games. The algorithm is covered by some patents, but it seems like Alec will allow you to use it freely, if you contact him.
Few implementations
(last update 2.December 2007 11:57)
List of implementation I've found. Search for them in my resources or at google:)
- Box2D
- SOLID
- Farseer Physics Engine
Few notes about sweep (or swept) test
(last update 27.November 2007 20:58)
...enabling you to handle moving objects and predict their collision in time. Found at Gamasutra, you probably need (free) membership to be able to read it.
Fluid-like volume preservation
(last update 26.November 2007 21:11)
When I was developing my own blob simulator, I had problems with choosing a right way to keep the volume of the blob. It still behaved like a baloon or a jelly or a gum ball. My desired behaviour was fluid-like body.
Finally I found a similar simulation on youtube and contacted it's author,
Grant Kot.
The main idea is not to apply forces to mass-points, or add springs to the body, but to directly change mass-points' positions (and velocity, implicit). First you calculate how much you want to increase/decrease the volume and then you apply the value to all mass-points' normals (determined from the surface).
I plan to release some source-code of this when it will be ready, but if you need it right now, just contact me.
Gaffer on Networked Physics
(last update 16.January 2008 17:48)
Good place to start at.
Also many helpful comments.
Game physics summary from GDC
(last update 22.December 2007 9:59)
Touches almost everything you will encounter while playing with physics for games (rigid bodies and soft bodies to be more specific).
GameDev.net forums
(last update 24.November 2007 23:22)
The best practice is usually to search these forums first. It is worth the time - if you find what you are looking for, you will certainly find many unrelated but very interesting threads:)
Geometry Algorithms
(last update 6.December 2007 22:5)
I think the title says it all.
Ghosts and Machines: Regularized Variational Methods for Interactive Simulations of Multibodies with Dry Frictional Contacts
(last update 15.February 2009 13:1)
I took few interesting ideas from this thesis, but generaly it is very math heavy to allow me to go deeper.
GJK at MollyRocket
(last update 27.November 2007 20:12)
A guy from
MollyRocket recorded a video lecture about the GJK algorithm. If you take a paper and review it few times, you shold be able to understand it even if you are not native english speaker.
Also, he mentions few optimizations (or tricks) which other sources don't mention.
GPhysics blog
(last update 12.December 2007 22:18)
Blog by Erin Catto, creator of the Box2D physics engine.
Graphics Gems source code
(last update 6.December 2007 22:19)
If you for some really strange reason don't own these books, you can at least try out some of these pieces of code. But without explanation, without comments. Snd sometimes there is no code to the article.
In other words - go and buy the books:)
Havok Physics
(last update 25.November 2007 10:16)
Well known engine used in latests AAA titles. Pretty expensive and also not everyone can get it. Don't know what more to say about it :)
Chris Hecker's article on collision response
(last update 4.January 2008 8:56)
Impulse-based collision response described by Chris Hecker in his game physics articles.
Very straightforward and easy to read.
Chris Hecker's articles
(last update 12.December 2007 22:30)
Probably to best articles to start with when you want to learn something about rigid body dynamics. It does not go into very deep theoretical details, but it should be clear enough to be understood by most of programmers.
Chris Hecker's Physics References
(last update 12.December 2007 22:16)
Homepage of a famous guy:D
Chris Hecker's Rigid Body Dynamics
(last update 12.December 2007 22:30)
Probably to best articles to start with when you want to learn something about rigid body dynamics. It does not go into very deep theoretical details, but it should be clear enough to be understood by most of programmers.
Chrono::Engine
(last update 25.November 2007 11:11)
Highly accurate and very advanced engine filled with features you've ever dreamed of:) Aimed especially at physical simulations, school projects etc. It is probably slower then other engines but haven't tested it yet. If you have enough free time I think it's worth playing with it.
It is free for non-commercial use.
I-Collide
(last update 2.December 2007 12:19)
Probably the first paper in which SAP appeared.
But I wouldn't put my hand into a fire for it :)
Impulse-based Simulation of Rigid Bodies
(last update 11.December 2007 13:21)
Theoretical paper about impulses.
Haven't studied it yet.
Impulse-Based.de
(last update 12.December 2007 22:47)
Few papers about impulse based rigid body dynamics. Had no time and need to read it yet.
Iterative Dynamics with Temporal Coherence
(last update 12.December 2007 22:1)
A paper which describes "accumulated impulses" below.
J2ME DyMiX
(last update 25.November 2007 0:37)
My(=hardwire) personal rigid body physics engine I have written for mobile phones.
Doesn't support many fancy features, but it's pretty fast:)
Currently you have to pay small free if you want the full version and use it for your commercial projects.
JelloPhysics
(last update 26.November 2007 21:1)
Fully functional open source engine, so if you want to see how the simulation can be done, it's good source.
However, the objects behave a little bit strange - like a piece of jelly:)
Also, it implements gas-filled bodies described by Maciej Matyka.
Another interesting technique used is shape-matching, which is mostly the reason, why objects behave like a jelly.
jnrdev tutorials
(last update 6.December 2007 23:32)
If you are making a tile-based jump and run game, definitely take a look at these tutorials!
Kinetic Sweep and Prune
(last update 1.December 2007 23:41)
Extension of original SAP aimed to handle swept collision tests (it means it takes objects' velocities into account).
Marco Monster's tutorial
(last update 30.November 2007 18:52)
An introduction to car physics modelling for games.
If you are making a 3D vehicle physics this will be a good start.
Motivation from Metanet
(last update 27.November 2007 19:57)
Flash presentation explaining why it is good to care about collision detection in games.
Also coveres basic collision detection algorithms for tile-based games.
N Tutorials
(last update 5.December 2007 14:17)
Nice and easy to understand tutorial with flash ilustrations.
N Tutorials
(last update 6.December 2007 22:24)
SAT clearly explained including nice flash "movable pictures".
Also coveres poly-circle test.
Networked Physics at Box2D forums
(last update 16.January 2008 17:50)
Disscussion about networked physics.
Few ideas and maybe some source code, too :)
Networked physics in Mercenaries2
(last update 29.February 2008 21:9)
Slides of Gaffer's GDC2008 talk about networked physics.
Seems like something new in the industry because until now I can't remember a game which used physics simulation in multiplayer.
NewtonGameDynamics
(last update 25.November 2007 1:11)
Traditional and accurate engine.
Seems it's not developed anymore.
Nice summary
(last update 27.November 2007 13:27)
In this paper you will find very brief and clean summary of all basic things related to rigid body simulation.
Source code included.
Nonconvex Rigid Bodies with Stacking
(last update 26.November 2007 21:49)
Interesting thing in this paper is that it supports nonconvex bodies, because most of the methods used assume all bodies are convex so they can optimize more.
It shows how to detect collision, simulate correct friction and solve stacking problems (using shock propagation).
This approach was implemented in JigLib library.
nV Physics Engine
(last update 25.November 2007 10:20)
Still in beta, seems like it is not developed anymore.
Olii's tutorials
(last update 6.December 2007 23:42)
One more time I link to these tutorials:)
There is a good performing (in my expiriences) method to find contact points.
Oliii's impulses
(last update 27.November 2007 21:16)
Very nice series of tutorials, which are not very detailed, but included source code explains everything:)
Coveres SAT, simple (and fast) impulse collision reaction, swept test and some nice tricks.
Oliii's SAT
(last update 27.November 2007 21:18)
Very nice series of tutorials, which are not very detailed, but included source code explains everything:)
Coveres SAT, simple (and fast) impulse collision reaction, swept test and some nice tricks.
Oliii's verlet rigid bodies
(last update 27.November 2007 21:8)
Foudn this on Oliii's site. Nice example of creating bodies from rigid circles connected together.
Optimized Spatial Hashing for Collision Detection of Deformable Objects
(last update 5.December 2007 0:5)
Version optimized for soft bodies. Haven't tried this method.
Overview of integrators
(last update 16.December 2007 0:2)
The title says it all.
Overview of Verlet integrators
(last update 3.December 2007 23:43)
Quick summary of three most used Verlet integration methods: "position", "leapfrog", "velocity".
Parallel SPU Physics
(last update 24.February 2008 9:31)
GDC talk by Erwin Coumans about using multi-threading to speed up collision detection and reaction.
It didn't fit to any other category so it's here:)
Particle-based Viscoelastic Fluid Simulation
(last update 16.February 2009 13:52)
A programmer friendly approach for simulating both nonviscous and viscous fluids. It containts pseudocode and the math is not heavy.
Special section is devoted to collisions between fluid and rigid objects.
An implementation can be seen at
Grant Kot's website.
PHP source
(last update 14.December 2007 20:34)
Source code of this site if you want to use it somewhere.
It's my first bigger PHP project, be warned before you read it :D
Physically Based Modeling
(last update 4.December 2007 13:45)
Siggraph '97 course.
It needs you to know more math to be able to understand it, however if you do, it makes a lot of things clear.
Physics of Racing series
(last update 30.November 2007 18:53)
Maybe the most popular series of articles about car physics.
However, if you are not writing the most sophisticated simulator, you probably don't need it:)
Pierre Terdiman's notes
(last update 13.December 2007 19:23)
Found few handwritten notes and derivations at his sites:)
Maybe it will help someone.
Pool physics and impulses
(last update 12.December 2007 22:41)
Simplified explanation of impulse collision reaction for spheres.
Position based dynamics
(last update 29.November 2007 23:18)
This paper is similar to the one from Jakobsen. However, this simulation is more general and also easier to control.
They use explicit integrator, but mixed with Verlet. Also they use explicit velocity (instead of "last_pos") which allows user to manipulate velocity.
Collision response and all constraints (both equality and inequality) are solved using the same solver, which make it more general.
Another interesting thing is cooperation with rigid bodies - in their examples they simulated rigid rocks connected together via deformable cloth - really NEXT-GEN :D
Practical fluid mechanics
(last update 16.February 2009 11:40)
A math light article suited well for programmers who want to start playing with fluids.
Source code included!
Pressure soft body model
(last update 26.November 2007 21:42)
Basic idea of this approach is to apply force to all mass-points (along their surface normal) to keep them from collapsing.
Objects then behave like if they were filled with gas.
Another implementation of this method can be seen in JelloPhysics library.
QuickNeighbourhood
(last update 5.December 2007 10:35)
This is not a "classical" method. However, if you need to query objects about their neighbourhood (and in broad phase you do:)) and your objects are moving very fast, you might try this out.
Racer.pl
(last update 12.December 2007 22:53)
Links and resources they gathered while developing their car simulator.
Raycasting while using SAP
(last update 19.March 2008 10:24)
Casting a ray through the data structures of the SAP is not that easy. If you need faster solution than bruteforce, take a look at this.
Real-Time Collision Detection
(last update 5.December 2007 14:53)
...is a book by Christer Ericsson.
It's worth the money and a really good start.
Real-Time Collision Detection and Response Using Sphere-Trees
(last update 6.December 2007 19:53)
Haven't read. Haven't tried YET.
Real-Time Fluid Dynamics for Games
(last update 16.February 2009 11:35)
A famous article about grid based fluid simulations using Navier-Stokes equations. This method was improved in Practical Fluid Mechanics.
Real-Time Physical Simulation for Mobile Devices
(last update 15.August 2009 8:54)
This is my Bachelor's Degree work about soft body simulation optimized for mobile phones. Unfortunately, it is in czech only.
However, you can visit the project's website to download the library for free!
Abstract: In the presented work I discuss possible options of implementing a~physical simulation that can be run on today's mobile phones. I describe several approaches from which I choose one and discuss it in more depth. Next, I talk about general methods of optimizing programs targeted to mobile phones and how they apply to the implemented physical simulation. Finally, I show a very simple game which demonstrates the power of the simulator and it's usability in praxis.
Rigid Body Simulation I
(last update 6.December 2007 17:36)
Part from a Siggraph '97 course.
Advanced math needed, however it is explained very clearly!
Rigid Body Simulation II
(last update 6.December 2007 17:45)
Part of a Siggraph '97 course.
It's about rigid body collision in general, however for broadphase they use SAP.
Rigid Body Simulation II
(last update 11.December 2007 13:22)
A part from a Siggraph '97 course.
Explained in a very straightforward way, I had no problems understanding it.
Sample source code provided.
RK2 and RK4 equations
(last update 4.December 2007 0:2)
Equations for 2nd and 4th order Runge-Kutta.
RK4 is not that hard!
(last update 4.December 2007 0:27)
As explained by Baffer.
Ron Fedkiw's homepage
(last update 16.February 2009 11:43)
This site is loaded with large number of articles about fluid simulations as well as soft body physics.
Ron Fedkiw's homepage
(last update 16.February 2009 11:44)
This site is loaded with large number of articles about fluid simulations as well as soft body physics.
SAP and Multi-SAP paper
(last update 1.December 2007 23:42)
Nice description. Solves some practical issues, too.
The method described is implemented in Box2D.
Semi-Adjusting BSP-trees
(last update 5.December 2007 15:16)
Haven't read, haven't tried.
Semi-implicit Euler compared to Verlet, and "Euler-Verlet"
(last update 4.December 2007 0:51)
The title says it all.
Shape matching
(last update 26.November 2007 21:53)
One similar algorithm of shape matching is implemented in JelloPhysics engine.
This might give a more theoretical explanation of what it does.
Simple Integration Algorithms
(last update 4.December 2007 1:1)
Detailed description and comparison of most used integrators.
SimplePhysicsEngine
(last update 25.November 2007 1:16)
I have no expiriences with this one.
Free for non-commercial use.
Simplified car physics
(last update 2.December 2007 18:14)
Found this topic.
If you don't have much time to read through literature, you can try this out, but I am not sure how it will perform.
Smoke Simulator
(last update 16.February 2009 11:39)
An attempt to simulate smoke using Navier-Stokes.
Sphere Trees for Fast Visibility Culling
(last update 6.December 2007 19:56)
Article in the Game Programming Gems II book.
If you still don't have it -> go and buy it!
SpringSim
(last update 12.December 2007 22:32)
Nice example of points and springs written in C#. However, the code is not very clean and there are NO comments.
Stable Rigid/body Physics
(last update 19.December 2007 10:19)
How to deal with stability(numerical and physical) issues when doing computer simulation.
More like an introduction to the problem.
Structural springs
(last update 26.November 2007 22:31)
Mick West used springs inside the body to keep the volume of the blob.
I must say his results are really nice. However if you have to decrease FPS or you can't afford too many mass-points and springs, this might not be good solution.
Also, you will not be able to completely remove instability issues IMHO (the body can deformate and won't be able to get back to the initial state).
He provides a source code, but I must say it's a real mess :)
Tire Model
(last update 27.November 2007 13:51)
If you need more accurate tires (not in 2D probably), you can try out this link.
Verlet Integration and Constraints in a Six Degree of Freedom Rigid Body Physics Simulation
(last update 10.September 2008 16:28)
In this paper they use the Verlet integrator for rigid body simulations...it's not a common approach today despite being very stable even when using stiff springs because of problems the Verlet integrator has.
What the hack is this all about?
(last update 4.December 2007 0:58)
What does the integrator do?