From 4e171975979039a22f57b852447811b07a48d43b Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 13 Mar 2019 16:57:27 +0100 Subject: 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 --- .../blender/depsgraph/intern/builder/deg_builder_relations_rig.cc | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc') 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( -- cgit v1.2.3