Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualDirk Gregorius

Posted 20 October 2013 - 03:23 PM

I recommend using Erin Catto's approach that he introduced at the GDC this year:

https://code.google.com/p/box2d/downloads/detail?name=ErinCatto_GDC2013.zip&can=2&q=

 

It is conceptually a hybrid of Brian Mirtich's conservative advancement method and bisection. I ported it to 3D and it works great in practice. The edge distance function in 3D is non-trivial though (it is non convex function), but I am sure you can figure it out.

 

You can find a 2D reference implementation in the Box2D source. You can find good discussions of conservative advancement here:

http://www.cs.berkeley.edu/~jfc/mirtich/impulse.html

 

In my *personal* experience the original conservative advancement is too slow for real-time simulation. Worst cases like a rigid body rotating over the edge of another one are a common situation in games and take hundreds of iterations. E.g. a book falling of a table. 

 

HTH,

Dirk


#2Dirk Gregorius

Posted 20 October 2013 - 11:48 AM

I recommend using Erin Catto's approach that he introduced at the GDC this year:

https://code.google.com/p/box2d/downloads/detail?name=ErinCatto_GDC2013.zip&can=2&q=

 

It is conceptually a hybrid of Brian Mirtich's conservative advancement method and bisection. I ported it to 3D and it works great in practice. The edge distance function in 3D is non-trivial though (it is non convex function), but I am sure you can figure it out.

 

You can find a 2D reference implementation in the Box2D source. You can find good discussions of conservative advancement here:

http://www.cs.berkeley.edu/~jfc/mirtich/impulse.html

 

In my *personal* experience the original conservative advancement is too slow for real-time simulation. Worst cases like a rigid body rotating over the edge of another one are a common situation in games and take hundreds of iterations. E.g. a book falling of a table. Erin's method works great, but the edge cases are not trivial and difficult to solve efficiently.

 

HTH,

Dirk


#1Dirk Gregorius

Posted 20 October 2013 - 11:47 AM

I recommend using Erin Catto's approach that he introduced at the GDC this year:

https://code.google.com/p/box2d/downloads/detail?name=ErinCatto_GDC2013.zip&can=2&q=

 

It is conceptually a hybrid of Brian Mirtich's conservative advancement method and bisection. I ported it to 3D and it works great in practice. The edge distance function in 3D is non-trivial though (it is non convex function), but I am sure you can figure it out.

 

You can find a 2D reference implementation in the Box2D source. You can find good discussions of conservative advancement here:

http://www.cs.berkeley.edu/~jfc/mirtich/impulse.html

 

In my personal experience the original conservative advancement is too slow for real-time simulation. Worst cases like a rigid body rotating over the edge of another one are a common situation in games and take hundreds of iterations. E.g. a book falling of a table. Erin's method works great, but the edge cases are not trivial and difficult to solve efficiently.

 

HTH,

Dirk


PARTNERS