Just in case you were concerned that it has got a bit quiet on the development front recently: I am in the middle of entirely rewriting the dynamic state propagation code. This was initially sparked by this issue, but has gotten a bit out of hand. Essentially, the problem was caused by some hacks in the ground impact model that I had introduced in order to keep impacts stable at higher time accelerations.
I've now decided that it's time to revise this strategy and instead write a proper dynamics model for ground impacts. This will allow much more realistic effects at real-time and low accelerations, but will need some consideration for high time accelerations (where the entire ground interaction may occupy only a fraction of a single frame. In order to accomodate this, I have now rewritten the time integration routines to allow subsampling, essentially splitting a single video frame into multiple state updates. Since dynamic updates are much faster than frame rendering, a fair number of subsamples can be fitted into a video frame without too much performance impact.
Additionally, ground impact forces are no longer considered constant over an update frame. High-order integrators (RK and SY) which evaluate the states at intermediate times, will now receive interpolated ground impact forces.
One result of this new model is that linear and angular states must now always be updated in sync, so it will no longer be possible to select different integrators for the linear and angular states (since the evaluation of intermediate states requires information about position, velocity, orientation and angular velocity).
It's going to be a while before the new model is stable enough to justify a new beta (I also want to give aerodynamic forces a similar treatment). Also, I may need to fall back to the old behaviour at very large time accelerations, where even subsampling won't be sufficient for impact modelling. Some changes to the API may also be required, with the usual concerns about backward compatibility.
Anyway, in the meantime here is a little demo to whet your appetite:
I've now decided that it's time to revise this strategy and instead write a proper dynamics model for ground impacts. This will allow much more realistic effects at real-time and low accelerations, but will need some consideration for high time accelerations (where the entire ground interaction may occupy only a fraction of a single frame. In order to accomodate this, I have now rewritten the time integration routines to allow subsampling, essentially splitting a single video frame into multiple state updates. Since dynamic updates are much faster than frame rendering, a fair number of subsamples can be fitted into a video frame without too much performance impact.
Additionally, ground impact forces are no longer considered constant over an update frame. High-order integrators (RK and SY) which evaluate the states at intermediate times, will now receive interpolated ground impact forces.
One result of this new model is that linear and angular states must now always be updated in sync, so it will no longer be possible to select different integrators for the linear and angular states (since the evaluation of intermediate states requires information about position, velocity, orientation and angular velocity).
It's going to be a while before the new model is stable enough to justify a new beta (I also want to give aerodynamic forces a similar treatment). Also, I may need to fall back to the old behaviour at very large time accelerations, where even subsampling won't be sufficient for impact modelling. Some changes to the API may also be required, with the usual concerns about backward compatibility.
Anyway, in the meantime here is a little demo to whet your appetite: