AntonioMartini wrote:
i have the impression that approximating a triangle by a paraboloid is not a good enough approximation. We wouldn't be able to stack properly even simple boxes as the surface wouldn't be flat anymore.
if LCP ST isn't able to solve cases like the ones described earlier, where potential contacts are obstructing valid motion, i think we are not talking about a minor approximation. The method not just prevents penetration but also prevents valid motion in the most common cases. there is an endless list of very common cases similar to the one mentioned earlier. So if there is no reliable way of finding valid potential contacts LCP ST is just not usable.
I think everyone is missing the big point here, use the right model for the right job!! The biggest problem with ST is that you don't get a bounce naturally, since there is no TOI calculations. Therefore, games probably won't like it since people "expect" a bounce and games are all about looking real. That said, there are many situtations (my research included) where bouncing doesn't happen. Because modeling impact is so difficult, many industirial applications go out of there way design applications with low velocity and no bouncing, basically quasistatic systems. In quasistatic systems ST works great, since we can easily replace the Newton-Euler equations with a set of equilibrium equations, and thats it.
To answer your more specific questions, there are many cases where heuristics can prune the set of potential contacts and remove the cases in invalid motion. They don't work all the time however, especially with non-convex geometry where yes, due to the linearization of the contstraints artifacts can be found. Lets analyze your examples more carefully.
O,t0........................................O,t2
.................. ____________________________________1
___________O,tc_________________________________2
...........................O,t1
Using an unmodified ST, We would recognize a potential contact with plane 2, then we would make contact with plane 2 and stick, not bounce. This is by design!! If you want bounce, you will have to modify ST to include it.
Now, let me modify your example slightly:
_______________________________________________1
O,t0
_______________________________________________2
Assume the planes are grippers on a hand, trying to squeeze the sphere. Now there can be an infinite number of bounces/collisions in a finite time. ST won't have a problem, but CCD&TOI will behave very badly. Again, choose the right model for the task at hand.
Your other example presented earlier in the forum is an issue caused from the linearization of the constraints:
...O (T0)
_____.........O(ST,T1)........______________..............._______________
...........................O(CCD/TOI,T1)
This happens because linearizing the constraint caused line segments in the workspace to become half-plane constraints in configuration space. So yes, ST will stop on a non-existant edge, because we modeled that edge has a half plane. Smaller time-steps help with this situation because with smaller time steps eventually the sphere will be over the gap, instead of the edge.
However, there are other more difficult situations that we have to deal with that that. What if the obstacle is non-convex, what do we add as constraints? What about the following situation of a sphere falling on a triangle:
O
/\
There is no well defined normal in this situation, so what do we do? We have a non-convex formulation that we are working on to try and better handle these cases.
As for stacking boxes, yes we can do that. We can even have different coefficients of friction between the boxes and correctly handle the maintain/separate stick/slip conditions that may occur. If you want boxes bouncing into each other, then no, an unmodified ST won't do it.
There are very few cases where we can't prune away (boundary tests, normal cone tests, etc) the potential contacts that cause invalid motion, but yes they do exist and it is a limitation.
As far as ST being usable, it is very usable and has been used. Again, use the right model for the right job. If I needed bouncing, I wouldn't use ST. I would use a complementarity formulation by
Song-Pang-Kumar which adds local compliance at the contact locations. Instead of ad-hoc analytical methods, the displacements of the contact patch are used to determine the rebound behavior. This is a more physical interpretation of what is actually happening. Also, because it is also an LCP formulation we can use the well defined mathematics to prove that in the limit, this formuation matches the actual trajectory!! That is something no other method has been able to do. Using differential equations, you can't say anything about convergence. The drawback of this method is that it is very slow.
Sorry for the long rant, but I was getting frustrated at people forgetting that there is more than one formuation, be it complementarity, DAE, or CCD/TOI. Choose the right one for the job at hand. I doubt there will ever be a single formulation used by everyone, as different tasks have different goals.