Page MenuHome

Fix T75810: Child bone frozen when both Auto IK and X-Axis mirror are used
AbandonedPublic

Authored by Philipp Oeser (lichtwerk) on Apr 29 2020, 10:07 AM.

Details

Summary

Caused by rBa6a9a12e8f32: Fix T75142: No autokeying with pose mode X-Mirror

Other relevant commits:
rBb8ca806b7798e2f8dd6effca8f0d081b3cd8c23f
rBde530a95dc7b482dc22c933b9b8b2a98c79b5663

The issue is caused by some leftover BONE_TRANSFORM_MIRROR flags on a
bone from previous runs (file in the report had the flag still on
forearm.R).
With these false leftover flags still set, pose_grab_with_ik() cannot
work correctly.
Culprit commit above removed the early clearing of this flag on all
bones, this should be restored [and happens in
count_set_pose_transflags()].
This should only be done in the beginning of the transform process [when
called from createTransPose()] -- see below.

In the process of transforming, BONE_TRANSFORM_MIRROR is set/cleared at
other places as well:

  • recalcData_objects / pose_transform_mirror_update (clears flags on

all bones again)

  • recalcData_objects / pose_transform_mirror_update (set flags on

relevant bones -- see comment /* Set flag to let autokeyframe know to
keyframe the mirrred bone. */)

  • special_aftertrans_update via count_set_pose_transflags()

So as we can see count_set_pose_transflags() is called again very late
in the process -- in special_aftertrans_update -- and this time we
should not clear the flag on the bones.
Otherwise autokeyframe_pose() will not pick them up for keyframing
correctly.

Revert "Fix T75810: Child bone frozen when both Auto IK and X-Axis mirror are used"

This reverts commit fa83bbe5b5899a76c77b991d0756d986b5440471.

Fix T75810: Child bone frozen when both Auto IK and X-Axis mirror are used

Caused by rBa6a9a12e8f32: Fix T75142: No autokeying with pose mode X-Mirror

Other relevant commits:
rBb8ca806b7798e2f8dd6effca8f0d081b3cd8c23f
rBde530a95dc7b482dc22c933b9b8b2a98c79b5663

The issue is caused by some leftover BONE_TRANSFORM_MIRROR flags on a
bone from previous runs (file in the report had the flag still on
forearm.R).
With these false leftover flags still set, pose_grab_with_ik() cannot
work correctly.
Culprit commit above removed the early clearing of this flag on all
bones, this should be restored [this happened in
count_set_pose_transflags()].
This should only be done in the beginning of the transform process, so
now still clear the flags early in 'createTransPose()' [but dont restore
this in 'count_set_pose_transflags()' -- this will be called from
special_aftertrans_update again, so placing the clearance here only
complicates things (autokeyframe_pose() still needs to work as well)...]

Diff Detail

Repository
rB Blender
Branch
master
Build Status
Buildable 7784
Build 7784: arc lint + arc unit

Event Timeline

Philipp Oeser (lichtwerk) requested review of this revision.Apr 29 2020, 10:07 AM
Philipp Oeser (lichtwerk) created this revision.

Not sure what happened here, please ignore... (right thing is D7527...)