[Bf-blender-cvs] [dad228a19cc] blender-v2.91-release: Fix asserts when two (or more) SplineIK constraints have the same root

Philipp Oeser noreply at git.blender.org
Thu Nov 12 16:23:25 CET 2020


Commit: dad228a19cc4b2ae8436eeb927fb42b32d4e1824
Author: Philipp Oeser
Date:   Thu Nov 5 16:00:16 2020 +0100
Branches: blender-v2.91-release
https://developer.blender.org/rBdad228a19cc4b2ae8436eeb927fb42b32d4e1824

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

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

M	source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc

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

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. */



More information about the Bf-blender-cvs mailing list