[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