From dad228a19cc4b2ae8436eeb927fb42b32d4e1824 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 5 Nov 2020 16:00:16 +0100 Subject: 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 --- source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc | 5 +++++ 1 file changed, 5 insertions(+) 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. */ -- cgit v1.2.3