Differences between velocity and position contact constraint

Please don't post Bullet support questions here, use the above forums instead.
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Differences between velocity and position contact constraint

Post by ngbinh »

Hi!

We've made a simple demo to show the different between Stewart-Trinkle and Anitescu Potra (ODE using this now) time stepper.
As you can see, even with high time step, you'll never see penetration in ST time stepper.

Grab the demo at my colleague's website:
http://www.cs.rpi.edu/~sberard/lcp_applet/

It can be showed that if you are thriving for non-penetration, Stewart-Trinkle time stepper is the way to go. The only drawback is that we need a better collision detection. Currently, most collision detection package only return only 1 closest pair. But in order to have "complete" non-penetration, we need all "possible" pairs. I appreciate any disscussions and willing to help on this.
Last edited by ngbinh on Sun Jul 23, 2006 11:37 pm, edited 1 time in total.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

Thanks for the demo! I didn't have Java installed here, but I will try it out later.

The only drawback is that we need a better collision detection. Currently, most collision detection package only return only 1 closest pair.
Not sure what your definition is of 'pair', is it referring to all closest point pair (versus 2 closest points, one on each objects), or all potential overlapping object pairs?

Bullet collision detection can provide you will all overlapping pairs, even with the smallest time-of-impact. You just extend the AABB with the motion (that is already done in the CcdPhysicsEnvironment), and call the dispatcher.
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Post by ngbinh »

The definition of "active pairs" or more formally "active set" of collision comes from the fact that we want to prevent penetration.
So, the active set should include all pairs that would collide (penetrate) if we don't do anything. So, if we miss a pair, they will penetrate. If we included the pair that would not penetrate, we lost some CPU cycles (Not too much though, coz the LCP solver will easily satisfy that complimentarity condition).

So what I'm after now is a list of all potential overlapping features of two shapes. My point is: penetration is bad because it's not physically correct plus it's expensive to resolve. My analysis show that the cost of a pair not in penetration is cheaper than the cost of a pair that's already in penetration.

The base line is: avoid just using penetration depth in simulation.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

You description is still vague to me.

Say, we have 2 states, the starting state, and the ending state.
and 2 bodies, say 2 spheres for example (to simplify).
Image
At the start-state they are both not overlapping. and the end state, they are not overlapping either.

Usually, you want the time-of-impact, when they are in touching contact. Bullet can calculate this time of impact.

What kind of info did you exactly expect for this situation?

Image
And secondly, if they would be in (deep) penetration at the end of the timestep (T1), what info do you want? The closest distances of all features at the beginning of the timestep (T0) ?
sberard
Posts: 10
Joined: Sat Jul 22, 2006 4:59 pm
Contact:

Post by sberard »

Erwin Coumans wrote:You description is still vague to me.
Hi, I'm the colleague mentioned by ngbinh. I'll try to clarify the contact information required by the stewart-trinkle formulation by a simple 2D polygon example.
Image
In this example, we see that at least 5 "contacts" or witness pairs are required to prevent all inter-penetrations between the polygons. The length of the blue lines between the vertex-edge pairs can be thought of as the respective values of the distance functions. Note, the bottom horizontal blue line is not drawn incorrectly. It is a problem due to the linearization of the contact constaints. All vertices are are a witness pair with a half-plane, not a line segment. This means the vertex may come in contact with a non-existant edge. Heuristics and tolerance levels are currently used to try and limit the occurences of these linearization issues, but they still happen. If we allow non-linear complementarity formulations, this can be overcome, but at the cost of slower solution times.
Usually, you want the time-of-impact, when they are in touching contact. Bullet can calculate this time of impact.
Knowing the time-of-impact is very useful, but in my opinion very hard with many movable bodies with intermittant contact. Knowing this time would allow the time-stepper to apply any impact resolution law they want, but solving for this time accurately is impossible with actually solving the dynamics. The coupling between the dynamics and collision detection has always been a headache for me!! I am interested in how bullet can solve for these times without solving the dynamics.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

In this example, we see that at least 5 "contacts" or witness pairs are required to prevent all inter-penetrations between the polygons.
Is this at the beginning of the timestep (T0) or at the end?
Can you also explain it in terms of my picture with the red and green spheres?

Most importantly, how are you using this witness pair info exactly?

How do you make sure at the end of the timestep they don't miss the collision or deeply penetrate? Do you adjust the velocity, or only integrate the position with a fraction so they come in touching contact?
(this 'fraction' is the time of impact)

but solving for this time accurately is impossible with actually solving the dynamics.
It is possible! Actual implementations: Havok, Doom3, PhysX and many more. They all can prevent penetration using time of impact calculation in the collision detector, and a dynamics scheme that steps until the time of impact (or throwing away additional motion that would lead to penetration). Bullet collision detection calculates the time of impact, but the implementation is work-in-progress. The trick is to allow some 'tolerance' / 'allowed penetration' for the touching contacts (otherwise you get always zero time of impact).

Thanks,
Erwin
sberard
Posts: 10
Joined: Sat Jul 22, 2006 4:59 pm
Contact:

Post by sberard »

Erwin Coumans wrote: Is this at the beginning of the timestep (T0) or at the end?
Beginning, T0
Can you also explain it in terms of my picture with the red and green spheres?
Yes and no. If we are assuming a linear system, then your spheres would be approximated by a large number of polyhoderon. Then you would have a similar situation as in my figure, where at time T0, many vertices of the red (green) polyhedron approximation would be in potential contact with many edges of the green (red) polyhedron approximation. In the limit, you could include every vertex with every edge, but that is computationally intractable and we use techniques to prune the number of witness pairs.

If your spheres are implicit or smooth, then a nonlinear complementarity formulation must be used which will not require vertex/edge pairs, since they don't exist. If you are really interested in exact geometric representations, this is something we are exploring in our lab right now.
Most importantly, how are you using this witness pair info exactly?
The distance between each witness pair is included into the Stewart-Trinkle formulation, which does not allow this distance to become negative; thus preventing inter-penetration of the body. The complementarity constraint is between this gap "function" and the normal contact force. Since we don't really have a function for the gap, we take a tailor series approximation of it:
\psi_n + \partial \psi_n \over q * \Delta q + \partial \psi_n \over t * \Delta t
where psi_n is the value of the gap at time 0, \partial \psi_n \over q is the nonpenetration constraint jacobian, q is the configuration of the body, \partial \psi_n \over t arises for kinematically controlled bodies, and \Delta t is the step size.
It should be noted, the only difference between the Stewart-Trinkle formulation and the Anitescu-Potra, is the inclusion of the \psi_n term in the Taylor series expansion: ST includes it, AP does not.
How do you make sure at the end of the timestep they don't miss the collision or deeply penetrate? Do you adjust the velocity, or only integrate the position with a fraction so they come in touching contact?
(this 'fraction' is the time of impact)
By including every potential collision, we can guarantee we never miss it. Of course in practice this is infeasible. The ST formulation will not allow the gap to become less than 0 (thus no penetration). The AP form enforces the constraint at the velocity level, so some initial amount of penetation may occur, but after that AP prevents it from getting worse. (Aside: If you run the applet on my website and ram the sphere into the horizonal surface, you will see it penetrates the surface with AP, but not with ST. Also, if you cause penetration with AP, then switch the model to ST, the position level constraint kicks in, and the circle is forced out.).

If all possible contacts are identified at time T0, then we can guarantee (even with a fixed step size) that penetration will not occur at time T1. If a contact occurs during a time step, the complementarity condition between the gap function and the normal contact force will determine that the gap = 0 and the normal contact force > 0 at time T1. If contact does not occur, then the complementarity condition will be gap > 0, normal force = 0 at time T1. Note, this only allows for plastic collisions (no bounce). If a collision response is desired, the time of impact must still be determined and some impact law applied. Or you can cheat, and apply the collision response at the end of the time step.
It is possible! Actual implementations: Havok, Doom3, PhysX and many more. They all can prevent penetration using time of impact calculation in the collision detector, and a dynamics scheme that steps until the time of impact (or throwing away additional motion that would lead to penetration). Bullet collision detection calculates the time of impact, but the implementation is work-in-progress. The trick is to allow some 'tolerance' / 'allowed penetration' for the touching contacts (otherwise you get always zero time of impact).
Call me skeptical though. I deal with contact intensive systems, which would make these calculations "collision bound". Imagine trying to simulate sand in an hourglass. All of these time to impact calcuations will prevent progress of the simulation. Whereas we can have a fixed time step and guarantee progress.

Allowing penetration is not an option I personally approve of. It is not what physcally happens. The processes of how to resolve inter-penetrated bodies are very ad-hod at the moment, and without some sort of swept sphere computation to determine the incoming trajectory, can be wrong. I am more interested in the new locally-compliant models, where the bodies locally deform at the contact, and resolution is based on displacements instead of analytical techniques.

If you have any other questions please ask. I will attempt to read a little about these "continuous collision checker", to better understand them.

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

Post by Erwin Coumans »

Thanks for taking the time, but it didn't help me getting more understanding of your method. Probably I just have to read more about this particular Steward Trinkle method.

I wanted you to describe all important steps from T0 to T1 in a simple case, like a moving point versus infinite plane.

Description of a typical solution that prevents penetration, following Brian Mirtich's time stepping as described in his 1996 PhD thesis "Impulse-based Dynamic Simulation of Rigid Body Systems".

0) calculate the minimum time of impact of all objects,
1) step all involved objects to that time of impact (TOI where T0 < TOI <= T1)
2) handle the discontinuity of the collisions happening at this TOI (resolve collision, update velocity of the rigid bodies involved in the collision)
3) allow some penetration to avoid getting 'stuck' in 0 time of impact
4) continue this process until T1 is reached.

This stepping process can be optimized by localizing computation, for example using Mirtich's application of time warp (Siggraph 2000).

Could you describe your approach like I just did for the conventional way of avoiding penetration? (without reverting to mathematic formulae)

In the meanwhile, I will have a look at this Steward Trinkle paper.
without some sort of swept sphere computation to determine the incoming trajectory
Most methods use more advance ways then the simple linear case of a computing a swept sphere. Typical methods include rotation, and convex shapes or concave mesh (a bounding volume hierarchy of triangles).

Thanks,
Erwin
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Post by ngbinh »

Erwin! I will try to explain to you how Stewart Trinkle or in general, how can contact constraint in position level can prevent interpenetration.

The main difference between Stewart-Trinkle timestepper and Anitescu Potra (contact constraint handled in velocity level, the way most of people in the industry doing) is in non-penetration constraint. In ST, non-penetration constraint is:
0 <= d comp. p >=0 (d is distance, p is normal impulse)
when in AP:
0 <= v comp. f >= 0 ( v is normal velocity, f is normal force)

So in ST, basically the result of LCP solver always penetration-free IF we constraint that feature at the right time. Look more closely at the constraint, you will see the phenomenon,

Image

In ST, when you include a pair of contacts into LCP, then the LCP solver will do the job to prevent that pair from interpenetation in the next time step. So in this case, if you included 3 pairs of contact P1,P2 and P5 into the active set, then the LCP will prevent them penetrate in the next time step. So, only if P4,P5 penetrate then we have penetration. Of course you can also add P4,P5 but it would cost you some CPU cycles.

For the AP case, as usual, you have to include only P1 (the only one in penetration) to prevent deeper penetration.

You can view like this: in ST, you PREVENT penetration by adding contact pairs(Those pair won't penetration in the next time step). In constrast, AP just try to STOP penetrated pair, so in AP, no way you can prevent penetration. Remember, when you put a contact pair into active set in AP, the constraint is: the velocity of those pair cannot make them penetrate deeper.

So you can see, there is inherent differences in ST and AP collision detection.

About continous collision detection, it has a different flavor than ST vs AP. It try to predict future collision pair. Right now, discreet collision detection has a very weak assumption that the contact information is constant over a time step. Continous collision will try to predict those information at time t1 by making BETTER assumption: those bodies will have constant velocities over a time step. This assumption is better but also not correct. So you see a strange connection between collision and dynamics. You need collision to carry dynamics but you need dynamics (to get the right future configuration) to get the right collision. So, the most accurate thing to do is to use NCP instead of LCP.

Also, the main weakness of continous CD is you have to chop time step down to tiny bit. Thus there is no guarantee in progress. There will be the case when intensive collision happen and TOI is so close to T0. I know you can relax it a bit by allowing some sort of penetration. But we want to avoid penetration because it's not physically correct. Furthurmore, I think I can come up with a modified ST to consider the constant velocities assumption. Thus, it's similiar to continous CD.
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Post by ngbinh »

Erwin Coumans wrote:Thanks for taking the time, but it didn't help me getting more understanding of your method. Probably I just have to read more about this particular Steward Trinkle method.
I think you should read that paper. ST method is the first one that can handle friction. AP is 1 year later and somewhat similiar. I think there is a problem with ST paper because prof Trinkle mentioned in his paper that his method can suffer from no solution. But I doubt that's just the result of the position constraint. Because with such constraint, if you put your scene into a physically incorrect configuration then it more likely, ST will fail.

Image
Erwin Coumans wrote: I wanted you to describe all important steps from T0 to T1 in a simple case, like a moving point versus infinite plane.

Description of a typical solution that prevents penetration, following Brian Mirtich's time stepping as described in his 1996 PhD thesis "Impulse-based Dynamic Simulation of Rigid Body Systems".

0) calculate the minimum time of impact of all objects,
1) step all involved objects to that time of impact (TOI where T0 < TOI <= T1)
2) handle the discontinuity of the collisions happening at this TOI (resolve collision, update velocity of the rigid bodies involved in the collision)
3) allow some penetration to avoid getting 'stuck' in 0 time of impact
4) continue this process until T1 is reached.

This stepping process can be optimized by localizing computation, for example using Mirtich's application of time warp (Siggraph 2000).

Could you describe your approach like I just did for the conventional way of avoiding penetration? (without reverting to mathematic formulae)
Look back at my previous post,we do similiar to what you discribe but by constraining the REAL non penetration condition (in position level) we can avoid them. The main difference is we don't wait till there is some penetration and correct it but actively prevent it. The bad things in allowing penetration are:
1. Penetration is WRONG.
2. We will only chasing our tails. Penetration-> correct then penetration -> correct...That's why we need to disable bodies sometimes to have a stable simulation.
3. There is no good way to correcting penetration. (Maybe because penetrations don't happen in nature).

Here come our version:
1. Setup collision detection by adding *all* possible contacts into active set
2. Throw them into LCP
3. Get impulse out of the result
4. Update positions/velocities

The nice things of this are:
1. We *guarantee* no penetration ( not absolutely because there are many other issues)
2. We guarantee progression. You will always be able to step forward. There is no need to chop down your time stepper.
Erwin Coumans wrote: Most methods use more advance ways then the simple linear case of a computing a swept sphere. Typical methods include rotation, and convex shapes or concave mesh (a bounding volume hierarchy of triangles).

Thanks,
Erwin
I also mentioned this in previous post. The way they advance has to based on some assumptions. But to get the real correct one, no way you can avoid using dynamics in collision. As Steve mentioned before, there is a strange coupling between them. That's also not why I don't really like continous CD. The main bad thing I hate is there is no guarantee in progression.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

there is still no better understanding at all.

Please compare the typical CCD+TOI (as described in steps a few post earlier) method against your ST implementation, and please ignore AP and friction for a second.
The main difference is we don't wait till there is some penetration and correct it but actively prevent it.
I guess you are comparing your implementation of ST with AP.

CCD methods don't wait until there is penetration. They thow all objects and time of impact into the LCP and integrator in such a way that penetrations are avoided before they happen.

0) Can you describe the recipe your implementation of ST more in detail?
Just 'throwing things in an LCP' is not detailed enough, because that is what most CCD+TOI methods do as well.
1) Does it subdivide the timestep?
2) what happens if there is a collision in the middle between T0 and T1?
3) Why does your ST implementation not suffer from contacting situations where the CCD+TOI based methods would lock when the smallest time of impact goes to zero?
4) can you try to paint the effective end position in ST at the end of the timestep? It has the CCD+TOI already filled in, with the begin at T0, collision-free motion at T1_predicted, and position at TOI the time of impact, where it subdivides the timestep, applies an impulse, and continue so the object bounces DURING the timestep and ends in 'effective T1'.

See picture, sorry for bad artwork ;-)

Image


Let's hope you will be able to explain your method in more detail.

In the meanwhile, after not getting the point of ST, I will invite Kenny Erleben and Stephane Redon to help out.

Thanks for the effort,
Erwin

ps: are you visiting SIGGRAPH? it might be easier to discuss over there in a meeting?
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Post by ngbinh »

Erwin Coumans wrote:there is still no better understanding at all.

Please compare the typical CCD+TOI (as described in steps a few post earlier) method against your ST implementation, and please ignore AP and friction for a second.

I guess you are comparing your implementation of ST with AP.
It's not really "correct" to compare ST with CCD+TOI because one is timestepper,other is collision detection. The truth is, you can use CCD+TOI with ST so I don't know how to compare them. It's possible to compare ST with AP+CCD&TOI. If that what's you really mean then I can say currently AP+CCD&TOI is more accurate than naive ST. But you should consider the facts that CCD&TOI is much more costly than one-shot distance computations. Also, I believe that I can modify ST to act similiar to AO+CCD&TOI in many senses without the need of CCD&TOI. About using CCD&TOI with ST, it can only be better not worse than AP+ CCD&TOI.
Erwin Coumans wrote: CCD methods don't wait until there is penetration. They thow all objects and time of impact into the LCP and integrator in such a way that penetrations are avoided before they happen.
I agree with you.
Erwin Coumans wrote: 0) Can you describe the recipe your implementation of ST more in detail?
Just 'throwing things in an LCP' is not detailed enough, because that is what most CCD+TOI methods do as well.
I don't know how to explain in more details. Throwing here mean exactly as it. After we collect all possible collision pairs, we build the big matrix as usual (says, like ODE for more specific) and solve it. The only different is our constraint is in position level not velocity and we also have a "stabilization" term which not exist if you write in velocity level.
Erwin Coumans wrote: 1) Does it subdivide the timestep?
No
Erwin Coumans wrote: 2) what happens if there is a collision in the middle between T0 and T1?
Our constraint will handle it, it will produce an appropriate impulse to make sure there will be no penetration. I think now what your constraint do is to make sure the penetration won't be worse.

Erwin Coumans wrote: 3) Why does your ST implementation not suffer from contacting situations where the CCD+TOI based methods would lock when the smallest time of impact goes to zero?
Again, if you mean AP and CCD+TOI then the answer is in this method, we need to find TOI which require subdivision of time step. In ST, we leave that thing to LCP solver. There could be some micro collision between bodies in the scene during T0-T1 but at T1, the LCP solver will guarantee there is no penetration. About micro collisions, I don't think I have enough knowledge to explain. Maybe David Stewart or Mihai Anitescu would be able to say something because they pursuit that narrow path.
Erwin Coumans wrote: 4) can you try to paint the effective end position in ST at the end of the timestep? It has the CCD+TOI already filled in, with the begin at T0, collision-free motion at T1_predicted, and position at TOI the time of impact, where it subdivides the timestep, applies an impulse, and continue so the object bounces DURING the timestep and ends in 'effective T1'.
In ST, the object will rest in contact. I didn't mention that it's hard to produce bouncing effect in ST, because when you need to bounce, you need to time of collision, then it pins down to CCD&TOI. But in ST, we don't know anything(I mean with one-shot CD) about exact TOI.
Erwin Coumans wrote: ps: are you visiting SIGGRAPH? it might be easier to discuss over there in a meeting?
I don't have plan to visit SIGGRAPH although I really want to.

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

Post by Erwin Coumans »

It's not really "correct" to compare ST with CCD+TOI because one is timestepper,other is collision detection
CCD+TOI uses the timestepper that subdivides the timestep based on the TOI queue. So it steps from T0 to the smallest TOI, calculates the local LCP conditions at that TOI, and proceeds the simulation until it reaches T1.
So CCD+TOI Queue is a timestepper.

0) Can you describe all the constraint that you throw into the LCP which allows ST to avoid penetration?

It seems to involve some distance constraint, and internally the LCP projects the motion and makes sure this distance never becomes negative?

1) How does your implementation of ST deal with rotations? With rotating long thin objects, it is not necessarily the closest points at time T0 that cause the penetration in T1.

Thanks,
Erwin
ngbinh
Posts: 117
Joined: Fri Aug 12, 2005 3:47 pm
Location: Newyork, USA

Post by ngbinh »

Erwin Coumans wrote: With CCD+TOI I meant using a time-of-impact queue like Mirtich does in his PhD or his Time Warp paper. So when you want the simulation to proceed from T0 to T1, it will maintain a TOI queue, and step from closest TOI to the next, until it reaches T1.
OK, I see what you mean now. The drawbacks of this method is:
1. It projects future position by making assumption that linear/angular velocities are constant over a time step.
2. It doesn't guarantee progress. ( I don't know how it relaxes this statement by allowing some penetrations but the main idea is that).

Now, if you want me to compare this method with current ST then:
1) Short answer: CCD+TOI is more accurate than one-shot CD+ST
2) Long answer with some explainations: ...they are still different. Given the TOI queue, I can set-up the LCP using ST. I think you still need to setup a LCP in CCD+TOI right? So I doubt it's still AP+ CCD&TOI like what I called.
Erwin Coumans wrote: 0) Can you describe the actual constraint that you throw into the LCP which allows ST to avoid penetration?
Is it a distance constraint, and internally the LCP projects the motion and makes sure this distance never becomes negative?
Yes. We put in the complementarity condition:
0<= distance between pairs in active set COMP. normal impules >= 0
So, LCP will calculate the normal impulse suchthat it will be enough prevent penetration.
Erwin Coumans wrote: 1) How does it deal with rotations?
I don't really understand your question? But if you include the pair that would penetrate by that rotation, then ST will help to stop that.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Post by Erwin Coumans »

1. It projects future position by making assumption that linear/angular velocities are constant over a time step.
Brian Mirtich doesn't use constant linear/angular velocity, he uses parabolic motion (including gravity) in his TOI calculations and timestepping. A lot of approaches assume constant linear/angular velocity. Still better then screwing motion, which Stephane Redon used in his analytical TOI calculation, before he switched to Interval Arithmetic based methods.
2. It doesn't guarantee progress.
Adding some small collision tolerance/allowed penetration guarantees progress.

The CCD/TOI + stepping safely to the next TOI, or using Timewarp, is described in chapter 5.4 and 5.6 in
http://www.cs.miami.edu/~harald/papers/hs-thesis.pdf
ngbinh wrote:
Erwin Coumans wrote: 1) How does it deal with rotations?
I don't really understand your question? But if you include the pair that would penetrate by that rotation, then ST will help to stop that.

If you include (fast) rotational motion then P4 might cause the penetration. I just wondered if you take that into account. With long thin objects this becomes more important.

Image

So, LCP will calculate the normal impulse suchthat it will be enough prevent penetration.
So you also throw the timestep 'deltatime' and the assumed motion into the LCP?

What kind of motion does your implementation of ST LCP assume/use?

If the loop is like:
0) calculate feature-pair distances
1) setup LCP that calculates impulses so the updated position will not be in penetration
2) apply impulses/update velocities (from LCP results)
3) update positions

Then the updated position at T1 is at the ' time of impact', effectively loosing time?
Post Reply