Fix T59622: dependency problems with Spline IK.
authorAlexander Gavrilov <angavrilov@gmail.com>
Sun, 14 Apr 2019 10:44:12 +0000 (13:44 +0300)
committerAlexander Gavrilov <angavrilov@gmail.com>
Sun, 14 Apr 2019 15:59:27 +0000 (18:59 +0300)
commit6a59e123649105a07316c87ac4dcc78a87fed532
treeab2eb7cdefd190ecbfc14b685afa7b4f932e8f57
parent3380fb364677ed4695be74272777fd676520d721
Fix T59622: dependency problems with Spline IK.

The bug is caused by problems in the dependency graph. Unfortunately,
fixing is not just a matter of fixing the graph, because correct
dependencies would cause a cycle here and in other reasonable use
cases. The real fix thus requires refactoring Spline IK to require
curve data only in the actual evaluation phase, and not in POSE_INIT_IK.

In addition, this separates the normal bone evaluation loop from
Spline IK computations for two reasons:

- That still needs to be done even if spline IK can't evaluate
  due to missing curve data.

- It should reduce issues with induced shearing, as Spline IK now
  controls how parent-child relations are handled in the chain, and
  can take care to only carry over rotation and location.
source/blender/blenkernel/intern/armature_update.c
source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc