Blender Git Loki
Git Commits -> Revision 6e44e4b
Revision 6e44e4b by Joshua Leung (depsgraph_refactor) January 21, 2015, 11:03 (GMT) |
Depsgraph: WIP attempt to resolve some problems with IK chains This commit tried to fix the problems which occur when a bone that's part of an IK chain has a constraint to another bone in the same chain. Since all constraints are (or should still) handled before the IK solver runs, that ended up causing a deadlock, since the offending bone would rely on the "final" (done_node) transform of another bone in the same IK chain, which could only run after the IK solver runs - but that cannot run as it's waiting on this constrained bone. * Added a dedicated "BONE_READY" noop, which sits after the constraints op, before the done node, and before any link to an IK solver. This replaces all the calls to bone_final_transform() by having a dedicated node which can be queried for this purpose * Simplified the way that bone relationships get set up: The idea is that all bones in the same armature will use the "READY" nodes instead of "DONE" to avoid any lockups when dealing with IK. This way, we can do without all the common-root checks before doing parent links and so forth, as well as just setting out all the major relationships at the same time. (There is of course the risk that this breaks some old rigs (* see note below)) The result of all these efforts is that all the simple test cases and also the test file with the offending setup which inspired this fix all work now. However, it also seems to now be causing a range of weird regressions with production rigs (notably, strange new unstable popping in Koro and Victor Layout, as well as lag issues on some simpler IK leg rigs). |
Commit Details:
Full Hash: 6e44e4b4968ed5ab4472c769d2d9687941d326da
Parent Commit: da96f8a
Lines Changed: +59, -13