Page MenuHome

Fix T80437: Auto IK Double Generates IK constraints
ClosedPublic

Authored by Philipp Oeser (lichtwerk) on Sep 17 2020, 6:30 PM.

Details

Summary

Caused by rB9a7f5f1bb422.

If using Auto IK (or targetless IK and Auto IK together), two temporary
constraints were added.

  • from pose_grab_with_ik_add (even for targetless IK)
  • from add_pose_transdata (even for Auto IK)

Since both both do similar things, but cannot work in tandem (with
possibly different chainlengths for example), we have to decide which
type to prefer over the other (as in: do not create a constraint for the
other).
It seems better to ignore the 'Auto IK' option on bones that will
have targetless IK set up for them specificallly [e.g. defining special
chainlength]. This way you can still work with 'Auto IK' ON generally
[with interactive chainlength control], but also have specific bones that
need their own custom chainlength.

For now, the most straightforward fix is to

  • only add constraints for Auto IK from pose_grab_with_ik_add()
  • only add constraints for targetless IK from add_pose_transdata()

Note: this area has some potential for later refactoring:

  • move creation of all temporary constraints to a single place [preferably pose_grab_with_ik_add]
  • use only those temporary constraints in transform code [atm. we still flip CONSTRAINT_IK_AUTO around on the "original" -- unneccesarily, after rB9a7f5f1bb422 a dedicated temporary constraint is now always available]
  • clarify CONSTRAINT_IK_AUTO vs. CONSTRAINT_IK_TEMP

Diff Detail

Repository
rB Blender