I was working with the chain_IK_spline_variable_FK_01 component and found that the final joint output was giving much poorer results than an ordinary spline IK solver. I then tested all the other spline components (chain_FK_spline, chain_spline_variable…) and found they were generating the exact same behavior.

When binding joints to a spline IK solver, each joint always points along the path to the next joint so that each joint is only translated along its X axis. When using the mGear solution which attaches joints to a motionPath, you get the joints oriented at various tangents of a spline. Since the tangent does not point directly toward the next joint, you get translation in the Y and Z axes of each joint. The result is that the transforms of each joint do not blend nicely into one another like they do with a standard spline IK. It’s possible to get a smooth looking output by smoothing the skin weights until they’re all blurred together, but my current task (custom wing component) requires more rigid weighting between the joints.

Is there a solution to this? I was considering swapping my component to use a standard spline IK solver instead.