Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-03-13 18:57:27 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-03-13 19:26:17 +0300
commit4e171975979039a22f57b852447811b07a48d43b (patch)
treeb05061b4f6fd391a7b3df6a31acb103344e76ae9 /source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
parentf990a1a6cc477ebbe85b4df281afbcda7b9633a1 (diff)
Fix T62521: Fake dependency cycle with spline IK
The core was hooking up relation to a wrong operation, in an attempt to cause proper full update of the pose (since there is no intermediate state stored anywhere). This is now done as a part of flush_handle_component_node(), so can properly route more granular relation. This fixes the crash which was caused by an access of partially evaluated data by solving the fake cycle. However, if there is a real cycle involved the code will still not survive, but this is more generic issue (which also includes modifiers for meshes and curves). Reviewers: brecht Reviewed By: brecht Differential Revision: https://developer.blender.org/D4509
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc8
1 files changed, 1 insertions, 7 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
index e3a2f8d786a..9b266041cc1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
@@ -260,14 +260,8 @@ void DepsgraphRelationBuilder::build_splineik_pose(Object *object,
RELATION_FLAG_GODMODE);
/* Attach path dependency to solver. */
if (data->tar != NULL) {
- /* TODO(sergey): For until we'll store partial matricies in the
- * depsgraph, we create dependency between target object and pose eval
- * component. See IK pose for a bit more information. */
- /* TODO: the bigggest point here is that we need the curve PATH and not
- * just the general geometry. */
ComponentKey target_key(&data->tar->id, NodeType::GEOMETRY);
- ComponentKey pose_key(&object->id, NodeType::EVAL_POSE);
- add_relation(target_key, pose_key, "Curve.Path -> Spline IK");
+ add_relation(target_key, init_ik_key, "Curve.Path -> Spline IK");
}
pchan->flag |= POSE_DONE;
OperationKey final_transforms_key(