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:
authorPhilipp Oeser <info@graphics-engineer.com>2020-11-05 18:00:16 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2020-11-12 18:20:48 +0300
commitdad228a19cc4b2ae8436eeb927fb42b32d4e1824 (patch)
treeef4576d169d98e379c5473b98d14dfc6ab3b44ab
parentd0c1d93b7e7b453016ac83b3b1a57a220618a835 (diff)
Fix asserts when two (or more) SplineIK constraints have the same root
Only a single DEG operation node `POSE_SPLINE_IK_SOLVER` should be added in this case [ see `build_splineik_pose`, same is already done for overlapping IK in `build_ik_pose`] ref T82347. Reviewers: sybren Maniphest Tasks: T82347 Differential Revision: https://developer.blender.org/D9471
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index 62282ac4d37..6143b4472d7 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@ -119,6 +119,11 @@ void DepsgraphNodeBuilder::build_splineik_pose(Object *object,
/* Find the chain's root. */
bPoseChannel *rootchan = BKE_armature_splineik_solver_find_root(pchan, data);
+ if (has_operation_node(
+ &object->id, NodeType::EVAL_POSE, rootchan->name, OperationCode::POSE_SPLINE_IK_SOLVER)) {
+ return;
+ }
+
/* Operation node for evaluating/running Spline IK Solver.
* Store the "root bone" of this chain in the solver, so it knows where to
* start. */