Sign in to follow this  
leoptimus

Constraint Solver

Recommended Posts

Anybody knows about how to implement a constraint solver using impulses? For a dynamic simulation, many physics engines uses Gradient an Lagrange Multipliers for calculate the movement of a rigid body subject to multiple constraints, such springs and collision contacts. But I've heard about someone that made a physics engine that fit the movement of a physical object based on reaction impulses. Can it be?

Share this post


Link to post
Share on other sites
doom3 uses the novodex physics library*

I don't belive it uses impulses, but I'm not sure what it does use


*[I'm having trouble finding a good link to prove that though, slashdot and a blog don't qualify]

Share this post


Link to post
Share on other sites
I could be wrong but last time I checked I read Dom3 has its own build in Physics engine. It was even released publicly.
Maybe the news source I read was incorrect

Share this post


Link to post
Share on other sites
Doom 3 physics written in-house by Jean Paul van Waveren:
http://articles.dailytelefrag.com/index.php?type=id&publ_id=48826&page=2

Stable (and accurate) impulse-based physics is possible through a variety of methods (I've done it many ways). Each method has strengths and weaknesses.

Verlet-like (but not with particles, as with Jacobson):
http://www.gdconf.com/archives/2004/baltman_rick.pdf

Verlet methods are effectively impulse methods: instantaneous changes in velocity are impulses.

It is possible to use 100% impulse physics for stable object settling, as well as energy accurate simultaneous collisions. See the Perfect Physics link on my website.

Impulse-based general constraints are typically relaxed over time to provide stability at the expense of error (See Jacobson's and Baltman's papers). I believe Danny Chapman (MrRowl) also relaxes impulse constraints: http://www.rowlhouse.co.uk/jiglib/ (see the last few paragraphs).

Iterative implicit and semi-implicit ("optimization") methods appear to generate more overall error (motion looks plausible, but not as realistic), but provide better general stability.

Thus, for a game the requires realism (Kinetic Energy accuracy), perhaps examine impulse methods, for a game that specializes on complex joints/constraints, examine implicit and semi-implicit "optimization" methods (open source example: ODE). See also Erin's (Nire) paper: http://www.gphysics.com/archives/6

Share this post


Link to post
Share on other sites
Quote:
Original post by oliii
I wouldn't know about that. But it looks quite springy (impulses?).


The springy look comes from using a Lagrange Multiplier constraint system (optimization: LCP solver, etc.). An impulse-based solution will provide sharper, less springy motion, but will be harder to generalize for arbitrary constraints (trade offs for each method).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this