diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2020-11-05 18:00:16 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2020-11-12 18:20:48 +0300 |
commit | dad228a19cc4b2ae8436eeb927fb42b32d4e1824 (patch) | |
tree | ef4576d169d98e379c5473b98d14dfc6ab3b44ab /source/blender/depsgraph | |
parent | d0c1d93b7e7b453016ac83b3b1a57a220618a835 (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
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc | 5 |
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. */ |