- Description of the problem:
See T81704 --
Basically, if you have a Spline IK chain that is fit exactly to a curve, then change the Y-Scale Mode from "Fit Curve" to anything else, the curve will shrink. Repeatedly applying the pose as rest pose will *annihilate* your rig by shrinking the bones over and over again.
- Description of the proposed solution, and a motivation as to why this is the best solution:
I solve the problem by removing the evaluation's incorrect method of factoring in curve_scale and re-implementing it. Instead of comparing the bone chain's edit-mode length with the spline's total length, I compare it to the chain's length if it were fit to the curve. This means that if the user applies the pose with Fit To Curve and switches to Bone Original, the pose remains the same instead of getting shorter. Finally, I added some code to the Spline IK evaluation that finds the correct point by iterating until the error is below a threshold.
- List of alternative solutions, and a motivation as to why these are undesirable.
I would like to solve this problem with sphere intersection, but I don't know how.
- Limitations of the proposed solution.
This will, of course, change the behavior of existing rigs -- but seeing as the scaling caused by the old behavior rendered the feature unusable (at least for me), I don't know how many people this will affect. It's also kinda ugly and bloated, but it seems to perform well enough (700 duplicates of a spline IK chain with keyframes has a 24fps framerate in my test). Still, with a loop that may have many iterations and lots of lookups in the spline for points, it's conceivable that performance could be impacted.
- Mock-up of the proposed user interface and a description of how users are going to interact with the new feature.
This will not change the UI :)







