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
This commit is contained in:
Philipp Oeser 2020-11-05 16:00:16 +01:00
parent d0c1d93b7e
commit dad228a19c
Notes: blender-bot 2023-02-13 20:39:41 +01:00
Referenced by issue #82347, Problem duplicating after selecting from outliner, and lots of console error messages after deleting child bones
1 changed files with 5 additions and 0 deletions

View File

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