[Bf-blender-cvs] [4e171975979] master: Fix T62521: Fake dependency cycle with spline IK

Sergey Sharybin noreply at git.blender.org
Wed Mar 13 17:30:10 CET 2019


Commit: 4e171975979039a22f57b852447811b07a48d43b
Author: Sergey Sharybin
Date:   Wed Mar 13 16:57:27 2019 +0100
Branches: master
https://developer.blender.org/rB4e171975979039a22f57b852447811b07a48d43b

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

===================================================================

M	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(



More information about the Bf-blender-cvs mailing list