MeltingPlastic wrote:I did have the solver set to zero.
ok that's the problem, bu setting to 1 imply that the joint can be acyclic, so the engine will so a lot of work try to find a forest that accommodate it, you should set it to 2. or leave the default it if you are using the joints in the dcustomjoint library.
MeltingPlastic wrote:Question: Consider a closed loop formed with hinge constraints - Do all joints need to be iterative? or Just one?
I would be cool If I could automate that process based on the internal graph based on the conditions you describe.
thats actually more unnecessary and confusing interface to exposed.
notice that a joints with solve mode set to 0 or 1 are also solved exactly, only joints with solver mode 2 are send uncoditially to the iterative solver.
in the example you provide of a ring of hinged this is how is works.
the body list is sorted by mass, since all bodies have the same value anyone will be the top.
them the engine iterate over the list selecting the next body and forming the forest of the body.
This is a texbook algorithm that will give to the maximal acyclic graph that can be possible made.
http://mathworld.wolfram.com/Forest.htmland I will be more accurate that a person making the selection.
them the engine form a large mass matrix that add al the joint that corm loops, and these are solve wing an exact solve, therefore in the rig example all joint are solve exactly the difference is that all but the n Joint forming the ring are solver in linear time O(k n).
whet n is the number of bodies and k is a high value constant.
Oh Wait - If I didn't set the solver mode explicitly anywhere the engine figures it all out even after changing configurations of contraptions? Maybe I should just get rid of setting solver modes from my API!?
the default is solver mode 0, so not setting it implies an acyclic joint. this is how the end user can hint the construction of a contraction, you can hint the engine that a joint is not very important by setting to 1, or that a joint is not important at all by making 2.
making is 0 will be always solve exactly whether is a loop or not.
and it is up to the use to decide if a joint will be like that or not.
In general a use can determine the by inspection.