Notes about notation
- Excluded from Multi-Object Editing - Everything in (parentheses)
- Priority items (i.e. for Spring migration) - Everything in bold
Notes about approach (25/5)
Talking with the animators here in the studio, it seems that most of the time, animators don't actually want most tools to work with "full" multi-object posing behaviour. So, what we might do here instead is that by default, pose operators still work in the old (single active object) way, with just a few specific exceptions added on a case-by-case basis (as/when desired by animators). Examples here include mouse select tools and basic loc/rot/scale transform tools. Many other tools may be best left as single-object for now.
POSE_OT_paths_clearrB478446e3a45c5eff7aed238b92e5d3d7cf671c7a POSE_OT_paths_calculaterB478446e3a45c5eff7aed238b92e5d3d7cf671c7a POSE_OT_paths_updaterB478446e3a45c5eff7aed238b92e5d3d7cf671c7a POSE_OT_flip_names POSE_OT_autoside_namesrBc7bbcfe95444e730eacf655fd982f5091d5e2ff6 POSE_OT_rotation_mode_setrB3b9b6a80ba6311281bb90e2a2e63a8c34a0b575d ARMATURE_OT_armature_layersrB3a8b56ce24c9228a885d3c44f4c22d90be04ae4c POSE_OT_bone_layersrBbb7f4f5714430beda44403f0bd75c368e8f86a39 POSE_OT_hiderBc9d1082a2c17162ea6d23415e3560dabfc6e22e1 POSE_OT_revealrBc9d1082a2c17162ea6d23415e3560dabfc6e22e1 POSE_OT_quaternions_fliprB7560aabf71dd4c7687ff0110e722287d66358bbd
Note: With these ones, we made the decision to only allow supporting the "active object" as displayed in the UI (where these operators appear). As a result, multi-object editing doesn't actually function with these operators. But also, no further changes are required
POSE_OT_group_remove) POSE_OT_group_unassign POSE_OT_group_assign
POSE_OT_group_sort) POSE_OT_group_select POSE_OT_group_deselect
- Most operators here are fine, as they don't use the context iterators to loop over bones, and it doesn't make sense to apply Pose Libraries (defined for a single armature) across multiple selected armatures.
- The one exception here is the ~~POSELIB_OT_pose_add~~ operator, as it needs to use the Whole Character (selected) KeyingSet to determine what bones get added to the library. The one problem with this though is that this keyingset uses the context.selected_pose_bones iterator, which includes bones from multiple active armatures. We'll need a solution here to allow restricting keyingsets without also losing all filtering capabilities in the iterator (i.e. we'd lose the name-filtering used to determine what bones should/shouldn't get included). (done rBc462c43c1a05).
POSELIB_OT_action_sanitize POSELIB_OT_apply_pose POSELIB_OT_browse_interactive POSELIB_OT_new POSELIB_OT_pose_move POSELIB_OT_pose_remove POSELIB_OT_pose_rename POSELIB_OT_unlink
VIEW3D_OT_select_border VIEW3D_OT_select_circle POSE_OT_select_all POSE_OT_select_mirror POSE_OT_select_constraint_targetrB374a8b9da50bdc3c40cef9394065d5394bb91f33 POSE_OT_select_linked POSE_OT_select_hierarchyrBd95bb08f395ace3fdfed71058658b7acef458ded POSE_OT_select_groupedrBcaad2d7528bc38934a90bb30b417068b71076bcd
POSE_OT_visual_transform_applyrB4376bb64054cb8de0b71f85d4faa832d4ec736cd POSE_OT_armature_apply POSE_OT_copy- [To be ported by @Joshua Leung (aligorith)] (*1) POSE_OT_paste- [To be ported by @Joshua Leung (aligorith)] (*1) POSE_OT_transforms_clearrBe0478ae92fbefbc648bfb5a5f8370a53af1c6679 POSE_OT_loc_clear POSE_OT_rot_clear POSE_OT_scale_clear
(*1) Copy/Paste - These currently don't have any problems working with multi-objects (i..e you don't get wrong bones getting copied/pasted). The only problem is that you can only from and paste to whatever armature is active at the time the operator is invoked. (So, you can copy a pose from one armature and paste it into another without leaving pose mode, as long as both objects are in posemode). So, currently marking these as working.
NLA_OT_bakerBf10bc11061cf rB39ad5c3ef1ea (though undo doesn't seem to be working well). POSE_OT_breakdownrB3c61efcf206dcce904570baef1d5e209415d0ea9 POSE_OT_relaxrB3c61efcf206dcce904570baef1d5e209415d0ea9 POSE_OT_pushrB3c61efcf206dcce904570baef1d5e209415d0ea9 POSE_OT_propagaterB3c61efcf206dcce904570baef1d5e209415d0ea9
POSE_OT_ik_clearrBf3153f1c7f57c054ecc7d0f986c6afc1d70ffb7d POSE_OT_ik_addrB7baa8d2e8f07328fbb187e82f477e56950c25c46 POSE_OT_constraints_clearrB647218af07dab9d3abd9c3a058701ea36c87930d POSE_OT_constraints_copyrB418c16bd3b799a95f9dc4d458213c60fba42626c POSE_OT_constraint_add_with_targetsrB7baa8d2e8f07328fbb187e82f477e56950c25c46 POSE_OT_select_parentrBdcf1210c44cb1e46bf387f326c5ee9daa2a53004