I havn’t really been informing of JOODE updates lately, as really I wanted to wait until something really good happened.
Currently we now have
2D support, using Phys2Ds Rectangle and Colliders colliders (although there are some implmentation issues , the collision point is always returned as a point on an edge of a geom, which means the collision is exactly on the edge of one geom, but somewhere inside the volume of the other. This causes geoms to get stuck in each other or no collision to be flagged if a geom completely fits inside another, still for slowish stepping this is all ok)
Trimesh trimesh collider. currently being optimized for speed (this is implemented by Art Pope)
Lots of new stepping functions. An RK4 stepper which works with the existing constraint based solver. However, the accuracy gained is rather pointless becuase the rest of the system is quite innacurate. These are inherited problems from ODE. For example, spinning a body WITH NO JOINTS, will not conserve angular momentum.
However, I have addressed this with new body stepping functions that use RK4 implementations to alter just the body variables. This provides accurate individual body stepping. However this is not enough to solve all the problems relating to the constraint based joint implementations. I am working on that, in the mean time, if you just want bodies that fly about and not complicated joint structures there are two new world stepping functions to help you.
SimpleStep uses an RK4 implementation to update all the bodies in the world at the same time. Fast compared to solving LCP constraints.
AccurateSimpleStep uses the same method as above, but uses an adaptive stepsize to ensure accuracy meets a user specified tolerance. Probably not something the gamers are really interested in but I need it It might be useful though, becuase it does tend to ensure the simulation remains stable.
The two new step methods, although using RK4, I have found to be pretty damn quick even with adaptive stepsizes. One of the reasons I think this is, is becuase the step functions have been built from the ground up with zero garbage in mind so they really do perform well.
In order to utalize the RK4 implementation some new Force features have been added. BodyForce and WorldForce allow forces to be recalculated on a per sub step basis. This means you can implement things like really accurate springs etc. I have provided a sample Spring and Body damping implmentations.
Oh yes also body state variables have changed in nature. Instead of holding a fixed angular velocity, angular velocity (which is not a conserved quantity) is derived from angular momentum (a conserved quantity). Same applies to linear velocity. Its a better way of doing it.
Finally, I am implementing a new type of joint called a JointConfigurable. This should kinda work like the novodex API in that it is a generaly purpose joint that can basically replace all the other types of joints. Its not fully finished yet and I think I need to do a overhaul of the constraint system anyway.
My first next move though is to create a joint configurable that works by inducing spring like forces. This is not as good as a constraint based implementation, but at least I can make it accurate and ensure all momentum constraints etc. are satisfied. At the moment constraint based joints are really prone to increasing the amount of overall energy in the system resulting in horrible looking simulations (not sure if this is a bug or it can’t be helped by nature of constraint implementation).
I am not personally working on any collider stuff becuase it is not in my immediate needs. There are issues with the colliders so volunters please!