A problem that we didn't test up till this point was that if our quadrupeds were rotating on their global control, at times the pole vectors of the legs seemed to drift away from their targets at the knee. This could previously be compensated by animating the kneeAim but that was not an accurate portrayal of where the knee was pointing.
After a bit of research we found that Springsolvers inherit a hidden twist from their parents. Before our solution was to directly pump the Y Rotation of the Global Control into the Twist control of the Spring IK. This prevented weird twisting while the character was perpendicular to the ground, but as soon as you start rotating the global control in other ways, like forward and around, innappropriate twist would once again be introduced.
To fix this problem, the spring solver chain must be outside of the local heirarchy and point constrained to the place it needs to be. Keeping it in world space avoids a double transform, but behaves exactly the same. The solver doesn't inherit rotation from what is above it.
This posed another problem with our front legs. The spring solver chain starts in the middle of the leg. I separated the top joint from the rest of the chain. I put the SS chain in world space. I placed a locator where the top of the SS chain was. I made the locator a child of the original parent joint. This has seemed to fix all the problems, and I will report any side effects this has.
No comments:
Post a Comment