Conservative Advancement for Ellipsoid

Please don't post Bullet support questions here, use the above forums instead.
chand81
Posts: 6
Joined: Thu Aug 16, 2007 7:19 am

Conservative Advancement for Ellipsoid

Post by chand81 »

I have been studying the following resources:

http://cg.informatik.uni-freiburg.de/co ... coldet.pdf
http://graphics.ewha.ac.kr/fast/FAST.pdf


This is how I look to apply the information to the ellipsoidal case:

Image

Image

Would this be a good approach? Any suggestions?

Also, where can I find more resources on conservative advancement ?

Thank you
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA

Post by Erwin Coumans »

Conservative Advancement needs some room in order to advance. In close touching contact situations the steps become too close.

One way to provide this room is to allow a given amount of penetration. This also helps in touching contact situations, where the time of impact would otherwise be zero. If you develop the algorithm, it would be best to expose this 'allowed penetration' in the API. Another ad-hoc solution is to disable time of impact, and purely rely on penetration depth/discrete collision detection on close proximity/contact, but my experience is that using a fixed 'allowed penetration' margin works better.

There are methods to create tighter bounds that improve Conservative Advancement in certain situations, but in (close) contact situations you still require some margin/tolerance.

See also:
http://graphics.ewha.ac.kr/catch/

Thanks,
Erwin
chand81
Posts: 6
Joined: Thu Aug 16, 2007 7:19 am

Post by chand81 »

Sorry I couldn't follow up earlier. Wanted to have something concrete before posting.

I have been working on CA for ellipsoid (amidst all other things that I need to worry about) for quite some time now. Unfortunately haven't seen stable results yet with my physics simulator, this is mainly due to my inaccurate collision detector.

CA against an infinite plane is manageable, but extending it to triangles throws in lots of other challenges.

Also, if the ellipsoid is moving away from the plane it could still collide with the plane because of its rotation. This is a tricky case and has to be handled separately.

Erwin, I thought hard about allowing a penetration margin but I couldn't come up with any approach that would give me the required collision data - time, normal & point of contact.
Can you please explain a little how penetration could be used in the ellipsoidal case?


Another approach that I've thought of is doing multiple sweeps from the starting position, only the Rotation is advanced by some time t and a sweep test is performed. If the sweep test returns a time of collision of ts, then t & ts are compared. If they are close to each other, t was a good estimate. t could be formulated using a binary search over dt.
The case for ellipsoid moving away from triangle will have to be addressed in a slightly different manner.

Do you think such an approach would work, what difficulties could crop up?

Thanks.