MeltingPlastic wrote:So the stability/performance improvement can come from the fact that the vehicles joints are all local to the main body of the vehicle? This is what makes the math more robust?
If that's the case could that simplification be extended to generic joints? (perhaps the engine automatically picking a "root" body to build its new local coordinate from?)
there is a lot to unpack there. and I am always reluctant to give answerer to those questions but here we goe.
The answer is yes the stability come from the joint been solved in local space, but that's not an absolute fact. The reason the local space solution is more stable is because the system can factor the system matrix faster.
however this is only mathematically system that we call local space can be represented by acyclic graphs (that is each child node have one parent) and there are well known algorithm that can factor the system matrix in linear time.
If you have a reduce coordinate system solver that can factor the matrix every time then it does not makes any difference and the reduce coordinate system is better simply because is more general been able to deal with loops naturally.
it just happen that simple vehicles, simple organic skeletons and most articulated contractions can be represented by a acyclic graph. while general rigid body dynamics is always represented by full cyclic
graphs, Therefore solver that work on local space offer an advantage over solver that work on global space which have to be iterative.
The advantage is only up to a point, as you start adding kinematic loops, then you end up with formalizing an full linear system to solve the linear system, therefore if the system become complex them is not longer advantageous.
take for example a very simple car, you get the chassis and for tire.
this can be represented by a simple skeleton.
the moment the tire touch the ground, the each one form a kinematic loop because of you start at the floor as a child of a tire, then the floor can have more that one tire as parent.
if you the consider say the engine connection to the tire to transfer torque, now you get each tire with the chassis and the engine as parent, and so on.
as you can see it can get complex very quickly.
The good knew is that the complexity you can manage and make assumption without having to make changes to the general solver. and that is where the biggest advantage is.
I committed the skeleton of the library already, and it place a simple chassis, there is no visual , I will add that later.
If you, and anyone is interested, it will be good if you guys adopted early so that is no as hard to figure out when is all completed, and also I can get feed back and recommendation.
It just happen in the pass that I put lot of work, and when we get something working some one come with a request that required almost a full rewrite.