Page MenuHome

Pose mode: Show all transform manipulator axes, even locked ones
AbandonedPublic

Authored by Julian Eisel (Severin) on Mon, Oct 7, 3:41 PM.

Details

Summary

When disabling transform axes in the pose mode sidebar, the transform
manipulator would hide the matching axes. However, the sidebar always
acts in local space (so locks the local axes), whereas the manipulator
may show a different space.
It can be highly confusing to use the manipulators in global space now,
as the hidden axes do not match the actually locked ones.

For demonstration's sake:

  • Open this .blend
  • Note that all axes exept Y are locked
  • Drag the Y axis
  • Confusingly, nothing changes because local Y axis was locked, manipulator shows global

Note that this change was suggested to me by animators here in the
studio (Blender Animation Studios).
Also note that there's a weird behavior when all translate axes are
locked: dragging an axis rotates then. Turns out there is explict
transform code to enable rotation when translation is not possible.
We may want to disable that behavior for the transform manipulator.

While the same issue can be reproduced in other modes, it's less
confusing there as both the sidebar and the manipulator use global space
by default here.

Diff Detail

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

Event Timeline

Julian Eisel (Severin) edited the summary of this revision. (Show Details)Mon, Oct 7, 3:47 PM
Julian Eisel (Severin) edited the summary of this revision. (Show Details)Mon, Oct 7, 3:50 PM
This revision is now accepted and ready to land.Mon, Oct 7, 5:38 PM
Brecht Van Lommel (brecht) requested changes to this revision.Mon, Oct 7, 5:46 PM

This should only be done when there is a mismatch between the spaces.

This revision now requires changes to proceed.Mon, Oct 7, 5:46 PM

Suggestion was to just keep it simple and always show all axes, but agreed, only showing on space mismatch makes more sense.
We could do this in other modes too. Anything against that?

As a not directly but marginally related thing (in a way opposite in fact) - I wonder if is it possible to make the manipulator start rotation in the correct axis restricted mode if only one axis is not locked? Rotating things with locked axes without actually applying an axis restriction in the manipulator doesn't work that great, unless your view is actually aligned with the only available axis.

Julian Eisel (Severin) abandoned this revision.EditedTue, Oct 8, 5:30 PM

Created a new patch since the change is more general now, D6021.

@Alexander Gavrilov (angavrilov) like explained in the description, with all axes locked, the translate manipulator now triggers rotation for the axis clicked on. Although I can see where your suggestion may still be useful, but I'll leave this up for you (or anyone else) to implement ;) I'd prefer to see some more general solution though, where the transform manipulator can change between translate, rotate and scale based on the selected bones.